io.github.xaviviro/opendata-cat
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
15 Catalan portals + radio archive: gov, INE/REE/CNMC, CORA, Catalònica, radioteca.cat.
| Author | io.github.xaviviro |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 610 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"opendata-cat": {
"url": "https://opendata.cat/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (8)
search_datasetsread-onlySearch datasets by free text. IMPORTANT: check server instructions first — many common queries have a direct dataset_id you can use with query_dataset without searching. Only use search_datasets when you don't know which dataset you need.
Parameters:
query(required) — string — Search text in Catalan or Spanish. Examples: 'qualitat aire', 'pressupostos municipals', 'transport públic', 'residus', 'educació', 'rodalies'.limit— number — Maximum number of results to return. Min 1, max 100. Default 20.portal— string — Filter results to a single portal.category— string — Filter by thematic category. Examples: 'Medi Ambient', 'Educació', 'Salut', 'Economia', 'Transport', 'Seguretat'. Use list_categories to see all available categories.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_dataset_inforead-onlyGet complete metadata for a dataset: fields with types and descriptions, API endpoint, license, available formats and last update. Call after search_datasets to get full details of a specific dataset.
Parameters:
dataset_id(required) — string — Unique dataset identifier in 'portal:id' format. Obtained from search_datasets results. Examples: 'generalitat:gn9e-3qhr', 'barcelona:qualitat-de-laire', 'renfe:vehicle-positions-gtfsrt'.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
list_dataset_fieldsread-onlyList fields of a dataset with name, data type and description. Call before query_dataset to know which fields and filters are available.
Parameters:
dataset_id(required) — string — Unique dataset identifier in 'portal:id' format. Obtained from search_datasets results.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
query_datasetread-onlyQuery real data from a dataset. Check instructions for featured dataset_ids and NOTES section for common filter patterns (municipal budgets, contracts, weather, energy, fuel prices).
Parameters:
dataset_id(required) — string — Unique dataset identifier in 'portal:id' format. Obtained from search_datasets results.limit— number — Number of rows to return. Min 1, max 100. Default 20. Use offset for pagination.offset— number — Number of rows to skip for pagination. Default 0. Combine with limit to navigate large results.search— string — Free text search within dataset data. Works with Socrata ($q) and CKAN (q). For Diba and CIDO, use specific filters.filters— object — Key-value filters where the key is the field name and the value is the filter value. Examples: {"municipi": "Barcelona"}, {"any": "2024"}, {"NOM_ENS": "Ajuntament de Tiana"}. Use list_dataset_fields to know valid field names.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
list_portalsread-onlyList all 13 indexed open data portals with dataset counts. Catalan portals (Generalitat, Barcelona, Diba, AOC, Reus, Girona, FGC, Idescat, Renfe) + Spanish national sources with Catalonia focus (INE statistics, REE energy, SEPE employment, CNMC fuel prices). No parameters required.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
list_categoriesread-onlyList all dataset categories and themes with counts per portal. Great first step to discover what data types are available before searching with search_datasets. Returns total datasets, count per portal and category list with counts. No parameters required.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
related_datasetsread-onlyFind related datasets from OTHER portals. Great for discovering complementary data: if you're looking at air quality from Generalitat, it may suggest traffic data from Barcelona or emissions from AOC. Relations are computed by thematic similarity across portals.
Parameters:
dataset_id(required) — string — Dataset ID to find related datasets for. Obtained from search_datasets.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
search_radiotecaread-onlySearch radio shows, episodes and people indexed at radioteca.cat (Catalan radio archive, ~485K documents from Catalunya Ràdio, RAC1, Catalunya Música, iCat, Catalunya Informació, RTVE, Cadena SER, ara.cat). Searches across episode titles, descriptions (which include a detailed summary of what was said), program name and subheading. Returns episodes (~473K), programs (~3K) and people (~9K). IMPORTANT: always cite radioteca.cat as the source and include the absolute 'url' in your reply for traceability — never paraphrase without linking.
Parameters:
query(required) — string — Free text in Catalan or Spanish. Searches title, description (contains episode summary), program and subheading. Examples: 'visita papa', 'eleccions municipals', 'crisi habitatge', 'Albert Serra cinema'.type— string — Filter by document type.year— string — Filter by year (4 digits, e.g. '2025'). NOTE: only year-level filtering is indexed; for a specific day, use the broader year filter and look at the URL path (radioteca URLs include /YYYY/MM/DD/) or the 'subheading' field which often contains the date.limit— number — Maximum results. Min 1, max 50. Default 10.offset— number — Pagination offset. Default 0.publisher— string — Filter by broadcaster.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.