
Spanish tax calendar, RETA and IRPF estimates and guides for autónomos in Spain, by Kuotia.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when a connected gestoría client asks which returns they must file in a year and by when, as their gestor confirmed them. Do not use for someone who is not a connected client.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http kuotia https://kuotia.com/mcp
Use this when a connected gestoría client asks which returns they must file in a year and by when, as their gestor confirmed them. Do not use for someone who is not a connected client.
| Argument | Type | Description |
|---|---|---|
| year* | integer |
{
"type": "object",
"required": [
"year"
],
"properties": {
"year": {
"type": "integer",
"maximum": 2027,
"minimum": 2025
}
},
"additionalProperties": false
}Use this when a connected Kuotia gestoría client asks how their taxes are going: which periods are being prepared, ready to file or filed, deadlines, and the amounts their gestor has made ready or filed. Amounts appear only for ready or filed returns. Read only: it never files, approves or changes anything. Do not use for general deadlines or estimates (public tools).
| Argument | Type | Description |
|---|---|---|
| period | string | One period (2026-T3, 2026-07 or 2026). Without it: the open periods and the last four filed. |
{
"type": "object",
"required": [],
"properties": {
"period": {
"type": "string",
"pattern": "^20\\d\\d-T[1-4]$|^20\\d\\d$|^20\\d\\d-(0[1-9]|1[0-2])$",
"description": "One period (2026-T3, 2026-07 or 2026). Without it: the open periods and the last four filed."
}
},
"additionalProperties": false
}Use this when a connected gestoría client asks what their gestor needs from them or whether something they sent arrived. Lists each pending or sent request with its type, period, due date and a portal link; the client answers in the Kuotia portal. Do not use to answer or create requests.
| Argument | Type | Description |
|---|---|---|
| status | string |
{
"type": "object",
"required": [],
"properties": {
"status": {
"enum": [
"pending",
"sent",
"all"
],
"type": "string",
"default": "pending"
}
},
"additionalProperties": false
}Use this when a connected Kuotia gestoría client explicitly asks to send a text message to their gestor (a question, a heads-up, a reply). It sends exactly the text the client approved, as the client, to their own gestor in the Kuotia portal, where the gestor answers; it cannot be unsent. Show the final text and get the client's confirmation before calling. Recommend sending documents, identity numbers (DNI, NIF, NIE) and bank details through the Kuotia portal instead of this message; the text is sent as the client writes it. No attachments, and it never reads messages back. Reuse the same idempotency_key when retrying the same message. Do not use for questions general tools answer.
| Argument | Type | Description |
|---|---|---|
| body* | string | The exact text to send. |
| topic | string | |
| subject | string | Subject, only when starting a new conversation. |
| idempotency_key* | string | A new random UUID (for example 0f8fad5b-d9cb-469f-a165-70867728950e) for each action. Reuse exactly the same UUID only when retrying the same action. |
| new_conversation | boolean | Start a new conversation instead of writing in the latest open one. |
{
"type": "object",
"required": [
"body",
"idempotency_key"
],
"properties": {
"body": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "The exact text to send."
},
"topic": {
"enum": [
"documentos",
"impuestos",
"alta",
"otro"
],
"type": "string",
"default": "otro"
},
"subject": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Subject, only when starting a new conversation."
},
"idempotency_key": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
"maxLength": 36,
"minLength": 36,
"description": "A new random UUID (for example 0f8fad5b-d9cb-469f-a165-70867728950e) for each action. Reuse exactly the same UUID only when retrying the same action."
},
"new_conversation": {
"type": "boolean",
"default": false,
"description": "Start a new conversation instead of writing in the latest open one."
}
},
"additionalProperties": false
}Use this after a message sent with gestoria_send_message, or another write made through this connection, had an uncertain outcome (a timeout or an error), to see whether it completed before trying again. Never repeat an uncertain action with a new idempotency_key before checking. It lists only this connection's own actions, never message text.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| receipt_id | integer | |
| idempotency_key | string |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1
},
"receipt_id": {
"type": "integer",
"minimum": 1
},
"idempotency_key": {
"type": "string",
"maxLength": 128,
"minLength": 1
}
},
"additionalProperties": false
}Use this when an autónomo in mainland Spain or Baleares asks roughly how much IRPF and cuota de autónomos they would pay in a year and how much they would keep, from yearly income, expenses and comunidad autónoma. Income and expenses are yearly amounts without recoverable VAT and without their own cuota de autónomos (the tool adds the cuota). Assumes a full year in estimación directa simplificada, individual filing, no other income, and the minimum cuota of their tramo unless they give theirs. An annual estimate, not a quarterly modelo 130 or 303 amount, and without regional deductions. tipo_medio_irpf is the IRPF over gross income. Do not use for employees, companies, Canarias, País Vasco, Navarra, Ceuta or Melilla, or a connected client's real returns.
| Argument | Type | Description |
|---|---|---|
| age | integer | |
| year* | integer | |
| region* | string | |
| children | integer | |
| annual_income* | number | |
| monthly_cuota | number | Their real monthly cuota de autónomos, if they know it. |
| annual_expenses* |
Use this when someone asks how much cuota de autónomos (RETA, Seguridad Social) they would pay in Spain, or which tramo applies, from expected yearly income and expenses. Assumes a full year of activity as a persona física autónoma (not societario) in estimación directa simplificada of the common IRPF, income and expenses without recoverable VAT and without their own cuota, the 5 % allowance for gastos de difícil justificación (at most 2,000 EUR a year) and then the general 7 % deduction for generic expenses. The tramo table is the same in all of Spain, but the rendimiento is computed with these common-regime rules: under módulos, estimación directa normal or the foral IRPF of País Vasco and Navarra the tramo may differ. Does not decide whether they qualify for the tarifa plana. Do not use for employees, for companies or for a connected client's real payments.
| Argument | Type | Description |
|---|---|---|
| year* | integer | |
| annual_income* | number | |
| annual_expenses* | number |
{
"type": "object",
"required": [
"year",
"annual_income",
"annual_expenses"
],
"properties": {
"year": {
"enum": [
2025,
2026
],
"type": "integer"
},
"annual_income": {
"type": "number",
"maximum": 100000000,
"minimum": 0
},
"annual_expenses": {
"type": "number",
"maximum": 100000000,
"minimum": 0
}
},
"additionalProperties": false
}Use this when someone asks how to become autónomo in Spain (alta in Hacienda with modelo 036 and in the RETA), what an autónomo files each quarter and year, how IVA, IRPF retención and the cuota de autónomos work, what an invoice must contain, what a gestoría or gestor does, whether an autónomo needs one and what to check when choosing one (topic need_gestoria), or how to change gestoría. Returns short statements, each with its official source and review date. Modelo 037 no longer exists (abolished in February 2025). Do not use for personal legal advice, companies or non-Spanish taxes.
| Argument | Type | Description |
|---|---|---|
| topic* | string |
{
"type": "object",
"required": [
"topic"
],
"properties": {
"topic": {
"enum": [
"alta",
"quarterly_and_annual_returns",
"iva",
"irpf",
"cuota",
"invoices",
"gestoria",
"need_gestoria",
"change_gestoria"
],
"type": "string"
}
},
"additionalProperties": false
}Use this when someone asks until when an autónomo in Spain can file or pay a specific tax return (modelo 303 IVA, 130 IRPF, 111, 115, 390, 347, 180, 190 or 100 renta) for a given tax period, or the last day to pay it by domiciliación. Give the modelo and the tax period it declares (for example 303 for 2026-T3, or 100 for tax year 2025), not the filing year. Only periods whose dates Kuotia has checked against the AEAT calendar are answered; others return not_verified with the official rule. Mainland Spain and Baleares only. Do not use for a connected client's own status (gestoria_get_tax_status) or for other countries.
| Argument | Type | Description |
|---|---|---|
| modelo* | string | |
| period* | string | Tax period declared: 2026-T3 for a quarterly modelo, 2025 for an annual one. |
{
"type": "object",
"required": [
"modelo",
"period"
],
"properties": {
"modelo": {
"enum": [
"303",
"130",
"111",
"115",
"390",
"347",
"180",
"190",
"100"
],
"type": "string"
},
"period": {
"type": "string",
"pattern": "^20\\d\\d(-T[1-4])?$",
"description": "Tax period declared: 2026-T3 for a quarterly modelo, 2025 for an annual one."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 12, 2026.
| number |
{
"type": "object",
"required": [
"year",
"annual_income",
"annual_expenses",
"region"
],
"properties": {
"age": {
"type": "integer",
"default": 35,
"maximum": 100,
"minimum": 18
},
"year": {
"enum": [
2025,
2026
],
"type": "integer"
},
"region": {
"enum": [
"andalucia",
"aragon",
"asturias",
"baleares",
"cantabria",
"castilla_leon",
"castilla_mancha",
"cataluna",
"extremadura",
"galicia",
"madrid",
"murcia",
"rioja",
"valencia",
"canarias",
"pais_vasco",
"navarra",
"ceuta",
"melilla"
],
"type": "string"
},
"children": {
"type": "integer",
"default": 0,
"maximum": 10,
"minimum": 0
},
"annual_income": {
"type": "number",
"maximum": 100000000,
"minimum": 0
},
"monthly_cuota": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Their real monthly cuota de autónomos, if they know it."
},
"annual_expenses": {
"type": "number",
"maximum": 100000000,
"minimum": 0
}
},
"additionalProperties": false
}