AEAT MCP Server
The AEAT MCP Server provides AI assistants with access to verified, official Spanish tax data from the AEAT and BOE through 10 specialized tools:
VAT (IVA) Rates – Retrieve Spanish VAT rates (general 21%, reduced 10%, super-reduced 4%), equivalence surcharges, IGIC (Canary Islands), and IPSI (Ceuta & Melilla) by fiscal year.
IRPF Income Tax Brackets – Look up state-level personal income tax brackets for general income (work/business) and savings income (capital gains/dividends) for fiscal years 2024–2026.
Personal & Family Tax Minimums – Access tax-free minimums for taxpayers, descendants, ascendants, and disability allowances.
Economic Indicators – Get key reference values such as IPREM, SMI (minimum wage), legal interest rate, and late payment interest rate for a given year.
Tax ID Validation – Validate Spanish NIF, NIE, and CIF identifiers including control digit verification.
Fiscal Calendar – Consult AEAT filing deadlines filterable by year, quarter, or specific tax form (modelo).
Tax Form Information – Retrieve details on 19 Spanish tax forms (e.g., Modelo 100, 303, 720), including name, periodicity, and filing requirements.
Tax Rules Search – Full-text search across the complete AEAT Manual Práctico de Renta 2025, covering work income, rental income, investments, capital gains, deductions, exemptions, crypto, pensions, and more.
Modelo 100 Casillas Search – Look up specific form fields by number or keyword, including their definition, section, and legal article reference.
CCAA Regional Deductions – Access ~350 tax deductions across all 17 autonomous communities plus Ceuta and Melilla, with amounts, limits, income requirements, and legal sources.
All data comes exclusively from official sources (AEAT, BOE, regional bulletins) with exact legal references. Compatible with Claude Desktop, Claude Code, Cursor, VS Code (Copilot), Windsurf, and ChatGPT via MCP Bridge.
Provides official Spanish tax rules and regulatory guidance from the AEAT regarding income earned from tourist rentals on platforms like Airbnb, including information on deductible expenses and reporting obligations.
Provides detailed information on the Spanish fiscal treatment of cryptocurrencies, covering capital gains from Bitcoin trading, staking, mining, and mandatory reporting requirements such as Modelo 721.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AEAT MCP Server¿Qué deducciones por alquiler hay en Madrid para menores de 35 años?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AEAT MCP Server
Servidor MCP con datos fiscales españoles para asistentes de IA. Toda la información procede exclusivamente de fuentes oficiales (AEAT, BOE).
Conecta este servidor a Claude, ChatGPT, Copilot, Cursor o cualquier agente compatible con MCP y pregúntale sobre la declaración de la renta, deducciones, plazos, IVA, criptomonedas y más.
Aviso legal: Esta herramienta proporciona datos meramente informativos y orientativos. No constituye asesoramiento fiscal. Consulte siempre con un profesional cualificado o verifique en la AEAT.
Si este proyecto te resulta útil, dale una estrella en GitHub. Ayuda a que más gente lo encuentre.
Índice
Related MCP server: Dichiarino
Qué es MCP
Model Context Protocol (MCP) es un estándar abierto que permite a los asistentes de IA (Claude, ChatGPT, Copilot, Cursor...) conectarse a fuentes de datos externas. Este servidor MCP da acceso a datos fiscales españoles oficiales, de forma que tu asistente puede responder preguntas sobre impuestos con información verificada y actualizada.
Instalación
Requisito
Node.js 18 o superior instalado
No necesitas clonar ni compilar nada. npx descarga y ejecuta el servidor automáticamente.
Claude Desktop
Abre Claude Desktop
Ve a Claude (menú superior) > Settings > Developer > Edit Config
Se abrirá un archivo JSON. Añade
"mcpServers"para que quede así:
{
"mcpServers": {
"aeat": {
"command": "npx",
"args": ["-y", "aeat-mcp"]
}
}
}Si el archivo ya tenía contenido (por ejemplo "preferences"), añade "mcpServers" al mismo nivel, separado por coma:
{
"preferences": {
"menuBarEnabled": false
},
"mcpServers": {
"aeat": {
"command": "npx",
"args": ["-y", "aeat-mcp"]
}
}
}Guarda el archivo y reinicia Claude Desktop (cierra y abre la app)
En la ventana de chat verás un icono de herramientas (martillo) — al pulsarlo deberían aparecer las 10 herramientas del servidor AEAT
Claude Code
claude mcp add aeat-mcp -- npx -y aeat-mcpCursor
Ve a Settings (Cmd+,) > busca MCP
Añade un servidor con comando
npxy argumentos-y aeat-mcp
O añade a .cursor/mcp.json:
{
"mcpServers": {
"aeat": {
"command": "npx",
"args": ["-y", "aeat-mcp"]
}
}
}VS Code (Copilot)
Añade a .vscode/mcp.json:
{
"servers": {
"aeat": {
"command": "npx",
"args": ["-y", "aeat-mcp"]
}
}
}Windsurf
Ve a Settings > MCP Servers > Add Server
Comando:
npx, argumentos:-y aeat-mcp
ChatGPT y otros asistentes
ChatGPT no soporta MCP de forma nativa por ahora. Alternativa:
Usa MCP Bridge para conectar servidores MCP con ChatGPT
Ejemplos de uso
Pregúntale a tu asistente de IA:
Obligación de declarar
«¿Estoy obligado a declarar si gano 18.000 EUR con dos pagadores?»
Rendimientos del trabajo
«Mi indemnización por despido de 45.000 EUR, ¿está exenta?»
«Mi empresa me paga el coche, ¿cómo tributa la retribución en especie?»
IRPF y deducciones
«¿Cuánto pago de IRPF en Madrid con 50.000 EUR brutos?»
«¿Qué deducciones autonómicas hay en Baleares?»
«¿Cuánto es la deducción por maternidad?»
«¿Es mejor declarar conjunta o individual si mi pareja no trabaja?»
Inversiones
«¿Cómo tributan los dividendos de acciones francesas?»
«He vendido bitcoins con ganancias, ¿cómo lo declaro?»
«He traspasado un fondo de inversión a otro, ¿tributa?»
Alquileres
«Tengo un piso alquilado, ¿qué gastos me puedo deducir?»
«Alquilo mi piso en Airbnb, ¿cómo tributa?»
Autónomos
«¿Qué gastos se puede deducir un autónomo?»
«¿Cuándo es el plazo para el Modelo 303?»
Retenciones
«¿Por qué mi empresa me retiene un 24% de IRPF?»
«Soy profesional autónomo nuevo, ¿qué retención me aplican?»
Patrimonio
«¿Tengo que declarar el Impuesto sobre el Patrimonio?»
«¿Cómo funciona el Impuesto de Solidaridad de Grandes Fortunas?»
Otros
«¿Cómo funciona el rescate de un plan de pensiones?»
«¿Es válido este NIF: 12345678Z?»
«He presentado mal la declaración, ¿cómo la corrijo?»
Qué incluye
10 herramientas
Herramienta | Descripción |
| Tipos de IVA (21%, 10%, 4%), recargos de equivalencia, IGIC (Canarias) e IPSI (Ceuta y Melilla) |
| Tramos del IRPF — escala estatal general y del ahorro |
| Mínimos personales y familiares (contribuyente, descendientes, ascendientes, discapacidad) |
| Indicadores económicos: IPREM, SMI, tipo de interés legal del dinero |
| Plazos de la AEAT por año, trimestre o modelo. Indica el próximo vencimiento |
| Información de 19 modelos fiscales (100, 303, 720...) — nombre, periodicidad, quién declara |
| Valida NIF, NIE y CIF (verificación del dígito de control) |
| Busca en todo el Manual de la Renta — rendimientos, deducciones, exenciones, ganancias |
| Busca casillas del Modelo 100 por número o palabra clave |
| Deducciones autonómicas por comunidad (17 CCAA + Ceuta y Melilla, unas 350 deducciones) |
Manual de la Renta 2025 completo
Todo el contenido del Manual Práctico de Renta 2025 de la AEAT, estructurado como datos consultables:
Capítulo | Contenido |
Obligación de declarar | Umbrales del art. 96 LIRPF (22.000 / 15.876 EUR), casos obligatorios, regla transitoria |
Rentas exentas | 30 exenciones del art. 7 LIRPF — despido (180.000), maternidad, becas, discapacidad, trabajo en el extranjero (60.100), loterías (40.000) |
Rendimientos del trabajo | Sueldos, retribuciones en especie, dietas exentas, gastos deducibles, reducciones |
Capital inmobiliario | Alquileres: 10 categorías de gastos, reducciones del 50 al 90%, imputación de rentas |
Capital mobiliario | Dividendos, intereses, seguros, rentas vitalicias, PIAS, SIALP, régimen transitorio |
Actividades económicas | Autónomos: estimación directa normal y simplificada, 14 categorías de gastos, amortización, RETA, pagos fraccionados |
Ganancias patrimoniales | 8 tipos, método FIFO, traspasos de fondos (exentos), 10 exenciones, norma anti-abuso, compensación de pérdidas |
Deducciones estatales | 16 deducciones: maternidad, familia numerosa, donativos, vehículo eléctrico, eficiencia energética, Ceuta y Melilla |
Deducciones autonómicas | Unas 350 deducciones en las 17 CCAA + Ceuta y Melilla |
Tramos autonómicos del IRPF | Escalas autonómicas de las 15 CCAA de régimen común + Ceuta y Melilla |
Doble imposición internacional | Art. 80 LIRPF, 92 países con tipos de convenio, proceso de recuperación, ejemplo paso a paso |
Criptomonedas | Compraventa, permutas, staking, minería, FIFO, casillas 1802-1806, Modelo 721 |
Tributación conjunta | 2 modalidades de unidad familiar, reducciones de 3.400 / 2.150 EUR, cuándo conviene |
Alquiler turístico | Sin reducción del 50-90%, gastos proporcionales, imputación de días vacíos, IVA, DAC7 |
Planes de pensiones | Rescate: 3 formas, reducción del 40% para aportaciones anteriores a 2007, límites |
Pensión compensatoria | Reducción para el pagador (art. 55), anualidades por alimentos a hijos (art. 64, escala separada) |
Retenciones | Escala de retención (6 tramos, 19%-47%), mínimos por situación familiar, tipos fijos, exclusiones, regularización, Modelo 145 |
Procedimiento de corrección | Autoliquidación rectificativa (Ley 13/2023) y complementaria, recargos, pago en dos plazos, prescripción |
Patrimonio y Grandes Fortunas | Impuesto sobre el Patrimonio (Ley 19/1991): tarifa, exenciones, CCAA. ITSGF (Modelo 718): tarifa, umbrales |
Casillas del Modelo 100 | Más de 50 casillas mapeadas con su artículo de la LIRPF |
Datos de referencia
Dominio | Años | Fuente oficial |
Tipos de IVA, recargos, IGIC, IPSI | 2025 | Ley 37/1992, RDL 4/2024 |
Tramos IRPF (estatal + 15 CCAA) | 2025 | Ley 35/2006, Ley 7/2024, legislación autonómica |
Mínimos personales y familiares | 2025 | Ley 35/2006, arts. 57-61 |
Indicadores (IPREM, SMI, tipo legal) | 2025-2026 | Ley 31/2022, RD 87/2025, RD 126/2026 |
Calendario fiscal | 2026 | AEAT — Calendario del Contribuyente 2026 |
Catálogo de modelos | 19 modelos | AEAT — sede electrónica |
Convenios de doble imposición | 92 países | AEAT — Manual de Tributación de No Residentes |
Integridad de los datos
Cada dato incluye un campo source con la referencia exacta a la ley, artículo y referencia del BOE.
Fuentes prohibidas: blogs, consultorías, medios de comunicación o cualquier fuente no oficial.
Solo fuentes oficiales:
AEAT (Agencia Tributaria)
BOE (Boletín Oficial del Estado)
Boletines oficiales autonómicos (BOJA, BOCM, DOGC, etc.)
En números
Herramientas | 10 |
Archivos de datos | 28 |
Líneas de datos fiscales | 14.933 |
Tests automatizados | 52 |
Capítulos del manual | 18 |
Deducciones autonómicas | ~350 |
Países con convenio de doble imposición | 92 |
Tipos de rentas exentas | 30 |
Modelos fiscales catalogados | 19 |
Plazos del calendario fiscal | 53 |
Desarrollo
git clone https://github.com/iMark21/aeat-mcp.git
cd aeat-mcp
npm install
npm run build
npm testLicencia
MIT — (c) iMark Apps
Available Tools
10 toolsget_ccaa_deductionsA
Returns all tax deductions available in a specific Spanish autonomous community (CCAA). Covers all 17 CCAA + Ceuta + Melilla. Each deduction includes amount/percentage, limits, income requirements, and legal source. Use common names: 'baleares', 'madrid', 'cataluna', 'valencia', etc. Source: AEAT Manual Practico Renta 2025, Parte 2 — Deducciones Autonomicas.
| Name | Required | Description | Default |
|---|---|---|---|
| ccaa | Yes | Autonomous community name (e.g., 'baleares', 'madrid', 'cataluna', 'valencia', 'andalucia') | |
| query | No | Optional keyword to filter deductions (e.g., 'alquiler', 'hijo', 'vivienda', 'donacion') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what the tool returns (deductions with specific fields) and mentions the data source (AEAT Manual Practico Renta 2025), which adds useful context. However, it doesn't disclose potential behavioral traits like rate limits, error conditions, or response format details that would be helpful for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in three sentences: purpose statement, scope/details, and usage/source information. Every sentence adds value with no wasted words, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only data retrieval tool with 2 parameters and no output schema, the description provides good context about what data is returned and its source. However, without annotations or output schema, it could benefit from more detail about response structure or potential limitations to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds marginal value by providing example CCAA names and mentioning the optional query parameter can filter by keywords like 'alquiler' or 'hijo', but doesn't significantly enhance the parameter understanding beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Returns') and resource ('all tax deductions available in a specific Spanish autonomous community'), specifying the scope (17 CCAA + Ceuta + Melilla) and content details (amount/percentage, limits, income requirements, legal source). It distinguishes from siblings by focusing on autonomous community deductions rather than calendars, brackets, or other tax data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to get deductions for a specific CCAA) and includes usage guidance ('Use common names: ...'). However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools, though the distinct purpose implies differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fiscal_calendarA
Returns Spanish AEAT fiscal calendar deadlines for a given year. Filter by quarter (1-4) to see only that quarter's deadlines. Filter by modelo (e.g., '303', '100') to see deadlines for a specific tax form. Each deadline includes start/end dates, description, and who must file. Source: AEAT Calendario del Contribuyente.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Year (2024-2026) | |
| quarter | No | Filter by quarter (1=Jan-Mar, 2=Apr-Jun, 3=Jul-Sep, 4=Oct-Dec) | |
| modelo | No | Filter by tax form number (e.g., '303', '100', '720') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the return content (deadlines with start/end dates, description, and filer info) and data source, which adds useful context. However, it lacks details on permissions, rate limits, or error handling, leaving some behavioral aspects unclear for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by filtering options and return details, all in three efficient sentences. Each sentence adds value without redundancy, making it appropriately sized and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, no annotations, and no output schema, the description is fairly complete—it explains what the tool does, filtering options, and return content. However, it could improve by detailing the output structure more explicitly or mentioning any limitations, such as year range constraints already in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds marginal value by mentioning filtering by quarter and tax form, but it does not provide additional semantic details beyond what the schema specifies, such as examples of other tax forms or implications of filtering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Returns'), resource ('Spanish AEAT fiscal calendar deadlines'), and scope ('for a given year'). It distinguishes itself from sibling tools by focusing on calendar deadlines rather than tax rates, brackets, or other tax-related data, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool—to retrieve fiscal calendar deadlines—and mentions filtering options by quarter or tax form. However, it does not explicitly state when not to use it or name specific alternatives among the sibling tools, such as for non-calendar tax information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indicatorsA
Returns key Spanish economic indicators for a given year: IPREM (public income reference), SMI (minimum wage), legal interest rate, and late payment interest rate. These are used as thresholds in tax calculations, subsidies, and legal proceedings. Source: PGE (national budget) + BOE.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Year (2024-2026) | |
| indicator | No | Filter by specific indicator (optional, returns all if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about the source ('PGE + BOE') and the tool's read-only nature is implied by 'Returns', but it doesn't disclose potential limitations like data availability, rate limits, error conditions, or response format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in three sentences: first states the core function, second explains usage context, third cites sources. Every sentence adds value with zero wasted words, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 2 parameters and 100% schema coverage but no output schema, the description is adequate but has gaps. It explains purpose and context well, but without annotations or output schema, it should ideally describe the return format (e.g., structured data with values) to be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds marginal value by implying the 'year' parameter filters the data and that 'indicator' is optional, but doesn't provide additional syntax or format details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Returns') and resources ('key Spanish economic indicators'), listing the exact indicators (IPREM, SMI, legal interest rate, late payment interest rate). It distinguishes from sibling tools by focusing on economic thresholds rather than tax brackets, deductions, or other fiscal data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('used as thresholds in tax calculations, subsidies, and legal proceedings'), but does not explicitly state when not to use it or name specific alternatives among the sibling tools. The context is helpful but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_irpf_bracketsA
Returns Spanish IRPF (income tax) brackets for a given fiscal year. type='general' returns the base general (work/business income) brackets. type='savings' returns the base del ahorro (capital gains/dividends) brackets. These are STATE-level rates only (roughly half of the total rate). The other half comes from the CCAA regional scale. Source: Ley 35/2006, arts. 63 and 66.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Fiscal year (2024-2026) | |
| type | No | Bracket type: 'general' (work income) or 'savings' (capital gains) | general |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool returns brackets (read-only behavior) and specifies the source (Ley 35/2006), adding useful context. However, it doesn't mention potential limitations like rate changes, data freshness, or error handling, leaving some behavioral aspects unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by specific details on types and scope, and ends with the source. Every sentence adds value without redundancy, making it appropriately sized and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is fairly complete. It covers purpose, parameter semantics, and scope, but lacks details on output format (e.g., structure of returned brackets) and potential errors, which could be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds marginal value by explaining the semantics of 'general' and 'savings' types and noting the state-level scope, but doesn't provide additional syntax or format details beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Returns' and the resource 'Spanish IRPF brackets', specifying it's for a given fiscal year. It distinguishes between 'general' and 'savings' types, making the purpose specific and differentiated from siblings like get_ccaa_deductions or get_vat_rates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use each type ('general' for work/business income, 'savings' for capital gains/dividends) and notes these are STATE-level rates only, implying alternatives might be needed for regional scales. However, it doesn't explicitly name when-not-to-use cases or direct alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_personal_minimumsA
Returns the personal and family tax-free minimums (minimo personal y familiar) for Spanish IRPF. Includes taxpayer minimum, descendants, ascendants, and disability allowances. These reduce the taxable base. Source: Ley 35/2006, arts. 57-61.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Fiscal year (2024-2026) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the tool's behavior as a read-only operation ('Returns') and specifies the data source (Ley 35/2006), but doesn't mention potential limitations like rate limits, authentication needs, or error conditions. It adequately describes what the tool does without contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two sentences: the first states the purpose and scope, the second adds context about tax reduction and legal source. Every phrase contributes meaning without redundancy, making it appropriately concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is reasonably complete. It explains what the tool returns and its tax relevance, though it could benefit from mentioning output format or example usage. The absence of an output schema means the description doesn't need to cover return values in detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the single parameter 'year'. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score of 3 for adequate coverage without extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Returns') and resources ('personal and family tax-free minimums for Spanish IRPF'), including detailed scope ('taxpayer minimum, descendants, ascendants, and disability allowances'). It distinguishes from sibling tools by focusing on minimums rather than deductions, brackets, or other tax elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'reduce the taxable base' and citing legal sources, suggesting it's for tax calculation scenarios. However, it lacks explicit guidance on when to use this tool versus alternatives like get_irpf_brackets or get_ccaa_deductions, and doesn't specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tax_form_infoA
Returns information about a specific Spanish AEAT tax form (modelo). Provide the form number (e.g., '100' for IRPF, '303' for IVA, '720' for foreign assets). Returns: name, periodicity, who must file, description, filing period. Source: AEAT sede electronica.
| Name | Required | Description | Default |
|---|---|---|---|
| modelo | Yes | Tax form number (e.g., '100', '303', '720') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses this is a read operation ('Returns information') and specifies the return fields (name, periodicity, etc.) and data source. However, it doesn't mention error handling, rate limits, or authentication needs, which are gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two sentences: one stating the purpose with examples, and one detailing the return values and source. Every word contributes to understanding, with no wasted text or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description is mostly complete. It covers purpose, parameter context, return fields, and data source. The main gap is lack of error handling or behavioral details, but given the tool's simplicity, it's reasonably comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the single parameter. The description adds marginal value by providing examples ('100' for IRPF, '303' for IVA) that clarify the parameter's meaning, but doesn't go beyond what the schema provides in terms of syntax or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('Returns information') and resource ('specific Spanish AEAT tax form'). It distinguishes from siblings by focusing on form metadata rather than deductions, rates, or validations. The examples ('100' for IRPF, '303' for IVA) help clarify the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when you need information about a specific tax form by its number. It doesn't explicitly mention when not to use it or name alternatives among siblings, but the context is sufficiently clear for a read-only lookup tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vat_ratesA
Returns Spanish VAT (IVA) rates for a given fiscal year. Includes general, reduced, and super-reduced rates, plus equivalence surcharges. Use territory='canarias' for IGIC or territory='ceuta_melilla' for IPSI. Source: Ley 37/1992 del IVA.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Fiscal year (2024-2026) | |
| territory | No | Tax territory (default: peninsular Spain) | peninsular |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool returns (multiple VAT rates and surcharges), mentions the source (Ley 37/1992 del IVA) for credibility, and implies it's a read-only operation through 'Returns.' However, it doesn't specify rate limits, error conditions, or response format details that would be helpful for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in three sentences: purpose, scope, usage guidance, and source. Every sentence adds value without redundancy. It's front-loaded with the core functionality and includes necessary details concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is mostly complete. It covers purpose, scope, usage guidance, and source. However, without an output schema, it could better describe the return format (e.g., structured rates by category) to help the agent interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing a strong baseline. The description adds some value by explaining the meaning of territory parameters ('canarias' for IGIC, 'ceuta_melilla' for IPSI), which goes beyond the schema's enum values. However, it doesn't provide additional context about the 'year' parameter or clarify the output structure beyond rate types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Returns Spanish VAT (IVA) rates'), resource ('for a given fiscal year'), and scope ('Includes general, reduced, and super-reduced rates, plus equivalence surcharges'). It distinguishes itself from siblings by focusing specifically on VAT rates rather than deductions, calendars, brackets, or other tax-related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use alternatives: 'Use territory='canarias' for IGIC or territory='ceuta_melilla' for IPSI.' This clearly indicates that this tool is for Spanish VAT rates, with specific territory parameters for different tax systems, helping the agent choose correctly among sibling tools that handle different tax types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_casillasA
Searches the Modelo 100 (IRPF) casilla map by number or keyword. Use a casilla number (e.g., '0001') to get its definition, or a keyword (e.g., 'dividendos', 'alquiler') to find relevant casillas. Returns casilla number, name, section, and source article. Source: AEAT Manual Practico Renta 2025.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Casilla number (e.g., '0001', '0596') or keyword (e.g., 'dividendos', 'trabajo') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return format (casilla number, name, section, and source article) and the data source (AEAT Manual Practico Renta 2025), but lacks details on error handling, rate limits, or authentication needs, which are important for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by usage examples and return details, all in three efficient sentences with zero waste. Each sentence adds necessary context without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (search with one parameter), no annotations, and no output schema, the description is fairly complete—it covers purpose, usage, and return format. However, it could improve by detailing error cases or limitations, such as handling of partial matches or case sensitivity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the query parameter with examples. The description adds marginal value by reinforcing the same examples but does not provide additional semantics beyond what the schema offers, such as query formatting rules or search behavior nuances.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the Modelo 100 (IRPF) casilla map by number or keyword, specifying the exact resource and operation. It distinguishes itself from siblings by focusing on casilla definitions rather than deductions, brackets, or other tax-related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (searching casillas by number or keyword) with examples, but does not explicitly state when not to use it or mention alternatives among the sibling tools, such as get_tax_form_info or search_tax_rules, which might overlap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tax_rulesA
Searches across all IRPF tax rules data for a given keyword or concept. Searches in: work income, rental income, investment income, capital gains, deductions, and casilla definitions. Use natural terms like 'alquiler', 'dividendos', 'maternidad', 'vehiculo electrico', 'plan pensiones', 'vivienda habitual', 'despido', etc. Returns matching rules with casilla numbers, limits, and source articles. Source: AEAT Manual Practico Renta 2025.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term (e.g., 'alquiler', 'dividendos', 'maternidad', 'despido', 'criptomonedas') | |
| domain | No | Filter by tax domain (default: search all) | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what gets searched (tax rules across specified domains) and what gets returned (matching rules with casilla numbers, limits, source articles). However, it doesn't disclose important behavioral traits like whether this is a read-only operation, potential rate limits, authentication requirements, or pagination behavior for large result sets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in three sentences: the core functionality, usage guidance with examples, and return format with data source. Every sentence adds value without redundancy. It's appropriately sized for a search tool with two parameters and no annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 2 parameters, 100% schema coverage, and no output schema, the description provides good contextual completeness. It explains what domains are searched, gives natural language examples, describes the return format, and cites the data source. The main gap is the lack of output schema, so the agent must infer the structure from the description alone, but the description does specify what information will be returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, so the baseline is 3. The description adds meaningful context beyond the schema by providing natural language examples of search terms ('alquiler', 'dividendos', 'maternidad', etc.) and clarifying that searches occur across specific tax domains (work income, rental income, etc.). This helps the agent understand the semantic intent behind the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('searches across all IRPF tax rules data') and resource ('tax rules data'), with explicit scope ('for a given keyword or concept'). It distinguishes from sibling tools like 'search_casillas' by covering broader tax domains beyond just casillas, and from 'get_tax_form_info' by focusing on rule search rather than form retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when searching tax rules by natural language terms across multiple tax domains. It gives concrete examples of search terms ('alquiler', 'dividendos', etc.) and mentions the data source. However, it doesn't explicitly state when NOT to use it or name specific alternatives among sibling tools, though the scope differentiation is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_tax_idA
Validates a Spanish tax identification number. Supports NIF (individuals, 8 digits + letter), NIE (foreign residents, X/Y/Z + 7 digits + letter), and CIF (companies, letter + 7 digits + control). Returns validity, type detected, and formatted value. Source: Ministerio del Interior (NIF/NIE algorithm), Real Decreto 1065/2007 (CIF).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Tax ID to validate (NIF, NIE, or CIF) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it validates IDs, detects types, returns validity status, and formats values, and cites authoritative sources (Ministerio del Interior, Real Decreto). It does not mention error handling, rate limits, or authentication needs, but for a simple validation tool, this is reasonably comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by specifics on supported types and return values, and ends with source citations. Every sentence adds value: the first states the action, the second details formats, the third outlines outputs, and the fourth provides authority. It is compact and well-structured without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description is fairly complete. It covers purpose, supported ID types, return values, and sources. However, it lacks details on output structure (e.g., what 'formatted value' means) and potential error responses, which could be helpful for an agent. For a low-complexity tool, this is adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'id' documented as 'Tax ID to validate (NIF, NIE, or CIF)'. The description adds semantic context by detailing the supported formats (e.g., 8 digits + letter for NIF), which clarifies beyond the schema's generic mention. However, it does not explain validation rules or error cases, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: validating Spanish tax IDs. It specifies the exact types supported (NIF, NIE, CIF) with details on their formats, distinguishing it from sibling tools that retrieve tax data rather than validate IDs. The verb 'validates' and resource 'Spanish tax identification number' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by listing supported ID types, helping users know when to apply this tool for validation. However, it does not explicitly state when to use it versus alternatives (e.g., for Spanish tax IDs only) or mention any prerequisites, such as input format requirements beyond the schema. The context is clear but lacks explicit exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v0.1.0- First observed
get_ccaa_deductions - First observed
get_fiscal_calendar - First observed
get_indicators - First observed
get_irpf_brackets - First observed
get_personal_minimums - First observed
get_tax_form_info - First observed
get_vat_rates - First observed
search_casillas - First observed
search_tax_rules - First observed
validate_tax_id
TDQS
Every tool has a clearly distinct purpose targeting specific Spanish tax and fiscal information domains. There is no overlap between tools like get_ccaa_deductions (regional tax deductions), get_fiscal_calendar (deadlines), get_indicators (economic thresholds), and search_tax_rules (keyword-based rule search). The descriptions clearly differentiate each tool's unique function.
All tools follow a consistent verb_noun naming pattern with perfect uniformity. Every tool name starts with either 'get_' or 'search_' followed by a descriptive noun phrase, and all use snake_case consistently throughout. This creates excellent predictability and readability across the entire toolset.
With 10 tools, this server is well-scoped for its comprehensive Spanish tax information domain. Each tool earns its place by covering distinct aspects like regional deductions, tax brackets, VAT rates, form information, and validation. The count is ideal for providing complete coverage without being overwhelming.
The toolset provides complete coverage of Spanish tax and fiscal information needs. It includes regional deductions, tax brackets, VAT rates, economic indicators, personal minimums, form information, deadline calendars, tax rule searches, form field searches, and ID validation. This represents comprehensive CRUD-like access to the domain with no apparent gaps for agent workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Spanish Veri*factu invoicing: create invoices and manage billing from your AI assistant.
Sourced Italian tax tools for AI agents: cited primary-source search + a deterministic tax engine.
The first fiscal MCP server for Spain: IAE/CNAE 2025, AEAT modelos, IRPF/IVA, RETA quota.
AI legal copilot for foreigners in Spain: immigration and housing rental, cited to Spanish law.
Related MCP Servers
- FlicenseAqualityDmaintenanceEuropean business compliance suite for AI agents — 28 tools covering tax ID validation (PT, ES, FR, DE, IT, UK, NL), IBAN verification, EU VAT rates, invoice requirements, e-invoicing rules, payment terms, labor calendar helpers, VAT breakdown calculations and invoice schema validation for 18+ European countries.28-
- FlicenseAqualityCmaintenanceEnables AI assistants to help compile the Italian Modello 730 income tax return by providing IRPEF calculations, deduction tools, and tax rule guidance.1223-
- AlicenseBqualityCmaintenanceEnables AI assistants to answer tax compliance questions (VAT, sales tax, GST) and validate EU VAT numbers in real time via the VIES registry.217MIT
- AlicenseNot gradedqualityDmaintenanceThe first fiscal MCP server for Spain, connecting AI agents to live IAE, CNAE 2025, AEAT tax-form, and RETA data from official sources.MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/iMark21/aeat-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server