Skip to main content
Glama
joalavedra

fonts-andorra

by joalavedra

Fonts públiques d'Andorra

CI

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

afa-feeds

Andorran Financial Authority feeds

Finances i regulació

feed

bopa

Butlletí Oficial del Principat d'Andorra

Legislació i butlletins oficials

api, downloads

carburants

Fuel stations and reference prices

Energia i carburants

arcgis-rest

cass-estadistiques

CASS statistics downloads

Seguretat social

downloads

consell-general-feeds

Consell General news feeds

Parlament i informació cívica

feed

e-tramits

e-tramits procedures

Serveis públics i tràmits

html

estadistica-api

Andorra Department of Statistics API

Estadística oficial

api

govern-ad

Govern d'Andorra information pages

Serveis públics i tràmits

html

meteo-ad

meteo.ad station charts

Meteorologia i clima

html

sig-arcgis

Govern d'Andorra ArcGIS Enterprise

Geografia i cartografia

arcgis-rest

transparencia

Transparency portal

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-mcp

El 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-andorra

Configuració 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 --json

Els 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>.yaml conté les fitxes de les fonts.

  • schema/source.schema.json i schema/vocab.yaml defineixen el contracte de les fitxes i els vocabularis tancats.

  • indices/dead-routes.yaml recull els dominis que no responen, comprovats el 2026-10-02.

  • catalog.json, llms.txt i llms-full.txt es generen amb python scripts/build.py.

  • python scripts/validate.py comprova 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.py

CI

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 --baseline
  • Primera 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-2026 com 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 tools
bopa_documentC

Fetch and excerpt a BOPA document by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
offsetNo
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

feed_latestC

Return recent items from official parliamentary or AFA feeds.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerYes
limitNo
whereNo1=1

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

search_catalogC

Search the Andorra source catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
startNo
languageNoca
max_rowsNo
id_divisionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

tramitC

Read one e-tramits procedure page.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
langNoca

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.1.0
    • First observedbopa_document
    • First observedbopa_search
    • First observedfeed_latest
    • First observedgeo_query
    • First observedgovern_page
    • First observedgovern_search
    • First observedsearch_catalog
    • First observedsource
    • First observedstats_data
    • First observedstats_search
    • First observedtramit
    • First observedtramits_search

TDQS

C2.9/5.0

Scored across 12 tools

Disambiguation4/5

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 Consistency3/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for querying Spanish government open data APIs including grants, legislation, company registry, statistics, and open data catalog. Enables LLMs to access Spanish public information on-the-fly.
    26
    5
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Connects 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.
    8
    79 npm
    22
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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