ayudas-es-mcp
Summary: This server lets an AI query live Spanish public data — grants/subsidies from the BDNS and BOE publications — with exact counts, interpreted deadlines, and literal PDF reading, no API keys or scraping.
Search grants (
ayudas_buscar): find subsidies from any Spanish administration by text, community, beneficiary, purpose, instrument, or administration level; returns exact total plus a sample with status, deadline, and budget.Count and rank grants (
ayudas_recuento): get exact totals and rankings grouped by community, purpose, beneficiary, instrument, administration, body, month, or year.Forecast upcoming grants (
ayudas_previstas): statistical calendar of annually recurring grants expected soon or running late, with confidence levels.View grant details (
ayuda_detalle): full record of a convocatoria — status, deadline, budget, beneficiaries, regulatory bases, official extract, and documents.Read grant PDFs (
ayuda_texto): literal text of bases/convocatoria sections (amounts, deadlines, requirements, documentation, etc.) with page citations.Profile newsletter (
novedades_perfil): weekly-style digest of new open grants and relevant BOE items for a given profile.Check data status (
estado_datos): data origin, cache state, and forecast-calendar readiness.BOE daily summary (
boe_sumario_dia): list BOE publications for a given day, filterable by keywords and section.Search BOE (
boe_buscar): find BOE items over a date range (max 31 days) by words and section (e.g., 2B oppositions, 5A tenders).Read BOE document (
boe_documento): plain text of a BOE item by its identifier (e.g., BOE-A-2026-21317).Prompts:
ayudas_para_mi(grants matching a profile) andanalizar_convocatoria(detailed grant analysis by code).All read-only: no writes, no keys, no confirmation prompts on supporting clients.
Click on "Deploy 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., "@ayudas-es-mcp¿Qué ayudas abiertas hay para autónomos en Galicia para digitalización?"
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.
ayudas-es-mcp
Guía de uso del servidor MCP de ayudas y subvenciones de España.
Permite que una IA consulte dos fuentes oficiales, sin claves ni scraping:
BDNS (infosubvenciones.es): convocatorias de ayudas y subvenciones de todas las administraciones: Estado, comunidades, diputaciones y ayuntamientos.
BOE (datos abiertos): normativa, oposiciones y licitaciones.
Las consultas se hacen en directo. No hay que descargar ni sincronizar ninguna base de datos: se instala y funciona.
Qué aporta
Sobre la API de la BDNS, el servidor añade:
Recuentos exactos, no estimados sobre una muestra.
Plazos de solicitud calculados a partir del texto de cada convocatoria.
Separación de las ayudas que realmente se pueden pedir.
Lectura de las bases en PDF, con el número de página de cada cita.
Un calendario previsto de las convocatorias que se repiten cada año.
Avisos explícitos cuando no sabe algo, en lugar de callarlo.
Related MCP server: Spain Grants Intelligence MCP
1. Requisitos
Node.js 22.13 o superior.
Un cliente compatible con MCP (Claude Code, Claude Desktop, Cursor u otro).
No hace falta instalar nada más ni configurar claves.
2. Instalación
Claude Code
claude mcp add ayudas -- npx -y ayudas-es-mcpClaude Desktop, Cursor y otros clientes
Añade este bloque a la configuración MCP del cliente y reinícialo:
{
"mcpServers": {
"ayudas": {
"command": "npx",
"args": ["-y", "ayudas-es-mcp"]
}
}
}3. Comprobar que funciona
En una terminal:
npx ayudas-es-mcp --versionEn el cliente, pregunta por ejemplo: «¿Qué ayudas abiertas hay para autónomos en Galicia para
digitalización?». Si el servidor está activo, la IA usará las herramientas ayudas_*.
4. Qué se le puede preguntar
«¿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?»
Hay además dos prompts, que los clientes muestran como comandos (/):
Prompt | Para qué sirve |
| Parte de un perfil («autónoma, peluquería en Bilbao») y devuelve en una tabla las ayudas abiertas, las que suelen salir pronto y los requisitos de las mejores. |
| Ficha de una convocatoria a partir de su código: plazo, cuantía, requisitos y documentación, citando página. |
5. Herramientas
Todas son de solo lectura (anotación MCP), por lo que los clientes que lo admiten no piden
confirmación en cada llamada. Los valores de las listas cerradas (comunidad, beneficiario,
finalidad…) admiten mayúsculas, tildes y nombres habituales: «País Vasco», «Euskadi» o «pymes»
valen igual que pais-vasco o autonomo-o-pyme.
Herramienta | Función |
| Busca por texto, comunidad, beneficiario, finalidad, instrumento y administración. Da el total exacto y una muestra con estado, plazo y presupuesto. |
| Recuentos y rankings exactos por comunidad, finalidad, beneficiario, instrumento, administración, órgano, mes o año. |
| Calendario previsto: ayudas que se convocan cada año y que, según su histórico desde 2021, saldrán pronto o se están retrasando. |
| Ficha completa: plazo interpretado, extracto oficial, bases, documentos e historial. |
| Lee el PDF de las bases y devuelve el texto literal de sus apartados, con página. |
| Boletín para un perfil: ayudas nuevas sin cerrar y BOE sobre sus temas, sin convenios ni planes de estudios. Si un tema no da resultados, lo vuelve a buscar por prefijo y lo indica. |
| Origen de los datos, estado de la caché y del calendario. |
| Publicaciones del BOE de un día, filtrables por palabras y sección. |
| Búsqueda en el BOE por rango de fechas, palabras y sección ( |
| Texto de una disposición del BOE. |
El servidor envía además instrucciones al modelo: qué herramienta usar para contar o para leer requisitos, y que cite códigos y avisos en lugar de completar con datos inventados.
6. Configuración
npx ayudas-es-mcp --help
npx ayudas-es-mcp --version
npx ayudas-es-mcp --vaciar-cacheVariables de entorno opcionales:
Variable | Qué controla | Por defecto |
| Ruta del archivo de caché |
|
| Pausa entre peticiones a la BDNS | 1000 |
| Tiempo máximo por petición | 30000 |
Caché
Las respuestas se guardan en disco (o solo en memoria si no se puede escribir) para no repetir peticiones. No es una copia de la BDNS: solo guarda lo ya consultado. La duración depende de cuánto puede cambiar cada dato:
Dato | Se guarda |
Totales y listados de un periodo cerrado hace más de 7 días | 1 semana |
Totales y listados que incluyen días recientes | 1 hora |
Ficha con plazo provisional (extracto sin publicar) | 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 | 1 semana |
Histórico de un año cerrado hace más de un mes (para el calendario, comprimido) | 6 meses |
Histórico del año en curso (para el calendario, comprimido) | 1 día |
El histórico del calendario ocupa unos 25 MB en disco (unos 4 MB por año).
7. Cómo funciona
Cada pregunta se traduce en consultas a la API oficial de la BDNS:
Totales exactos con una sola petición. La API devuelve cuántas coincidencias tiene 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» encontraría «instalación»). Se le envía la raíz de cada palabra y sobre su respuesta se aplican las reglas de palabra descritas más abajo.
Detalle solo de lo que se muestra. Plazo, presupuesto y tipo están en la ficha de cada convocatoria, que se pide únicamente al enseñarla.
Ritmo prudente. Como máximo una petición por segundo a la BDNS, que bloquea las ráfagas.
Búsqueda por palabras
Se busca en el título (y en el título cooficial en euskera, catalán o gallego), sin tildes, con
límite de palabra, singular y plural equivalentes («pyme» y «pymes») y prefijo con *
(«digital*» encuentra digitalización y digitales). Para temas amplios conviene usar finalidad.
Los términos habituales se amplían con sus sinónimos: «autónomos» encuentra también «por cuenta
propia» y «autoempleo»; «pymes», «pequeñas y medianas empresas» y «microempresa»; «vehículo
eléctrico», «movilidad eléctrica» y «MOVES». La lista está en src/texto.ts y solo recoge
equivalencias estrechas, revisadas sobre títulos reales. Deja fuera las palabras que suelen
formar parte del nombre de un organismo, como «empleo» en «Consejería de Empleo», porque añaden
sobre todo ruido. Las palabras de un sinónimo deben aparecer en orden y juntas, con como mucho
dos palabras en medio. La respuesta indica qué términos se han añadido, y con sinonimos: false
se busca solo lo escrito. Una palabra con * no se amplía. Fuera de la lista no hay búsqueda
semántica: «digitalización» no encuentra «transformación tecnológica».
Los sinónimos no cuestan peticiones de más: la API admite buscar «cualquiera de estas palabras», y el filtro exacto se aplica después.
Plazo 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 con reglas, sin IA:
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. |
«Hasta el 30 de noviembre de 2026», «31 de decembro», «1/3/27» | Abierta o cerrada según la fecha (castellano, gallego y catalán). |
«10 días hábiles desde el día siguiente a la publicación», con el extracto ya publicado | Fecha de fin calculada con el calendario. |
Lo mismo, con el extracto sin publicar | Pendiente de publicar. |
«Sin plazo de solicitud», «no procede», «nominativa» | No se puede solicitar. |
Varios plazos o inicio no estándar | Consultar: no se arriesga una fecha. |
El cálculo sigue la Ley 39/2015, art. 30: días hábiles sin sábados, domingos ni festivos; los
meses acaban el mismo día del mes de vencimiento; si el último día es inhábil, pasa al siguiente
hábil. Los festivos nacionales y autonómicos vienen de Nager.Date. Los
locales no se incluyen, y por eso la respuesta indica siempre que es un cálculo y cómo se hizo.
Los casos comprobados a mano están en src/plazos.test.ts.
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 cada documento se procesa una vez.
Elige el documento por su nombre: prefiere «texto íntegro» o «bases» a un anexo, un formulario o un acuerdo de aprobación. Si el elegido no se puede leer, 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). Distingue apartado (hay un título que corresponde) de mención (solo se nombra el tema).
Con
buscarypaginasse puede ir directamente a una palabra o a unas páginas cuando los apartados no se reconocen.Extrae las cantidades en euros, cada una con la frase en la que aparece.
El contenido del PDF se entrega marcado como texto literal de un documento externo, no como instrucciones.
Límites: no hay OCR (los PDF escaneados sin capa de texto no se leen), no se leen documentos Word u otros formatos, y de los archivos de más de 25 MB o 200 páginas solo se leen las primeras. Los apartados se detectan con reglas, así que conviene comprobar la página citada.
Calendario previsto
Se agrupan las convocatorias del mismo órgano con el mismo título sin años, fechas ni ediciones («XIV Premios X 2026» equivale a «XV Premios X 2027»). Las convocadas en tres o más años forman una serie con su fecha típica de registro y su variación. Se excluyen las nominativas, las directas y los convenios, que no se pueden solicitar.
Cada serie lleva una confianza (alta, media o baja) según los años que se ha convocado y lo regular que es su fecha. Baja un nivel si el año pasado se registró lejos de su fecha habitual, y no pasa de media si algún año no se convocó. La baja se oculta por defecto. Algunas series cambian de nombre o dejan de convocarse, así que la fecha prevista es una estimación. La herramienta calcula la evaluación con cada calendario y la muestra, para que la IA pueda decir cuánto fiarse.
El calendario necesita el histórico desde 2021. Se prepara en segundo plano la primera vez que se
usa una herramienta de ayudas, no al arrancar, y entretanto ayudas_previstas avisa de que se
está preparando en lugar de responder «no hay». La primera vez tarda alrededor de un minuto.
Cada año se guarda en cuanto se descarga: si el cliente se cierra a medias, la siguiente vez se
retoma con los años que faltaban. Al renovarse cada semana, solo se vuelve a descargar el año en
curso, unos 20 segundos.
8. Cómo se evita dar información errónea
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 |
|
Mezclar ayudas estatales con las de una comunidad | Cada ficha indica su ámbito, y las de toda España se marcan como «ESTATAL» aunque las convoque un organismo de otra comunidad. |
Ayudas que ya no se pueden pedir | Distingue cerradas, sin solicitud (concesión directa) y abiertas, y separa las instrumentales. |
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. |
«Hoy» equivocado de madrugada | Las fechas van en hora peninsular española, no en UTC. |
Una fuente lenta o caída | Cada petición tiene tiempo máximo y reintentos, también si la respuesta se corta a medias; un fallo puntual no tumba la respuesta, se avisa de lo que falta. |
Sinónimos que amplían de más | La respuesta dice qué términos se han añadido; con |
Calendario aún sin preparar | Dice que se está preparando, en vez de «0 ayudas recurrentes». |
Calendario sobre series con varias ayudas al año | Marca las series en las que el órgano registra varias 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. |
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, sin reintentos. |
9. Limitaciones conocidas
Estado de las ayudas. La BDNS no indica si una convocatoria está abierta (su campo
abiertoviene siempre afalsey sus filtros de abierta y tipo se ignoran en silencio), así que 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_directaslas estima por el título, por lo que no las detecta todas. Los recuentos sin ese filtro las incluyen y lo advierten.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 y puede tardar; repetido, sale de la caché.
Calendario. Predice el registro en la BDNS, no el plazo de solicitud, y no detecta una ayuda que cambie de nombre.
Comunidad. Una parte de las convocatorias no tiene 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.
Lectura de PDF. Sin OCR y por reglas, no por IA.
Varias instancias. El límite de una petición por segundo es por proceso: varios clientes abiertos a la vez suman su ritmo, aunque comparten la caché en disco.
10. 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 extremoDatos y licencia
El código se distribuye con licencia MIT (ver LICENSE).
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. Origen de los datos: Agencia Estatal Boletín Oficial del Estado, mediante su API de datos abiertos. Se reutilizan según su aviso legal, que permite el uso comercial y no comercial citando la fuente, con enlace a boe.es, y sin sugerir su respaldo.
Festivos. Nager.Date, API pública de festivos.
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 toolsayuda_detalleDetalle de una convocatoria de ayudaBRead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes | Código BDNS, p. ej. 932105 (lo devuelve ayudas_buscar) | |
| max_caracteres_extracto | No |
TDQS
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.
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.
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.
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.
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.
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 subvencionesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| desde | No | Registradas desde esta fecha (YYYY-MM-DD) | |
| hasta | No | Registradas hasta esta fecha (YYYY-MM-DD) | |
| texto | No | Palabras 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*'). | |
| limite | No | Por defecto 10 | |
| comunidad | No | Comunidad autónoma (incluye sus provincias y municipios) | |
| finalidad | No | Finalidad o sector de la ayuda | |
| instrumento | No | Tipo de ayuda: subvención, préstamo, garantía... | |
| beneficiario | No | '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_abiertas | No | Descartar las que ya han cerrado y las que no admiten solicitud (concesión directa o nominativa). Por defecto true. | |
| administracion | No | Nivel de la administración convocante | |
| excluir_directas | No | Excluir 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_estatales | No | Con 'comunidad', incluir también las ayudas de ámbito nacional. Por defecto true. |
TDQS
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.
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.
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.
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.
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.
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 ayudasARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| dias | No | Horizonte en días. Por defecto 60 | |
| texto | No | Palabras 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*'). | |
| limite | No | Por defecto 15 | |
| comunidad | No | Comunidad autónoma (incluye sus provincias y municipios) | |
| finalidad | No | Finalidad o sector de la ayuda | |
| instrumento | No | Tipo de ayuda: subvención, préstamo, garantía... | |
| beneficiario | No | '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. | |
| administracion | No | Nivel de la administración convocante | |
| incluir_estatales | No | Con 'comunidad', incluir también las ayudas de ámbito nacional. Por defecto true. | |
| incluir_retrasadas | No | Incluir las que ya deberían haber salido este año y no constan. Por defecto true. | |
| incluir_baja_confianza | No | Incluir las de fechas muy irregulares (error típico de ~2 meses). Por defecto false. |
TDQS
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.
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.
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.
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.
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.
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 ayudasARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| desde | No | Registradas desde esta fecha (YYYY-MM-DD) | |
| hasta | No | Registradas hasta esta fecha (YYYY-MM-DD) | |
| texto | No | Palabras 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*'). | |
| limite | No | Grupos a mostrar. Por defecto 20 | |
| comunidad | No | Comunidad autónoma (incluye sus provincias y municipios) | |
| finalidad | No | Finalidad o sector de la ayuda | |
| agrupar_por | Yes | ||
| instrumento | No | Tipo de ayuda: subvención, préstamo, garantía... | |
| beneficiario | No | '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. | |
| administracion | No | Nivel de la administración convocante | |
| excluir_directas | No | Excluir 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_estatales | No | Con 'comunidad', incluir también las ayudas de ámbito nacional. Por defecto true. |
TDQS
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.
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.
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.
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.
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.
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 convocatoriaARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| temas | No | Apartados 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 | |
| buscar | No | Palabras que deben aparecer todas en una página; devuelve el pasaje y su página. | |
| codigo | Yes | Código BDNS de la convocatoria | |
| paginas | No | Páginas a leer completas, p. ej. '3' o '3-5' (máximo 4 páginas). | |
| documento | No | Id del documento (de la lista que devuelve esta herramienta). Por defecto, el texto de la convocatoria. | |
| max_caracteres | No | Por defecto 9000 |
TDQS
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.
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.
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.
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.
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.
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 fechasARead-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'].
| Name | Required | Description | Default |
|---|---|---|---|
| desde | Yes | Fecha en formato YYYY-MM-DD | |
| hasta | No | YYYY-MM-DD. Por defecto, hoy. | |
| palabras | No | Palabras que deben aparecer todas | |
| secciones | No |
TDQS
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.
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.
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.
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.
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.
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 BOEARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identificador, p. ej. BOE-A-2026-21317 | |
| max_caracteres | No |
TDQS
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.
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.
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.
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.
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.
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íaARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| fecha | No | YYYY-MM-DD. Por defecto, hoy. | |
| palabras | No | Palabras que deben aparecer todas. Con '*' final, prefijo: 'enfermer*'. | |
| secciones | No |
TDQS
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.
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.
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.
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.
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.
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 datosARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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)BRead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| dias | No | Por defecto 7 | |
| palabras | No | Temas del perfil, p. ej. ['hostelería'] o ['vehículo eléctrico']. Se busca cada uno por separado. | |
| comunidad | No | Comunidad autónoma (incluye sus provincias y municipios) | |
| finalidad | No | Finalidad o sector de la ayuda | |
| beneficiario | No | '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
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.
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.
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.
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.
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.
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.
10 tool updates
v0.7.0- First observed
ayuda_detalle - First observed
ayuda_texto - First observed
ayudas_buscar - First observed
ayudas_previstas - First observed
ayudas_recuento - First observed
boe_buscar - First observed
boe_documento - First observed
boe_sumario_dia - First observed
estado_datos - First observed
novedades_perfil
TDQS
Scored across 10 tools
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.
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.
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.
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.
Maintenance
Related MCP Connectors
Search Spain's BOE/BORME gazettes, open EU funding calls and EU TED tenders. Keyless sources.
Subvenciones, licitaciones y boletines oficiales de España y Europa para tu IA. Gratis, sin login.
Search US grants + federal contracts (Grants.gov + SAM.gov) from any LLM.
Live EU funding data in your AI: grant calls, programmes, consortium partners, VCs, incubators.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP 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.265MIT
- FlicenseNot gradedqualityDmaintenanceEnables searching and retrieving details of over 500,000 Spanish government grants and subsidies from the official BDNS database, without requiring an API key.-
- AlicenseAqualityAmaintenanceEnables AI assistants and agents to query Spanish public statistics from INE, official BOE publications, and Catastro property data via typed, read-only tools with structured, source-citable results.8MIT
- AlicenseAqualityBmaintenanceEnables Claude, Cursor, and other MCP clients to search Spanish BOE/BORME gazettes, open and forthcoming EU funding calls, and TED public procurement notices through read-only tools that return live JSON with source links.31MIT