Skip to main content
Glama
plopez053

ayudas-es-mcp

by plopez053

ayudas-es-mcp

Servidor MCP que da a una IA acceso a dos fuentes oficiales españolas, sin scraping ni claves:

  • BDNS / infosubvenciones.es: convocatorias de ayudas y subvenciones de todas las administraciones (Estado, comunidades, diputaciones y ayuntamientos).

  • BOE (API de datos abiertos): normativa, oposiciones, licitaciones.

Se consultan en directo: no hay base de datos que descargar ni sincronizar, así que funciona al instalarlo y los datos están siempre al día. Lo que añade a la API: recuentos exactos, plazos calculados, separación de las ayudas que de verdad se pueden pedir, lectura de las bases en PDF y un calendario previsto de las convocatorias que se repiten cada año. Y avisa de lo que no sabe en lugar de callarlo.

Instalación

Requiere Node.js 22.13 o superior. No hay que instalar ni configurar nada más.

Claude Code

claude mcp add ayudas -- npx -y ayudas-es-mcp

Claude Desktop, Cursor y otros clientes

{
  "mcpServers": {
    "ayudas": {
      "command": "npx",
      "args": ["-y", "ayudas-es-mcp"]
    }
  }
}

Related MCP server: MCP-BOE

Herramientas

Herramienta

Qué hace

ayudas_buscar

Ayudas por texto, comunidad, beneficiario (autónomo/pyme, particular…), finalidad, instrumento y administración. Total exacto + muestra con estado, plazo y presupuesto.

ayudas_recuento

Recuentos y rankings exactos por comunidad, finalidad, beneficiario, instrumento, administración, órgano, mes o año.

ayudas_previstas

Calendario previsto: ayudas que se convocan cada año y que, por su histórico desde 2021, saldrán en los próximos días, o que este año se están retrasando. Con su fiabilidad medida.

ayuda_detalle

Ficha completa: plazo interpretado, extracto oficial (requisitos, cuantía, cómo pedirla), bases, documentos e historial si se convoca cada año.

ayuda_texto

Lee el PDF de las bases: devuelve el texto literal de sus apartados (cuantía, plazo, beneficiarios, requisitos, documentación, criterios…) con el número de página; o las páginas o palabras que se pidan.

novedades_perfil

Boletín para un perfil: ayudas nuevas sin cerrar + BOE sobre sus temas.

estado_datos

De dónde salen los datos, estado de la caché y del calendario.

boe_sumario_dia

Publicaciones del BOE de un día, filtrables por palabras y sección.

boe_buscar

Búsqueda en el BOE en un rango de fechas por palabras y/o sección (2B oposiciones, 5A licitaciones).

boe_documento

Texto de una disposición del BOE.

Todas están marcadas como de solo lectura (anotaciones MCP), así que los clientes que lo admiten no piden confirmación en cada llamada. El servidor envía además unas instrucciones al modelo: qué herramienta usar para contar o para leer requisitos, y que cite el código y los avisos en lugar de completar con datos inventados.

Prompts

Prompt

Qué hace

ayudas_para_mi

A partir de un perfil («autónoma, peluquería en Bilbao»): ayudas abiertas, las que suelen salir pronto y la cuantía y requisitos de las mejores, en una tabla.

analizar_convocatoria

Ficha de una convocatoria por su código: plazo, cuantía, requisitos y documentación, citando página.

En Claude Desktop y Claude Code aparecen como comandos (/).

Ejemplos de preguntas

  • «¿Qué ayudas abiertas hay para autónomos en Galicia para digitalización?»

  • «¿Qué ayudas para pymes del País Vasco suelen salir en los próximos dos meses?»

  • «¿Hay alguna ayuda que salga todos los años por estas fechas y este año aún no haya salido?»

  • «¿Qué comunidad ha convocado más ayudas de vivienda este año?»

  • «¿Cuántas ayudas para pymes se han convocado cada mes desde mayo?»

  • «Hazme el resumen semanal para una pyme de hostelería en Andalucía.»

  • «¿Ha salido alguna oposición de enfermería en el BOE este mes?»

Cómo funciona

Cada pregunta se traduce a consultas a la API oficial de la BDNS:

  • Totales exactos con una sola petición. La API devuelve el número de coincidencias de una búsqueda sin descargarla; un recuento simple cuesta una petición, y un ranking, una por grupo.

  • Búsqueda por palabras en dos pasos. La API busca subcadenas («tala» encuentra «instalación»). Se le envía la raíz de cada palabra y sobre lo que devuelve se aplican las reglas de palabra (ver abajo). Comprobado: da exactamente lo mismo que descargar todo el listado y filtrarlo (8 de 8 casos, incluidos prefijos, siglas y títulos en euskera).

  • Detalle solo de lo que se muestra: plazo, presupuesto y tipo están en la ficha de cada convocatoria, que se pide al enseñarla.

  • Ritmo prudente: como mucho una petición por segundo a la BDNS, que bloquea las ráfagas.

Caché temporal

Las respuestas se guardan en ~/.cache/ayudas-es-mcp/cache.sqlite (o solo en memoria si no se puede escribir), con una caducidad según lo que puede cambiar:

Dato

Se guarda

Totales y listados de un periodo que acabó hace más de 7 días

1 semana

Totales y listados que incluyen días recientes

1 hora

Ficha con plazo provisional (pendiente de publicar el extracto)

1 día

Ficha de una convocatoria cerrada o sin solicitud

1 mes

Otras fichas

1 semana

Texto extraído de un PDF

1 mes

Calendario previsto (solo las series calculadas, no el histórico)

1 semana

No es una copia de la BDNS: solo guarda lo ya preguntado. Dos preguntas iguales a la vez comparten la petición. npx ayudas-es-mcp --vaciar-cache la borra.

Tiempos

Medidos con la caché vacía, a una petición por segundo:

Consulta

Primera vez

Repetida

Buscar «digital*» para pymes, 3 abiertas

~4 s

inmediata

Buscar en Galicia, 10 abiertas

~12 s

~1 s

Recuento por mes, pymes desde mayo

~7 s

inmediata

Recuento por órgano de «euskera» en el País Vasco (todo el histórico)

~2 s

inmediata

Ranking por comunidad, vivienda en 2026

~21 s

inmediata

Calendario previsto

2-3 min, una vez por semana y en segundo plano

inmediata

El calendario necesita el histórico desde 2021 (~40 peticiones): se prepara en segundo plano la primera vez que se usa una herramienta de ayudas, no al arrancar, y entretanto ayudas_previstas dice que se está preparando en lugar de responder «no hay».

Cómo se evita dar información errónea

Una herramienta que se equivoca con seguridad es peor que ninguna. Por eso:

Riesgo

Qué se hace

Decir «no hay ayudas» cuando solo la búsqueda no encontró

La respuesta vacía lo advierte: la búsqueda es por palabras del título y no prueba que no existan

Contar sobre una muestra

ayudas_buscar da el total exacto y marca la lista como muestra; para contar hay ayudas_recuento

Ayudas que ya no se pueden pedir

Distingue cerradas, sin solicitud (concesión directa) y abiertas; las instrumentales (72 % de lo reciente) se separan

Sumar presupuestos parciales

La BDNS no da el presupuesto en bloque, así que los recuentos no lo suman; el de cada convocatoria está en su ficha

Mirar solo los últimos 90 días sin decirlo

Lo indica y cuenta cuántas más hay registradas antes con los mismos filtros

Descargar miles de filas para una pregunta

Si excluir concesiones directas exige descargar más de 30.000 filas, pide acotar en vez de hacerlo

«Hoy» equivocado de madrugada

Las fechas (plazos, BOE de hoy) van en hora peninsular española, no en UTC

Una fuente lenta o caída

Cada petición tiene tiempo máximo y reintentos; un fallo puntual no tumba la respuesta entera, se avisa de lo que falta

Calendario aún sin preparar

Dice que se está preparando, en vez de «0 ayudas recurrentes»

Calendario sobre ayudas que no son una sola

Marca las series en las que el órgano registra varias al año con el mismo título

Citar de un PDF algo que no está

Devuelve texto literal con página, distingue apartado de mención y avisa si no localiza un tema en lugar de inventarlo

Texto de un PDF con instrucciones

Se entrega marcado como dato literal de un documento externo

Código que no existe

Error inmediato y claro, no un reintento de 30 s

Lectura de las bases (PDF)

ayuda_texto descarga el PDF de la convocatoria y devuelve texto literal con página, sin resumir ni usar IA. Solo se hace bajo demanda y el texto se guarda en la caché: cada documento se descarga y procesa una sola vez.

  • Elige el documento por su nombre: prefiere «texto íntegro» o «bases» a un anexo, formulario o acuerdo de aprobación; si el elegido no deja localizar apartados, prueba con los siguientes más probables. Si el elegido no se puede leer (un Word, demasiado grande), pasa al siguiente y lo dice. La respuesta lista los demás para poder pedirlos (documento).

  • Localiza apartados por su título (Artículo, Base, «Primero.-», «6. Plazo…», MAYÚSCULAS), descartando frases partidas por el ancho de página, la protección de datos y los anexos con formularios. Distingue apartado (hay un título que corresponde) de mención (solo se nombra el tema), y lo dice.

  • Con buscar y paginas se puede ir directamente a una palabra o a unas páginas cuando los apartados no se reconocen.

  • Cantidades en euros del documento, cada una con la frase en la que aparece.

  • El contenido del PDF se entrega como dato, no como instrucciones: se marca como texto literal de un documento externo.

Probado con 15 convocatorias reales (ayuntamientos, diputaciones, universidades): localiza la cuantía en 15, el plazo en 14, los beneficiarios en 14 y los requisitos en 14.

Límites: PDF escaneados sin capa de texto (se avisa; no hay OCR), documentos Word u otros formatos, y archivos de más de 25 MB o 200 páginas (se leen las primeras). Los apartados se detectan con reglas: comprueba siempre la página citada.

Plazo real de cada convocatoria

La BDNS solo trae fechas de solicitud en una parte de las convocatorias. En el resto el plazo viene en texto, y se interpreta de forma determinista (sin LLM):

El texto dice

Resultado

Tipo «Concesión directa - instrumental»

⚫ no se puede solicitar: es el registro de una ayuda ya concedida a un beneficiario concreto (sus fechas son de ejecución)

«Hasta el 30 de noviembre de 2026», «31 de decembro», «1/3/27»

🟢/🔴 según la fecha (castellano, gallego y catalán)

«10 días hábiles desde el día siguiente a la publicación» y el extracto ya está publicado

🟢 fecha de fin calculada con el calendario

Lo mismo, pero el extracto aún no se ha publicado

🟡 pendiente de publicar

«Sin plazo de solicitud», «no procede», «nominativa»…

⚫ no se puede solicitar

Varios plazos, inicio no estándar («a partir del quinto día hábil»…)

⚪ consultar (no se arriesga una fecha)

Medido sobre 1.004 convocatorias recientes con detalle: el 72 % son instrumentales (antes aparecían como «abiertas» por tener fechas), y solo el 2 % queda como «consultar».

El cálculo sigue la Ley 39/2015, art. 30: días hábiles sin sábados, domingos ni festivos; meses hasta el mismo día del mes de vencimiento; si el último día es inhábil, el siguiente hábil. Los festivos nacionales y autonómicos vienen de Nager.Date (los de la comunidad cuando todas las regiones de la convocatoria son de una sola); los locales no se incluyen, por eso la respuesta dice siempre que es un cálculo y cómo se ha hecho. Pruebas con casos comprobados a mano en src/plazos.test.ts.

Calendario previsto (ayudas recurrentes)

Se agrupan las convocatorias del mismo órgano con el mismo título sin años, fechas ni ediciones («XIV Premios X 2026» ≈ «XV Premios X 2027»). Las convocadas en 3 o más años forman una serie con su fecha típica de registro (mediana circular, para que 28-dic y 3-ene estén cerca) y su variación. Se excluyen las nominativas, directas y convenios, que no se pueden solicitar.

Fiabilidad medida (prever 2025 usando solo 2021-2024 y compararlo con lo ocurrido):

Confianza

Error mediano

A ±15 días

Alta (4+ años, variación ≤ 15 días)

15 días

51 %

Media

26 días

35 %

Baja (oculta por defecto)

55 días

15 %

Además, solo el 59 % de las series activas en 2024 volvió a convocarse en 2025 con el mismo título (otras cambian de nombre o dejan de convocarse). La evaluación se recalcula con cada calendario y la herramienta la muestra, para que la IA pueda decir cuánto fiarse.

Búsqueda por palabras

Sobre el título (y el título cooficial en euskera, catalán o gallego), sin tildes, con límite de palabra («tala» no coincide con «instalación»), singular/plural («pyme» ↔ «pymes») y prefijo con * («digital*» → digitalización, digitales). No es semántica: «digitalización» no encuentra «transformación tecnológica»; para temas amplios conviene usar finalidad.

Opciones

npx ayudas-es-mcp --help
npx ayudas-es-mcp --vaciar-cache
npx ayudas-es-mcp --version

Variables: AYUDAS_CACHE (ruta de la caché), BDNS_INTERVALO_MS (ritmo de peticiones, 1000 por defecto) y AYUDAS_TIMEOUT_MS (tiempo máximo por petición, 30000 por defecto).

Desarrollo

git clone … && cd ayudas-es-mcp
npm install
npm run build
npm test            # pruebas sin red: plazos, lectura de documentos, fechas, caché
npm run test:live   # búsqueda en directo frente a la referencia + prueba de extremo a extremo

Limitaciones conocidas

  • Estado de las ayudas. La BDNS no indica si una convocatoria está abierta (su campo abierto viene siempre a false y sus filtros de abierta/tipo se ignoran en silencio): se deduce del plazo interpretado. Los plazos calculados no incluyen festivos locales.

  • Concesiones directas. Solo se sabe con seguridad cuáles son con el detalle de cada convocatoria. En búsquedas y recuentos, el filtro excluir_directas las estima por el título: precisión ~97 %, detecta ~67 %. Los recuentos sin ese filtro las incluyen y lo advierten. Excluirlas en periodos muy largos sin otros filtros exigiría descargar decenas de miles de filas, así que se pide acotar.

  • Presupuestos y ayudas antiguas. El presupuesto y el plazo solo constan en la ficha de cada convocatoria, así que los recuentos no suman presupuestos y la búsqueda no localiza ayudas registradas hace meses que sigan abiertas (avisa de cuántas hay antes del periodo).

  • Rankings la primera vez. Agrupar por comunidad o finalidad cuesta una petición por grupo (~20 s); repetido, sale de la caché.

  • El calendario predice el registro en la BDNS, no el plazo de solicitud, y no detecta una ayuda que cambie de nombre. Acierta a ±15 días en el 35-51 % de los casos (ver arriba).

  • Comunidad. ~2 % de las convocatorias no tienen comunidad autónoma asignada en la BDNS.

  • Mismo título, distintas ayudas. Hay órganos que registran decenas de ayudas individuales bajo un mismo título; no son duplicados, así que no se eliminan. Cuando se descargan las filas, los recuentos dan también los «títulos distintos».

  • Lectura de PDF. Sin OCR (los escaneados no se leen) y por reglas, no por IA: ver arriba.

  • Varias instancias. El límite de una petición por segundo es por proceso: varios clientes abiertos a la vez suman su ritmo (comparten, eso sí, la caché en disco).

Datos y licencia

  • BDNS. Origen de los datos: Intervención General de la Administración del Estado. Se reutilizan según su aviso legal, que permite el uso comercial y no comercial citando la fuente y sin desnaturalizar la información. Este servidor solo consulta convocatorias, no datos personales de beneficiarios.

  • BOE. API de datos abiertos de la Agencia Estatal Boletín Oficial del Estado.

  • Festivos. Nager.Date.

Proyecto independiente: no está afiliado a la IGAE, a la Agencia Estatal BOE ni a ningún organismo público, ni cuenta con su respaldo. La información puede cambiar o corregirse en la fuente: compruébala siempre en la ficha oficial antes de presentar una solicitud.

Available Tools

10 tools
ayuda_detalleDetalle de una convocatoria de ayudaB
Read-onlyIdempotent

Ficha completa de una convocatoria de la BDNS: estado, plazo, presupuesto, beneficiarios, bases reguladoras, extracto oficial (requisitos, cuantía, cómo solicitarla) y documentos.

ParametersJSON Schema
NameRequiredDescriptionDefault
codigoYesCódigo BDNS, p. ej. 932105 (lo devuelve ayudas_buscar)
max_caracteres_extractoNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds useful context about the richness of the payload, but says nothing about error behavior for an unknown code, rate limits, or auth needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that lists the returned content categories with no filler. Effective and appropriately sized, though the long enumerations are dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns and does list the main content fields. However, it omits the undocumented max_caracteres_extracto parameter and gives no structural sense of the response, leaving gaps for a detail endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: the 'codigo' parameter is documented in the schema, but 'max_caracteres_extracto' (500–30000) has no description anywhere. The description alludes to the 'extracto oficial' but never explains the character-limit parameter or its effect, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (a BDNS 'convocatoria') and enumerates exactly what the fact sheet contains — estado, plazo, presupuesto, beneficiarios, bases reguladoras, extracto, documentos. This clearly distinguishes a detail-retrieval tool from the search-oriented siblings, though the differentiation is implicit rather than stated against ayudas_buscar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: fetch the full record for one convocatoria by its code. The link to ayudas_buscar appears only in the schema parameter description ('lo devuelve ayudas_buscar'), not in the tool description, so there is no explicit when-to-use / when-not or named alternative here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ayudas_buscarBuscar ayudas y subvencionesA
Read-onlyIdempotent

Busca convocatorias de ayudas y subvenciones de cualquier administración española (Estado, comunidades, diputaciones y ayuntamientos), registradas en la Base de Datos Nacional de Subvenciones. Devuelve plazo, presupuesto, beneficiarios y estado. Ejemplo: ayudas de digitalización para autónomos en Galicia → texto 'digital*', comunidad 'galicia', beneficiario 'autonomo-o-pyme'. Para contar o comparar usa ayudas_recuento.

ParametersJSON Schema
NameRequiredDescriptionDefault
desdeNoRegistradas desde esta fecha (YYYY-MM-DD)
hastaNoRegistradas hasta esta fecha (YYYY-MM-DD)
textoNoPalabras que deben aparecer todas en el título (también en euskera, catalán o gallego). Admite singular/plural; con '*' busca por prefijo (p. ej. 'digital*').
limiteNoPor defecto 10
comunidadNoComunidad autónoma (incluye sus provincias y municipios)
finalidadNoFinalidad o sector de la ayuda
instrumentoNoTipo de ayuda: subvención, préstamo, garantía...
beneficiarioNo'autonomo-o-pyme' = autónomos, pymes y personas con actividad económica; 'entidad-sin-actividad-economica' = asociaciones, fundaciones, entidades públicas; 'particular' = personas físicas sin actividad económica.
solo_abiertasNoDescartar las que ya han cerrado y las que no admiten solicitud (concesión directa o nominativa). Por defecto true.
administracionNoNivel de la administración convocante
excluir_directasNoExcluir las concesiones directas y nominativas (no se pueden solicitar). Usa el tipo exacto cuando se conoce y, si no, una estimación por el título (precisión ~97 %, detecta ~67 %).
incluir_estatalesNoCon 'comunidad', incluir también las ayudas de ámbito nacional. Por defecto true.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds value beyond that by disclosing the upstream data source (BDNS) and naming the returned fields (plazo, presupuesto, beneficiarios, estado) — useful since no output schema exists. It does not describe ordering, pagination or result-volume behavior, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, followed by returns, a worked example, and the alternative tool — a logical order with no filler sentences. It is slightly dense but every sentence carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter search tool with no output schema and full schema coverage, the description supplies the missing pieces: data source, return fields, an example, and sibling routing, while annotations carry the safety profile. Minor gaps remain around pagination/default limit behavior, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline would be 3. The description exceeds that by giving a concrete parameter-combination example that clarifies how texto, comunidad and beneficiario are meant to be used together, adding meaning beyond the individual field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (busca) and resource (convocatorias de ayudas y subvenciones), and defines the scope precisely: any Spanish administration, sourced from the Base de Datos Nacional de Subvenciones. It also names the sibling ayudas_recuento for the counting/comparison case, so an agent can distinguish it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the counting/comparison case to ayudas_recuento and supplies a concrete worked example mapping a real request to parameters (texto 'digital*', comunidad 'galicia', beneficiario 'autonomo-o-pyme'). It does not cover when NOT to use this tool (e.g. retrieving a single grant, which ayuda_detalle presumably handles), so it is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ayudas_previstasCalendario previsto de ayudasA
Read-onlyIdempotent

Ayudas que se convocan todos los años y que, según su histórico en la BDNS desde 2021, saldrán en los próximos días, o que este año se están retrasando. Sirve para preparar la documentación antes de que se abra el plazo. Es una PREVISIÓN estadística a partir de las fechas de registro de años anteriores, no un anuncio oficial. Ejemplo: '¿qué ayudas para pymes del País Vasco suelen salir en los próximos 2 meses?' → comunidad 'pais-vasco', beneficiario 'autonomo-o-pyme', dias 60.

ParametersJSON Schema
NameRequiredDescriptionDefault
diasNoHorizonte en días. Por defecto 60
textoNoPalabras que deben aparecer todas en el título (también en euskera, catalán o gallego). Admite singular/plural; con '*' busca por prefijo (p. ej. 'digital*').
limiteNoPor defecto 15
comunidadNoComunidad autónoma (incluye sus provincias y municipios)
finalidadNoFinalidad o sector de la ayuda
instrumentoNoTipo de ayuda: subvención, préstamo, garantía...
beneficiarioNo'autonomo-o-pyme' = autónomos, pymes y personas con actividad económica; 'entidad-sin-actividad-economica' = asociaciones, fundaciones, entidades públicas; 'particular' = personas físicas sin actividad económica.
administracionNoNivel de la administración convocante
incluir_estatalesNoCon 'comunidad', incluir también las ayudas de ámbito nacional. Por defecto true.
incluir_retrasadasNoIncluir las que ya deberían haber salido este año y no constan. Por defecto true.
incluir_baja_confianzaNoIncluir las de fechas muy irregulares (error típico de ~2 meses). Por defecto false.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/openWorld/non-destructive, so the safety profile is settled. The description adds genuinely useful domain context the annotations cannot: it is a statistical forecast with inherent error, not an official announcement, which sets correct expectations for the agent and the user. Confidence/error behavior is also surfaced in the incluir_baja_confianza param.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then the use case, then the critical caveat, then a concrete example. No filler; every sentence adds selection or interpretation value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter, all-optional, no-output-schema tool, the description supplies scope, intent, caveat and example, while annotations carry the safety profile and the schema carries parameter detail. Nothing needed to select or invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 11 parameters are already documented with defaults, enums and semantics. The example supplies a light mapping from intent to parameters (dias 60, beneficiario, comunidad), but adds little beyond what the schema already states. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (ayudas/grants) and a distinctive scope: grants that recur annually and, per BDNS history since 2021, are due soon or are delayed. Cleverly distinguishes itself from a plain search tool by framing the output as a forecast calendar rather than a listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear use case ('preparar la documentación antes de que se abra el plazo') and a worked example mapping a natural-language query to specific parameters (comunidad, beneficiario, dias). It does not explicitly name a sibling like ayudas_buscar as the alternative for already-open grants, relying on the 'previsión, no anuncio oficial' framing instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ayudas_recuentoContar y comparar ayudasA
Read-onlyIdempotent

Recuentos y rankings EXACTOS de convocatorias de ayudas, agrupados por comunidad, finalidad, beneficiario, instrumento, administración, órgano convocante, mes o año. Ejemplos: '¿qué comunidad convoca más ayudas de vivienda este año?' → agrupar_por 'comunidad', finalidad 'vivienda', desde '2026-01-01'; '¿cuántas ayudas para pymes ha habido cada mes?' → agrupar_por 'mes', beneficiario 'autonomo-o-pyme'. Agrupar por comunidad o finalidad hace una consulta a la BDNS por grupo: unos 20 s la primera vez, inmediato al repetirla.

ParametersJSON Schema
NameRequiredDescriptionDefault
desdeNoRegistradas desde esta fecha (YYYY-MM-DD)
hastaNoRegistradas hasta esta fecha (YYYY-MM-DD)
textoNoPalabras que deben aparecer todas en el título (también en euskera, catalán o gallego). Admite singular/plural; con '*' busca por prefijo (p. ej. 'digital*').
limiteNoGrupos a mostrar. Por defecto 20
comunidadNoComunidad autónoma (incluye sus provincias y municipios)
finalidadNoFinalidad o sector de la ayuda
agrupar_porYes
instrumentoNoTipo de ayuda: subvención, préstamo, garantía...
beneficiarioNo'autonomo-o-pyme' = autónomos, pymes y personas con actividad económica; 'entidad-sin-actividad-economica' = asociaciones, fundaciones, entidades públicas; 'particular' = personas físicas sin actividad económica.
administracionNoNivel de la administración convocante
excluir_directasNoExcluir las concesiones directas y nominativas (no se pueden solicitar). Usa el tipo exacto cuando se conoce y, si no, una estimación por el título (precisión ~97 %, detecta ~67 %).
incluir_estatalesNoCon 'comunidad', incluir también las ayudas de ámbito nacional. Por defecto true.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, non-destructive, idempotent, open-world behavior. The description adds useful operational context: grouping by comunidad or finalidad triggers one BDNS query per group, taking about 20 seconds initially and being immediate on repeat.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then examples, then performance. Every sentence carries useful information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 12 parameters and no output schema, the description does well by explaining that it returns exact counts/rankings grouped by dimension. It could be slightly more explicit about the returned structure or grouping limits, but it is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high at 92%, so most parameter meaning is already documented. The description still adds value by giving example parameter combinations and clarifying the grouping behavior that drives latency.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: exact counts and rankings of grant calls, grouped by named dimensions. It clearly distinguishes aggregate counting from sibling search/detail tools, and the examples make the intended output obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit example questions and maps them to concrete parameters, giving clear context for when to use the tool. It does not name alternatives such as ayudas_buscar or give when-not-to-use guidance, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ayuda_textoLeer el documento de una convocatoriaA
Read-onlyIdempotent

Lee el PDF de las bases o de la convocatoria (el texto completo que la BDNS no resume) y devuelve el texto LITERAL de sus apartados (cuantía, plazo, beneficiarios, requisitos, documentación, gastos, criterios…) con el número de página, o de las palabras o páginas que se pidan. Úsala cuando haga falta la cuantía por beneficiario, los requisitos o la documentación, que no constan en los datos estructurados. Los apartados se localizan por sus títulos con reglas, no con IA: comprueba siempre la página citada.

ParametersJSON Schema
NameRequiredDescriptionDefault
temasNoApartados a localizar. Por defecto: cuantia, plazo, beneficiarios, requisitos, documentacion. cuantia = Cuantía, importe y financiación; plazo = Plazo de solicitud; beneficiarios = Beneficiarios; requisitos = Requisitos y condiciones; documentacion = Documentación a presentar; gastos = Gastos o actuaciones subvencionables; criterios = Criterios de valoración; presentacion = Lugar y forma de presentación; justificacion = Justificación y pago; objeto = Objeto y finalidad
buscarNoPalabras que deben aparecer todas en una página; devuelve el pasaje y su página.
codigoYesCódigo BDNS de la convocatoria
paginasNoPáginas a leer completas, p. ej. '3' o '3-5' (máximo 4 páginas).
documentoNoId del documento (de la lista que devuelve esta herramienta). Por defecto, el texto de la convocatoria.
max_caracteresNoPor defecto 9000

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds genuinely non-obvious behavior beyond them: sections are located by rule-based title matching, NOT AI, and the user is told to 'comprueba siempre la página citada' — a caveat about extraction reliability that structured fields cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose then usage condition then a reliability caveat. Dense but each sentence carries distinct information; slightly long with the enumerated apartados list duplicating what the schema already enumerates.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must describe the return shape — it does ('texto LITERAL de sus apartados... con el número de página') and notes that documento ids come from this same tool's output. Combined with the schema covering the 4-page and 30000-char limits, an agent has enough to call it correctly; only the exact return format details are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (temas, buscar, codigo, paginas, documento, max_caracteres) is already documented in the schema. The description only echoes the default sections and the words/pages mode in prose, adding little beyond the schema's own descriptions. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (lee/devuelve) on a specific resource (el PDF de las bases o convocatoria) and specifies the scope: el texto LITERAL de sus apartados con el número de página. It explicitly carves out the niche versus structured data ('el texto completo que la BDNS no resume'), so an agent can distinguish it from ayuda_detalle without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger condition ('Úsala cuando haga falta la cuantía por beneficiario, los requisitos o la documentación, que no constan en los datos estructurados'), clearly signaling when this tool beats the structured-data siblings. It does not name the specific alternative tool (e.g. ayuda_detalle), so routing is clear but not fully enumerated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

boe_buscarBuscar en el BOE por rango de fechasA
Read-onlyIdempotent

Busca publicaciones del BOE entre dos fechas (máximo 31 días) cuyo título, departamento o epígrafe contenga todas las palabras indicadas, opcionalmente en ciertas secciones. Ejemplos: oposiciones de enfermería → palabras ['enfermer*'], secciones ['2B']; licitaciones de software → palabras ['software'], secciones ['5A'].

ParametersJSON Schema
NameRequiredDescriptionDefault
desdeYesFecha en formato YYYY-MM-DD
hastaNoYYYY-MM-DD. Por defecto, hoy.
palabrasNoPalabras que deben aparecer todas
seccionesNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds genuine non-obvious behavior: the hard 31-day maximum range and the fact that all words must match (AND, not OR) across title/department/epígrafe — both are error-preventing details absent from the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and constraint (date range, max 31 days) before the qualifiers. The second sentence delivers concrete examples with no filler; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 params, no output schema, and rich annotations, the description covers the key constraints an agent needs (range cap, AND semantics, optional sections). The one gap is that it never says what is returned (list of publications, ordering/pagination), which matters since there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, but the description still adds meaning beyond it: matching is conjunctive ('todas las palabras'), which fields are searched, and that sections are optional. The example 'enfermer*' reveals wildcard/partial matching that the schema does not document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Busca') and resource ('publicaciones del BOE') and describes the search scope (title, department, epígrafe) plus the AND semantics of the keywords. The purpose is unambiguous, but it never explicitly differentiates itself from siblings like boe_sumario_dia or boe_documento, which the 5-level requires.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The worked examples ('oposiciones de enfermería', 'licitaciones de software') imply intended scenarios, but they primarily illustrate parameter patterns rather than routing. There is no explicit statement of when to prefer this tool over boe_sumario_dia or boe_documento, so guidance remains implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

boe_documentoTexto de una disposición del BOEA
Read-onlyIdempotent

Devuelve el texto plano de una publicación del BOE a partir de su identificador (p. ej. BOE-A-2026-21317), obtenido con boe_sumario_dia o boe_buscar.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesIdentificador, p. ej. BOE-A-2026-21317
max_caracteresNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it returns plain text, which is useful, but does not mention rate limits, truncation behavior, or what happens for large documents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence that front-loads the verb and resource. It is appropriately sized and wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool that can return large documents (max 50,000 characters) with no output schema, the description should explain return format, truncation, or size limits. Combined with incomplete parameter documentation, it leaves the agent guessing about the output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%. The description explains the 'id' parameter format with an example, but gives no information about 'max_caracteres' — its purpose, default, or truncation behavior — leaving a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Devuelve) and resource (texto plano de una publicación del BOE) and identifies the input type. It explicitly names boe_sumario_dia and boe_buscar as the sources of the identifier, distinguishing it from those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by telling the agent where the required identifier comes from (boe_sumario_dia or boe_buscar), which routes the agent correctly. However, it does not state when not to use this tool or what happens with invalid identifiers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

boe_sumario_diaSumario del BOE de un díaA
Read-onlyIdempotent

Lista las publicaciones del BOE de un día concreto (por defecto, hoy), con filtro opcional por palabras clave y por sección. El BOE no se publica los domingos.

ParametersJSON Schema
NameRequiredDescriptionDefault
fechaNoYYYY-MM-DD. Por defecto, hoy.
palabrasNoPalabras que deben aparecer todas. Con '*' final, prefijo: 'enfermer*'.
seccionesNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, and the description is consistent with them. It adds context beyond the annotations: the today default and the Sunday non-publication rule, both operationally relevant for shaping a query.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with zero waste, front-loading the core action and following with the filters and the Sunday caveat. Every clause carries information the agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a read-only list tool whose safety profile is covered by annotations, but with no output schema the description never indicates what a returned 'publicación' contains or how results relate to boe_documento for follow-up. This is a modest gap for a summarization tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% and the schema itself richly documents the parameters, including the YYYY-MM-DD pattern, the '*' prefix semantics, and the full section enum. The description only restates the filters at a high level and confirms the today default, adding little beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Lista') and resource ('publicaciones del BOE') scoped to a single day, with optional keyword and section filters. It is clearly distinct from siblings like boe_buscar (search) and boe_documento (document lookup), though it doesn't name those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a useful default ('por defecto, hoy') and a real usage constraint ('El BOE no se publica los domingos'), which tells the agent when a day query is futile. However, it offers no explicit guidance on when to prefer this over boe_buscar for the same retrieval task.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estado_datosEstado de los datosA
Read-onlyIdempotent

De dónde salen los datos: consulta en directo a la BDNS y al BOE, estado de la caché temporal y del calendario previsto.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description adds real context beyond that by disclosing that it performs live queries against external sources (BDNS, BOE) and reports on a temporary cache and a planned calendar. It does not say anything about latency, external-source availability, or failure behavior, so it does not reach a 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, opening with the core question ('De dónde salen los datos') and then listing the three components. Efficient and easy to scan; it could arguably break the three status areas out slightly more for faster parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description has to convey what comes back, and it does so by naming the three reported areas: live source query status, cache state, and the planned calendar. For a zero-parameter status tool this is close to complete; only the response shape (e.g., per-source flags versus free text) remains unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the baseline there is nothing for the description to disambiguate. Schema description coverage is 100% and the empty object schema is unambiguous. No parameter information is missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete resource (data provenance/state) and enumerates the three things inspected: live BDNS and BOE queries, temporary cache state, and the planned calendar. That is enough for an agent to tell it apart from the sibling retrieval tools (boe_*, ayudas_*), which fetch content rather than report system status. It stops short of 5 because the verb is nominal ('estado') rather than an explicit action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: this is plainly a diagnostic/freshness-check tool, and a reader can infer it is called to verify where data stands before relying on other tools. However, no explicit when-to-use condition, prerequisite, or alternative is stated, and none of the siblings is named as a contrasting option. Implied-but-not-stated guidance lands at 3.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

novedades_perfilNovedades para un perfil (ayudas + BOE)B
Read-onlyIdempotent

Resumen de lo publicado en los últimos días que le interesa a un perfil concreto: ayudas nuevas que no han cerrado y publicaciones del BOE sobre sus temas. Pensado como boletín semanal para un autónomo, una pyme, una gestoría o una asociación.

ParametersJSON Schema
NameRequiredDescriptionDefault
diasNoPor defecto 7
palabrasNoTemas del perfil, p. ej. ['hostelería'] o ['vehículo eléctrico']. Se busca cada uno por separado.
comunidadNoComunidad autónoma (incluye sus provincias y municipios)
finalidadNoFinalidad o sector de la ayuda
beneficiarioNo'autonomo-o-pyme' = autónomos, pymes y personas con actividad económica; 'entidad-sin-actividad-economica' = asociaciones, fundaciones, entidades públicas; 'particular' = personas físicas sin actividad económica.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: only non-closed ayudas and only items within the recent day window. It does not say how results are ordered or whether there are caps on returned items.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what is returned and the scope constraint (open ayudas, recent days). The closing audience list (autónomo, pyme, gestoría, asociación) is somewhat expendable but cheaply sets the context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, and with five all-optional parameters the description never states the default behavior when nothing is supplied (e.g. does an empty 'palabras' return all topics for the last 7 days?). It is adequate for the aggregation concept but leaves the zero-argument invocation ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and three parameters carry enums with documented meanings, so the schema does the heavy lifting. The description reinforces that 'palabras' means the profile's topics and that results cover both sources, but adds no format or default-behavior detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific combined resource: a digest of newly published ayudas (only those still open) plus BOE items matching a profile's topics. This is clearly distinguishable from siblings like ayudas_buscar or boe_sumario_dia, which are single-source lookup tools. It stops short of explicitly naming those siblings as the alternative, so it is clear but not maximally differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Pensado como boletín semanal' implies a recurring digest use case, which is useful context. However, it gives no explicit when-not guidance nor points to ayudas_buscar/boe_buscar for targeted single-source queries, leaving the agent to infer the boundary.

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.

  1. 10 tool updatesv0.7.0
    • First observedayuda_detalle
    • First observedayuda_texto
    • First observedayudas_buscar
    • First observedayudas_previstas
    • First observedayudas_recuento
    • First observedboe_buscar
    • First observedboe_documento
    • First observedboe_sumario_dia
    • First observedestado_datos
    • First observednovedades_perfil

TDQS

A3.9/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a clearly distinct resource/action: BOE daily summary vs. BOE range search vs. BOE document retrieval, and BDNS search vs. counts vs. detail vs. PDF text vs. forecasts vs. profile digest. The descriptions explicitly clarify boundaries, such as using ayudas_recuento for counts/comparisons instead of ayudas_buscar. No pair appears to do the same thing.

Naming Consistency3/5

All names use snake_case, but the prefix pattern is inconsistent: boe_* for BOE tools, then ayudas_* and ayuda_* (plural vs. singular) for grant tools, plus estado_datos and novedades_perfil without a domain prefix. Verb/noun ordering also varies (e.g. boe_buscar vs. ayuda_detalle), making the set readable but not fully predictable.

Tool Count5/5

Ten tools is well within the ideal 3–15 range for a focused Spanish grants and BOE publications server. The tools divide cleanly across BOE retrieval, BDNS search/detail/counts/PDF access, forecasting, profile updates, and data status, so each appears to earn its place.

Completeness5/5

The surface covers the key lifecycle for the domain: BOE daily listing, range search, and full document retrieval; grant search, exact counts, full detail, original PDF text, forecasts, and profile-based updates. There are no obvious dead ends for an agent needing to discover, inspect, count, or read Spanish official publications and subsidies.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for querying Spanish government open data APIs including grants, legislation, company registry, statistics, and open data catalog. Enables LLMs to access Spanish public information on-the-fly.
    26
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables searching and querying Spanish public subsidies and aids using the BDNS API, with filters for region, beneficiary type, and more.
    -