fonts-andorra
This server exposes MCP tools to search, fetch, and query Andorra public sources, official documents, statistics, procedures, pages, geodata, and feeds.
Search the source catalog and retrieve individual source fiches by ID.
Search and fetch excerpted BOPA official bulletin documents, with optional date filters.
Search Andorra statistical tables and read rows from JSON-stat tables.
Search e-tramits procedures and read individual procedure pages.
Search Govern pages via a local index and fetch live Govern page excerpts.
Query curated ArcGIS layers and get recent items from parliamentary or AFA feeds.
Fetches live data from Govern d'Andorra ArcGIS Enterprise and fuel station FeatureServer layers, enabling querying of geographic and energy-related public sources while citing links and not redistributing layer content.
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., "@fonts-andorraQuant triga l'autorització inicial de residència i treball, amb font?"
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.
Fonts públiques d'Andorra
Catàleg educatiu i petits clients Python per trobar i consultar les fonts públiques d'Andorra. Documenta com són els endpoints, les condicions de reutilització, el comportament verificat i els paranys pràctics, i exposa una selecció de dades en directe a través de Python, un servidor MCP i un assistent que cita les fonts.
Projecte educatiu independent. No està afiliat al Govern d'Andorra ni a cap de les institucions esmentades.
Fonts
ID | Font | Sector | Accés |
| Finances i regulació | feed | |
| Legislació i butlletins oficials | api, downloads | |
| Energia i carburants | arcgis-rest | |
| Seguretat social | downloads | |
| Parlament i informació cívica | feed | |
| Serveis públics i tràmits | html | |
| Estadística oficial | api | |
| Serveis públics i tràmits | html | |
| Meteorologia i clima | html | |
| Geografia i cartografia | arcgis-rest | |
| Transparència i administració pública | html, downloads |
Les condicions de reutilització de cada font es detallen a Condicions de les dades d'origen i a cada fitxa de sources/.
Related MCP server: eRegulations MCP Server
Inici ràpid
Cal Python 3.10 o posterior:
python -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/fonts-andorra-mcpEl servidor MCP es comunica per stdio. Configura Claude Desktop, Claude Code o Cursor amb l'ordre instal·lada:
{
"mcpServers": {
"andorra-fonts-publiques": {
"command": "/absolute/path/to/andorra-fonts-publiques/.venv/bin/fonts-andorra-mcp"
}
}
}Instal·lar el servidor MCP
Executa el servidor publicat amb uvx:
uvx fonts-andorraConfiguració de Claude Desktop:
{
"mcpServers": {
"andorra": {
"command": "uvx",
"args": ["fonts-andorra"]
}
}
}Assistent amb cites
Fes una pregunta amb cites fent servir l'API REST de Gemini. Defineix GEMINI_API_KEY a l'entorn; mai no es desa en aquest repositori:
GEMINI_API_KEY=... .venv/bin/fonts-andorra-ask "Quant triga l'autorització inicial de residència i treball?"
.venv/bin/fonts-andorra-ask "Where can I find official unemployment statistics?" --lang en --jsonEls clients també es poden importar directament:
from fonts_andorra.clients.estadistica import data, search
tables = search("atur")
rows = data(1070) # Per defecte, startDate=1900 i endDate=2100.Condicions de les dades d'origen
El codi i el catàleg d'aquest repositori es dediquen al domini públic sota CC0-1.0. Això no canvia la llicència del material d'origen:
BOPA permet copiar, adaptar, extreure i redistribuir el contingut amb condicions: cal conservar la font i les metadades d'actualització, no desvirtuar-ne el sentit i no donar a entendre cap aval.
Les dades d'Estadística propietat del Departament d'Estadística són CC BY 4.0; les dades de tercers poden tenir condicions pròpies.
govern.ad, e-tràmits i Transparència són continguts del Govern amb tots els drets reservats. El projecte en descarrega el cos de les pàgines en directe, les cita i hi enllaça, però no en redistribueix el contingut. Per republicar-lo cal un consentiment per escrit. L'índex local del Govern només conté títols, URL i encapçalaments de secció.
Les capes ArcGIS i de carburants es tracten com a contingut del Govern amb tots els drets reservats perquè no s'indica cap llicència per element; el projecte les consulta en directe, n'enllaça la font i no en redistribueix el contingut.
Feeds, meteo.ad i CASS: les condicions per element no existeixen o no s'han revisat; consulta les condicions de l'editor abans de redistribuir-ne les dades.
El catàleg indica les fonts i les condicions una per una. Verifica les condicions de cada element abans de fer-ne un ús comercial o de republicar-lo.
Fitxers del catàleg
sources/<id>.yamlconté les fitxes de les fonts.schema/source.schema.jsonischema/vocab.yamldefineixen el contracte de les fitxes i els vocabularis tancats.indices/dead-routes.yamlrecull els dominis que no responen, comprovats el 2026-10-02.catalog.json,llms.txtillms-full.txtes generen ambpython scripts/build.py.python scripts/validate.pycomprova l'esquema de les fonts, els vocabularis i els identificadors de fonts relacionades.
Índex de cerca local
fonts_andorra/data/index.json conté els títols i URL d'e-tràmits i, del Govern, només títols, URL i encapçalaments de secció; el cos de totes les pàgines es descarrega en directe i es cita, perquè el contingut d'origen té tots els drets reservats. L'assistent cerca tràmits i pàgines del Govern amb BM25 en local i descarrega en directe les pàgines trobades; no fa servir el cercador del web del Govern, que està prohibit.
Per reconstruir-lo a partir d'e-tràmits i del sitemap en català del Govern, executa .venv/bin/python scripts/build_index.py; aquest generador necessita xarxa i, per això, no forma part de la CI.
Proves
Les proves funcionen sense connexió i fan servir respostes públiques desades:
.venv/bin/ruff check .
.venv/bin/pytest -q
python scripts/validate.py
python scripts/build.pyCI
ci.yml executa el lint, les proves sense connexió, la validació i la comprovació dels fitxers generats a cada push i pull request; live.yml fa comprovacions setmanals en directe i en penja un informe.
La comprovació de l'assistent de live.yml necessita el secret GEMINI_API_KEY al repositori.
Avaluació de l'assistent
evals/procedures.yaml conté 10 tràmits reals amb la resposta de referència (preu, termini màxim de resolució, període de sol·licitud i si cal anar-hi presencialment), presa de les pàgines d'e-tràmits el 2026-10-02. S'executa amb:
GEMINI_API_KEY=... .venv/bin/python evals/run.py --baselineÚltim resultat (evals/results-2026-10-03.md, gemini-2.5-flash): 10/10 casos superats amb el tràmit correcte citat i 18/18 dades correctes. El mateix model sense fonts n'encerta 3/18. Aquests 10 casos també es van fer servir per ajustar la cerca, així que s'han de considerar un joc de regressió i no pas una avaluació independent.
Joc reservat
evals/heldout.yaml conté 20 casos més, escrits un cop acabat l'ajust: 15 tràmits que no s'havien fet servir per ajustar (ca/es/fr/en) i 5 preguntes que cap font d'aquí no pot respondre (el temps, preus de forfets d'esquí, cues a la frontera, el telèfon personal d'un ministre i els dies de vacances de l'usuari), que l'assistent ha de declinar sense donar cap xifra.
GEMINI_API_KEY=... .venv/bin/python evals/run.py --cases evals/heldout.yaml --baselinePrimera execució (
evals/results-heldout-2026-10-03-first-run.md): 15/20 segons el puntuador. Tres errors eren del puntuador (no llegia cites escrites com[1, 2]i no reconeixia "no se encontró" com a resposta declinada). Tornant a puntuar les mateixes respostes surt 18/20. Els dos errors reals:El filtre de dades personals emmascarava dates com
23-09-2026com si fossin telèfons, i l'assistent no podia donar el període de sol·licitud. Ja està corregit.Per a "I'm selling my flat and need the habitability certificate", va respondre a partir de la cèdula d'habitabilitat (2 mesos) en lloc del certificat d'habitabilitat (72 hores). La pregunta és ambigua, perquè una venda necessita la cèdula.
Després de les correccions (
evals/results-heldout-2026-10-03.md): 20/20, 23/23 dades, 5/5 preguntes sense resposta declinades i 0 cites incorrectes. El mateix model sense fonts n'encerta 6/23. El cas de l'habitabilitat va passar perquè la cerca va retornar uns altres tràmits, no gràcies a cap correcció. La generació de paraules clau no és del tot determinista, així que aquest cas pot canviar.
A partir d'aquí aquest joc ja no és estrictament reservat: s'hi va trobar una correcció. Les noves fallades s'han de corregir amb casos nous.
La proposta d'una pàgina per al Govern és a docs/pitch.md.
Available Tools
12 toolsbopa_documentC
Fetch and excerpt a BOPA document by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| offset | No | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It doesn't state whether documents are pulled from a remote source, whether the name is a slug/id or a title, what happens when the name doesn't match, or how offset/max_chars affect the returned excerpt. 'Excerpt' hints at truncation but never says the default max_chars is 20000 or that content beyond it is cut.
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 short sentence with no waste, which is good, but its brevity is achieved by omitting necessary information rather than by being tight. It is under-specified rather than concise.
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?
An output schema exists, so return-shape description isn't strictly needed, but this is a document-retrieval tool with three parameters, no annotations, and no guidance on the search/fetch split. The description leaves the agent unsure how to call it correctly against bopa_search, so it is not complete enough.
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 0%, so the description must compensate and does not. It never explains that 'name' is the lookup key, nor the meaning of offset or max_chars – despite the schema offering only bare 'title' fields. Three underspecified parameters with zero description coverage is a substantial 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 verb (fetch) and resource (BOPA document) plus the lookup key (by name), so the action is identifiable. But it doesn't differentiate from siblings like bopa_search, which is presumably the way to find a document by content rather than fetch one already named. The boundary between the two is not drawn.
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?
There is no when-to-use guidance. The most important question an agent faces with a sibling called bopa_search present is when to search versus when to fetch directly, and the description says nothing about this. Offset/max_chars implying partial retrieval is never explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bopa_searchC
Search official bulletin documents.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| limit | No | ||
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it discloses nothing beyond the bare action. It says nothing about read-only safety, pagination/limit behavior, date-range semantics, or result ranking — 'search' implies read access but that is inference, not disclosure.
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 single sentence is front-loaded and free of waste, but at this length it is under-specification rather than conciseness. It is far too thin for a four-parameter search tool.
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?
An output schema exists so return values need no prose, but with zero annotation coverage and zero parameter documentation, the definition leaves the agent unable to call the tool correctly. Date-range filters and the text query's role are entirely 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?
Schema description coverage is 0% across four parameters (text, limit, date_from, date_to), so the description must compensate and does not. It never mentions the required text query, the limit default, or the date-range filter format, leaving every parameter undocumented in both structured and prose form.
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 ('Search') and resource ('official bulletin documents'), so an agent understands the operation. It does not, however, distinguish itself from siblings like bopa_document, govern_search, or search_catalog, which could plausibly cover similar ground.
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?
No when-to-use guidance, no exclusions, and no mention of the sibling alternatives (e.g., bopa_document for a single bulletin entry, govern_search for other official content). The agent must infer scope from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feed_latestC
Return recent items from official parliamentary or AFA feeds.
| Name | Required | Description | Default |
|---|---|---|---|
| feed | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about pagination, ordering, rate limits, caching, or failure modes. 'Recent' is undefined (time window? count?) and the read-only nature is only implied.
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. It is appropriately sized, though the brevity here reflects under-specification rather than efficient completeness.
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?
An output schema exists, so return shape need not be described, but the required, enum-less 'feed' parameter with 0% schema coverage leaves the agent unable to construct a valid call. The description should at minimum enumerate valid feed identifiers.
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 0% and both parameters are bare. The description's mention of 'parliamentary or AFA feeds' hints at the domain of the required 'feed' string but gives no accepted values, and it says nothing about 'limit' beyond the schema default.
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: return recent items from official parliamentary or AFA feeds. The 'latest'/recency scope is clear, but it does not name or differentiate itself from siblings like tramits_search, govern_search, or bopa_search, which also surface parliamentary content.
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?
No when-to-use guidance, no exclusions, and no alternatives named. An agent cannot tell from the description whether this is the preferred route for recent items versus running a targeted search via a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geo_queryC
Query a layer in the curated ArcGIS whitelist.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | Yes | ||
| limit | No | ||
| where | No | 1=1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only query and that only whitelisted layers are permitted, but says nothing about permissions/auth, rate limits, whether results are paginated, or how the whitelist is defined or discovered. For a query tool with zero annotation coverage this is a substantial gap.
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 padding, so it is concise. But it is concise by omission rather than by discipline: the sentence is too thin to serve the tool, which is under-specification rather than good editing.
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 a 3-parameter tool with no annotations, 0% schema coverage, and no title, the description is not complete enough to invoke correctly. An output schema exists so return values need not be explained, but the meaning of the whitelist, the filter syntax, and result limiting are all 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 0% across 3 parameters, so the description must compensate and does not. It loosely ties "layer" to the whitelist but leaves "limit" (default 50) and especially "where" (a SQL-style filter defaulting to "1=1") completely unexplained, including syntax and whether it is injection-safe.
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 verb ("Query") and resource ("a layer"), and adds a scoping constraint via "curated ArcGIS whitelist," so the purpose is discernible. However, it never explains what a "layer" or the whitelist is, and gives no differentiation from the many sibling tools (search_catalog, bopa_search, stats_search, etc.). It is adequate but vague.
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?
There is no statement of when to use this tool, when not to, or which sibling to prefer for alternative geospatial or catalog needs. The only implicit guidance is that the layer must be in the whitelist, which is a constraint rather than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govern_pageB
Fetch one live Govern page and excerpt its sections.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does usefully signal that the fetch is live (not cached) and that content is returned as an excerpt rather than the full page, but it says nothing about authentication requirements, rate limits, failures on missing pages, or how 'sections' are selected.
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 zero filler; the resource and the verb come first. It is efficient, though the extreme brevity leaves it under-specified rather than optimally scoped.
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?
An output schema exists, so return values need not be explained. However, with no annotations, no parameter documentation, and no usage guidance, the definition is only minimally sufficient for an agent to invoke this tool confidently.
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 0%, so the description must compensate. It implies url targets a single live Govern page, but gives no format hints (absolute vs relative, domain scope) and never addresses max_chars, which controls the truncation behavior mentioned as 'excerpt'.
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 (fetch) and resource (one live Govern page) plus a secondary behavior (excerpt its sections). This implicitly separates it from the sibling govern_search, which searches rather than retrieves a single page, though it never names that distinction 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?
There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternative govern_search for discovery-style queries. The word 'one' hints at single-page scope but leaves routing to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govern_searchB
Search Govern pages in the committed local index.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. 'Committed local index' usefully signals that results come from a pre-built index rather than live/local-uncommitted content, but there is no mention of authentication, result ordering, pagination, or freshness beyond that phrase.
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, which is appropriate for a simple two-parameter search. It is efficient, though its brevity borders on under-specification.
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?
An output schema exists, so return values need not be described, and the tool is low-complexity. However, with zero annotation and zero parameter-documentation coverage, the definition leaves the query mechanics and result limits unexplained.
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 0% and the description says nothing about the two parameters. It never clarifies that 'text' is the query string or what 'limit' controls (e.g., max results), so it fails to compensate for the schema 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 (Search) and resource (Govern pages), plus a scoping qualifier (committed local index) that separates it from siblings like search_catalog, bopa_search, stats_search, and tramits_search. It does not explicitly name an alternative, so it falls just short of the top band.
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?
There is no guidance on when to use this versus the other search siblings or govern_page. The only implied condition is the Govern domain, which the agent must infer from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_catalogC
Search the Andorra source catalog.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It does not state whether this is read-only (implied by search, but not explicit), how results are returned, whether the catalog is comprehensive, or any rate limits. It adds almost nothing beyond the name.
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?
One sentence, front-loaded with the verb and resource. No waste, but also no useful elaboration. For a tool with this many unknowns, being this short is a weakness, not a strength.
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 no annotations, 0% schema description coverage, and a rich set of sibling tools, the description is far too thin. It does not explain the catalog contents, the search semantics, or how it relates to the other search tools. The presence of an output schema reduces the need to describe return values, but many other gaps remain.
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 0%, so the description must compensate for both parameters. It says nothing about what 'query' searches (full text? identifiers?) or what 'limit' controls (max results? pagination size?). This is a severe 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 and resource ('Search the Andorra source catalog'), which is clearer than a tautology. However, it does not distinguish this tool from siblings like bopa_search, stats_search, or govern_search, which all appear to be domain-specific search tools within the same ETL system.
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?
No guidance on when to use this tool versus the sibling search tools (bopa_search, stats_search, govern_search). The agent is left to guess that 'search_catalog' is a general catalog lookup while the others are domain-specific.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sourceC
Return one source fiche by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Return' implies a read-only lookup, but the description says nothing about permissions, what happens when the id does not exist, or whether the fiche is scoped to a user or tenant.
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 short sentence with the action front-loaded and no filler. It is appropriately sized for a one-parameter lookup, though it is terse to the point of underspecification.
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?
An output schema exists, so return values need not be described, and the tool is a simple single-item fetch. Still, for a tool with no annotations the description should at minimum clarify what a 'source fiche' is and how the id is obtained.
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?
With one parameter and 0% schema description coverage, the description must compensate. It only says 'by id', which merely restates the parameter name without adding format, provenance, or expected source of the id value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb ('Return') and a scope ('one source fiche by id'), which implicitly contrasts with the sibling search tools that return sets. However, 'source fiche' is unexplained domain jargon, so an agent cannot be fully certain what resource is being fetched or how it differs from bopa_document or tramit.
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?
There is no statement of when to use this tool versus the many search siblings (search_catalog, bopa_search, govern_search, etc.). The only implied guidance is 'by id', which suggests use after a search has produced an id, but that inference is left entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats_dataC
Read rows from a JSON-stat table.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| language | No | ca | |
| max_rows | No | ||
| id_division | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden but supplies almost nothing. It does not disclose pagination/truncation behavior (max_rows defaults to 200), the effect of start/end date filtering, the language default, or whether the call is read-only and safe — all of which matter for a data-reading tool with five parameters.
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 single sentence is front-loaded and wastes no words, which keeps it readable. But it is under-specified rather than truly concise: brevity here reflects missing content, not efficient communication.
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?
An output schema exists, so return values need not be explained. Still, with no annotations, no parameter documentation, and no usage guidance for a five-parameter tool with one required argument, the definition is not complete enough for reliable 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 description coverage is 0% across five parameters, and the description mentions none of them. Critical semantics — what id_division refers to, the date format for start/end, the meaning of language and max_rows — are undocumented in both the schema and the description, leaving the agent unable to populate arguments correctly.
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 verb ("Read") and a resource ("rows from a JSON-stat table"), so the basic purpose is identifiable. However, "JSON-stat table" is jargon left unexplained, and there is no differentiation from the sibling stats_search, which an agent would need to disambiguate a data-fetch tool from a search tool.
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?
There is no guidance on when to use this tool versus stats_search or other siblings, nor any stated preconditions (e.g., needing an id_division obtained from stats_search). The agent must infer the entire usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats_searchC
Search Andorra statistical tables.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| language | No | ca |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, but it only states that the tool searches. It does not disclose whether the operation is read-only, requires authentication, has rate limits, or how results are ranked or paginated. The implicit read-only nature of 'search' is the only behavioral signal.
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 a single front-loaded sentence with no wasted words. It is concise, though the extreme brevity reflects missing information rather than optimal economy.
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?
An output schema exists, so return values need not be described, but the definition still omits usage guidance, parameter semantics, and sibling differentiation. For a two-parameter search tool with no annotations and 0% schema coverage, this leaves meaningful gaps 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 description coverage is 0%, so the schema itself provides no meaning for the 'text' and 'language' parameters. The description does not mention either parameter, leaving default language behavior and expected input format entirely unexplained.
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 clear verb ('Search') and resource ('Andorra statistical tables'), so the basic purpose is identifiable. However, it does not differentiate this tool from siblings such as stats_data or search_catalog, leaving the agent to infer the distinction.
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?
There is no guidance about when to use this tool versus alternatives, nor any prerequisites or context for selection. The only implied usage is that it performs a search, which is already evident from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tramitC
Read one e-tramits procedure page.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| lang | No | ca |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. 'Read' implies a non-mutating operation, but nothing is said about authentication, rate limits, or whether a missing/invalid code errors out. It discloses almost nothing beyond the implied read-only nature.
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 short, front-loaded sentence with no wasted words. It is efficient, though its brevity borders on under-specification rather than true conciseness.
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?
An output schema exists, so return values need no explanation, but for a tool with two undocumented parameters and zero annotations the description should say more about the required 'code' and the 'lang' option. As written, an agent cannot confidently construct a call.
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 0%, so both parameters ('code' and 'lang') are undocumented in the schema. The description only indirectly hints that the code identifies the procedure page; it never explains the code format, what 'lang' controls, or that 'lang' defaults to Catalan.
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 (read) and resource (e-tramits procedure page), and the word 'one' signals single-record retrieval as opposed to the sibling tramits_search. It is clear enough to distinguish the fetch from the search, though the fragmentary phrasing adds no scope detail.
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?
There is no explicit when-to-use guidance, no mention of prerequisites, and no reference to the sibling tramits_search. At best 'one ... page' weakly implies a single-item lookup rather than a search, which is inference rather than guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tramits_searchC
Search e-tramits procedures.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not state that this is a read-only lookup, describe matching behavior (full-text vs keyword), ranking, pagination behavior implied by 'limit', or any auth/rate constraints. The output schema exists, so return shape need not be explained, but the search semantics remain opaque.
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?
It is a single short, front-loaded sentence with zero padding, which is efficient. But the brevity is achieved by omission rather than by tight editing of substantive content, so it is concise without being informative.
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 two-parameter search tool with an output schema present, the description should at least clarify the searched corpus and what the required 'text' parameter expects. Instead it provides neither usage context nor parameter meaning, leaving the agent under-equipped to invoke it correctly against its many search siblings.
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 0% for both parameters, and the description adds nothing about them. What 'text' should contain (free text, procedure code, exact phrase?) and what 'limit' bounds is left entirely undocumented, so the description fails to compensate for the schema 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 gives a verb ('Search') and a resource ('e-tramits procedures'), so the basic operation is identifiable. However, 'e-tramits' is unexplained domain jargon, and nothing distinguishes this from the many other search siblings (bopa_search, stats_search, govern_search, search_catalog). An agent cannot tell which corpus this covers without external knowledge.
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?
There is no guidance on when to use this tool versus the numerous sibling searches, nor any exclusions or prerequisites. The agent must infer usage purely from the name 'tramits' and its vague relationship to the sibling 'tramit'.
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.
12 tool updates
v0.1.0- First observed
bopa_document - First observed
bopa_search - First observed
feed_latest - First observed
geo_query - First observed
govern_page - First observed
govern_search - First observed
search_catalog - First observed
source - First observed
stats_data - First observed
stats_search - First observed
tramit - First observed
tramits_search
TDQS
Scored across 12 tools
Most tools are clearly paired as search/read operations per domain (BOPA, stats, tramits, govern), making selection straightforward. Minor risk: 'tramits_search' vs singular 'tramit', and 'search_catalog' vs 'source' could briefly blur catalog search vs direct fiche retrieval.
Naming mixes verb_noun, noun_verb, and bare noun forms (search_catalog, source, bopa_search, tramit, geo_query, feed_latest), so conventions are readable but inconsistent. Domain prefixes are used for several families but not uniformly.
12 tools map neatly to source families with a search/read pair, which is well within a reasonable range. No obvious filler tools are present.
The set provides search+fetch for major Andorra domains and covers feeds and geo querying. Minor gaps exist, such as no layer listing for geo_query or item-level feed retrieval, but core workflows are covered.
Maintenance
Related MCP Connectors
Sourced answers on FR/EU rules + French company search (SIREN, NAF) for agents, quoted and budgeted
Swiss federal law (Fedlex) and political data (LINDAS) for agents, every answer with sources
Cited answers about Switzerland from official federal, cantonal and municipal sources.
Resolve, search and verify legal citations against the official sources, with provenance.
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
- AlicenseAqualityDmaintenanceProvides structured access to eRegulations API data, enabling querying of administrative procedures, steps, requirements, and costs through natural language.319 npmMIT
- AlicenseAqualityCmaintenanceConnects LLMs to over 2,850 datasets from 13 Catalan and Spanish open data portals, enabling natural language search and real-time queries of public data.879 npm22MIT
- AlicenseNot gradedqualityCmaintenanceEnables to explore and analyze the Catalunya 2022 strategic plan document, including full-text search, section retrieval, and structured access to goals, actions, and contributor profiles in Catalan, English, and Spanish.MIT