Callejear Madrid
Server Details
Catálogo oficial de 9.400 vías de Madrid y métricas parciales de servicios a 500 m.
The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 0.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Each tool targets a clearly distinct function: search_streets for discovery, get_street_context for single-point service records, compare_streets for multi-point comparison, and get_coverage for coverage metadata. Descriptions explicitly delimit scope and limitations, leaving little overlap.
All tools share the callejear_ prefix and follow a predictable verb_noun or verb_noun_phrase pattern in snake_case. The convention is uniform across the set.
Four tools cover search, context, comparison, and coverage for a focused read-only pilot, with each tool earning its place. The count sits comfortably within the ideal 3–15 range.
The read-only pilot covers discovery, single-street context, comparison, and coverage metadata, but lacks a direct street-detail operation beyond point-context and search. These are minor gaps consistent with the stated pilot limitations.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
callejear_compare_streets26 fields changed- changed
Input schema / properties / street_ids / items / patternPrevious value: -"^legacy:calle:[1-9][0-9]{0,11}$"New value: +"^(?:legacy:calle:|es:28079:via:)[1-9][0-9]{0,11}$" - changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "out_of_coverage", - "street_not_available", - "invalid_cursor", - "data_unavailable", - "quota_exceeded", - "response_too_large", - "busy", - "timeout", - "disabled" -]New value: +[ + "out_of_coverage", + "street_not_available", + "invalid_cursor", + "duplicate_street", + "data_unavailable", + "quota_exceeded", + "response_too_large", + "busy", + "timeout", + "disabled" +] - changed
Output schema / properties / result / properties / differences / items / properties / left_id / patternPrevious value: -"^legacy:calle:[1-9][0-9]{0,11}$"New value: +"^(?:legacy:calle:|es:28079:via:)[1-9][0-9]{0,11}$" - changed
Output schema / properties / result / properties / differences / items / properties / right_id / patternPrevious value: -"^legacy:calle:[1-9][0-9]{0,11}$"New value: +"^(?:legacy:calle:|es:28079:via:)[1-9][0-9]{0,11}$" - added
Output schema / properties / result / properties / rows / items / properties / metrics / items / properties / reference_geometry / anyOfAdded value: +[ + { + "const": "representative_point", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / rows / items / properties / metrics / items / properties / reference_geometry / constRemoved value: -"representative_point" - removed
Output schema / properties / result / properties / rows / items / properties / metrics / items / properties / reference_geometry / typeRemoved value: -"string" - added
Output schema / properties / result / properties / rows / items / properties / street / properties / canonical_url / anyOfAdded value: +[ + { + "pattern": "^https:\\/\\/callejear\\.com\\/madrid\\/madrid\\/[a-z0-9-]+\\/$", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / rows / items / properties / street / properties / canonical_url / patternRemoved value: -"^https:\\/\\/callejear\\.com\\/madrid\\/madrid\\/[a-z0-9-]+\\/$" - removed
Output schema / properties / result / properties / rows / items / properties / street / properties / canonical_url / typeRemoved value: -"string" - changed
Output schema / properties / result / properties / rows / items / properties / street / properties / id / patternPrevious value: -"^legacy:calle:[1-9][0-9]{0,11}$"New value: +"^(?:legacy:calle:|es:28079:via:)[1-9][0-9]{0,11}$" - added
Output schema / properties / result / properties / rows / items / properties / street / properties / identity / properties / source_way_id / anyOfAdded value: +[ + { + "pattern": "^[0-9]+$", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / rows / items / properties / street / properties / identity / properties / source_way_id / patternRemoved value: -"^[0-9]+$" - removed
Output schema / properties / result / properties / rows / items / properties / street / properties / identity / properties / source_way_id / typeRemoved value: -"string" - removed
Output schema / properties / result / properties / rows / items / properties / street / properties / identity / properties / status / constRemoved value: -"spatially_supported" - added
Output schema / properties / result / properties / rows / items / properties / street / properties / identity / properties / status / enumAdded value: +[ + "spatially_supported", + "official_register", + "official_name_conflict" +] - added
Output schema / properties / result / properties / rows / items / properties / street / properties / location_methodAdded value: +{ + "enum": [ + "official_surface_interior", + "unavailable" + ], + "type": "string" +} - added
Output schema / properties / result / properties / rows / items / properties / street / properties / name_variantsAdded value: +{ + "items": { + "maxLength": 180, + "minLength": 1, + "type": "string" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" +} - added
Output schema / properties / result / properties / rows / items / properties / street / properties / point / anyOfAdded value: +[ + { + "prefixItems": [ + { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + { + "maximum": 180, + "minimum": -180, + "type": "number" + } + ], + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / rows / items / properties / street / properties / point / prefixItemsRemoved value: -[ - { - "maximum": 90, - "minimum": -90, - "type": "number" - }, - { - "maximum": 180, - "minimum": -180, - "type": "number" - } -] - removed
Output schema / properties / result / properties / rows / items / properties / street / properties / point / typeRemoved value: -"array" - added
Output schema / properties / result / properties / rows / items / properties / street / properties / reference_geometry / anyOfAdded value: +[ + { + "const": "representative_point", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / rows / items / properties / street / properties / reference_geometry / constRemoved value: -"representative_point" - removed
Output schema / properties / result / properties / rows / items / properties / street / properties / reference_geometry / typeRemoved value: -"string" - removed
Output schema / properties / schema_version / constRemoved value: -"1.0" - added
Output schema / properties / schema_version / enumAdded value: +[ + "1.0", + "2.0" +]
- Changed
callejear_get_coverage7 fields changed- changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "out_of_coverage", - "street_not_available", - "invalid_cursor", - "data_unavailable", - "quota_exceeded", - "response_too_large", - "busy", - "timeout", - "disabled" -]New value: +[ + "out_of_coverage", + "street_not_available", + "invalid_cursor", + "duplicate_street", + "data_unavailable", + "quota_exceeded", + "response_too_large", + "busy", + "timeout", + "disabled" +] - added
Output schema / properties / result / properties / catalogAdded value: +{ + "additionalProperties": false, + "properties": { + "catalog_status": { + "const": "complete_official_snapshot", + "type": "string" + }, + "located_records": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "name_conflicts": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "official_records": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "represented_records": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "retrieved_at": { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "type": "string" + }, + "source_rows": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "source_sha256": { + "pattern": "^[a-f0-9]{64}$", + "type": "string" + }, + "source_updated_at": { + "anyOf": [ + { + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "source_url": { + "format": "uri", + "maxLength": 500, + "type": "string" + }, + "unlocated_records": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "catalog_status", + "official_records", + "represented_records", + "located_records", + "unlocated_records", + "name_conflicts", + "source_rows", + "source_url", + "source_sha256", + "source_updated_at", + "retrieved_at" + ], + "type": "object" +} - added
Output schema / properties / result / properties / reference_geometry / anyOfAdded value: +[ + { + "const": "representative_point", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / reference_geometry / constRemoved value: -"representative_point" - removed
Output schema / properties / result / properties / reference_geometry / typeRemoved value: -"string" - removed
Output schema / properties / schema_version / constRemoved value: -"1.0" - added
Output schema / properties / schema_version / enumAdded value: +[ + "1.0", + "2.0" +]
- Changed
callejear_get_street_context24 fields changed- changed
Input schema / properties / street_id / patternPrevious value: -"^legacy:calle:[1-9][0-9]{0,11}$"New value: +"^(?:legacy:calle:|es:28079:via:)[1-9][0-9]{0,11}$" - changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "out_of_coverage", - "street_not_available", - "invalid_cursor", - "data_unavailable", - "quota_exceeded", - "response_too_large", - "busy", - "timeout", - "disabled" -]New value: +[ + "out_of_coverage", + "street_not_available", + "invalid_cursor", + "duplicate_street", + "data_unavailable", + "quota_exceeded", + "response_too_large", + "busy", + "timeout", + "disabled" +] - added
Output schema / properties / result / properties / metrics / items / properties / reference_geometry / anyOfAdded value: +[ + { + "const": "representative_point", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / metrics / items / properties / reference_geometry / constRemoved value: -"representative_point" - removed
Output schema / properties / result / properties / metrics / items / properties / reference_geometry / typeRemoved value: -"string" - added
Output schema / properties / result / properties / street / properties / canonical_url / anyOfAdded value: +[ + { + "pattern": "^https:\\/\\/callejear\\.com\\/madrid\\/madrid\\/[a-z0-9-]+\\/$", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / street / properties / canonical_url / patternRemoved value: -"^https:\\/\\/callejear\\.com\\/madrid\\/madrid\\/[a-z0-9-]+\\/$" - removed
Output schema / properties / result / properties / street / properties / canonical_url / typeRemoved value: -"string" - changed
Output schema / properties / result / properties / street / properties / id / patternPrevious value: -"^legacy:calle:[1-9][0-9]{0,11}$"New value: +"^(?:legacy:calle:|es:28079:via:)[1-9][0-9]{0,11}$" - added
Output schema / properties / result / properties / street / properties / identity / properties / source_way_id / anyOfAdded value: +[ + { + "pattern": "^[0-9]+$", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / street / properties / identity / properties / source_way_id / patternRemoved value: -"^[0-9]+$" - removed
Output schema / properties / result / properties / street / properties / identity / properties / source_way_id / typeRemoved value: -"string" - removed
Output schema / properties / result / properties / street / properties / identity / properties / status / constRemoved value: -"spatially_supported" - added
Output schema / properties / result / properties / street / properties / identity / properties / status / enumAdded value: +[ + "spatially_supported", + "official_register", + "official_name_conflict" +] - added
Output schema / properties / result / properties / street / properties / location_methodAdded value: +{ + "enum": [ + "official_surface_interior", + "unavailable" + ], + "type": "string" +} - added
Output schema / properties / result / properties / street / properties / name_variantsAdded value: +{ + "items": { + "maxLength": 180, + "minLength": 1, + "type": "string" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" +} - added
Output schema / properties / result / properties / street / properties / point / anyOfAdded value: +[ + { + "prefixItems": [ + { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + { + "maximum": 180, + "minimum": -180, + "type": "number" + } + ], + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / street / properties / point / prefixItemsRemoved value: -[ - { - "maximum": 90, - "minimum": -90, - "type": "number" - }, - { - "maximum": 180, - "minimum": -180, - "type": "number" - } -] - removed
Output schema / properties / result / properties / street / properties / point / typeRemoved value: -"array" - added
Output schema / properties / result / properties / street / properties / reference_geometry / anyOfAdded value: +[ + { + "const": "representative_point", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / street / properties / reference_geometry / constRemoved value: -"representative_point" - removed
Output schema / properties / result / properties / street / properties / reference_geometry / typeRemoved value: -"string" - removed
Output schema / properties / schema_version / constRemoved value: -"1.0" - added
Output schema / properties / schema_version / enumAdded value: +[ + "1.0", + "2.0" +]
- Changed
callejear_search_streets21 fields changed- changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "out_of_coverage", - "street_not_available", - "invalid_cursor", - "data_unavailable", - "quota_exceeded", - "response_too_large", - "busy", - "timeout", - "disabled" -]New value: +[ + "out_of_coverage", + "street_not_available", + "invalid_cursor", + "duplicate_street", + "data_unavailable", + "quota_exceeded", + "response_too_large", + "busy", + "timeout", + "disabled" +] - added
Output schema / properties / result / properties / noticeAdded value: +{ + "maxLength": 2000, + "minLength": 1, + "type": "string" +} - added
Output schema / properties / result / properties / streets / items / properties / canonical_url / anyOfAdded value: +[ + { + "pattern": "^https:\\/\\/callejear\\.com\\/madrid\\/madrid\\/[a-z0-9-]+\\/$", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / streets / items / properties / canonical_url / patternRemoved value: -"^https:\\/\\/callejear\\.com\\/madrid\\/madrid\\/[a-z0-9-]+\\/$" - removed
Output schema / properties / result / properties / streets / items / properties / canonical_url / typeRemoved value: -"string" - changed
Output schema / properties / result / properties / streets / items / properties / id / patternPrevious value: -"^legacy:calle:[1-9][0-9]{0,11}$"New value: +"^(?:legacy:calle:|es:28079:via:)[1-9][0-9]{0,11}$" - added
Output schema / properties / result / properties / streets / items / properties / identity / properties / source_way_id / anyOfAdded value: +[ + { + "pattern": "^[0-9]+$", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / streets / items / properties / identity / properties / source_way_id / patternRemoved value: -"^[0-9]+$" - removed
Output schema / properties / result / properties / streets / items / properties / identity / properties / source_way_id / typeRemoved value: -"string" - removed
Output schema / properties / result / properties / streets / items / properties / identity / properties / status / constRemoved value: -"spatially_supported" - added
Output schema / properties / result / properties / streets / items / properties / identity / properties / status / enumAdded value: +[ + "spatially_supported", + "official_register", + "official_name_conflict" +] - added
Output schema / properties / result / properties / streets / items / properties / location_methodAdded value: +{ + "enum": [ + "official_surface_interior", + "unavailable" + ], + "type": "string" +} - added
Output schema / properties / result / properties / streets / items / properties / name_variantsAdded value: +{ + "items": { + "maxLength": 180, + "minLength": 1, + "type": "string" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" +} - added
Output schema / properties / result / properties / streets / items / properties / point / anyOfAdded value: +[ + { + "prefixItems": [ + { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + { + "maximum": 180, + "minimum": -180, + "type": "number" + } + ], + "type": "array" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / streets / items / properties / point / prefixItemsRemoved value: -[ - { - "maximum": 90, - "minimum": -90, - "type": "number" - }, - { - "maximum": 180, - "minimum": -180, - "type": "number" - } -] - removed
Output schema / properties / result / properties / streets / items / properties / point / typeRemoved value: -"array" - added
Output schema / properties / result / properties / streets / items / properties / reference_geometry / anyOfAdded value: +[ + { + "const": "representative_point", + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / result / properties / streets / items / properties / reference_geometry / constRemoved value: -"representative_point" - removed
Output schema / properties / result / properties / streets / items / properties / reference_geometry / typeRemoved value: -"string" - removed
Output schema / properties / schema_version / constRemoved value: -"1.0" - added
Output schema / properties / schema_version / enumAdded value: +[ + "1.0", + "2.0" +]
4 tool updates
- First observed
callejear_compare_streets - First observed
callejear_get_coverage - First observed
callejear_get_street_context - First observed
callejear_search_streets
Related MCP Connectors
Catastro espanol en JSON limpio: inmuebles por referencia catastral, coordenadas o direccion.
Data by municipality near Barcelona and Madrid: €/m², IBI, rent, minutes. Every figure sourced
Mismo servidor que el listado oficial actualizado: https://glama.ai/mcp/connectors/io.github.jotamed/itv-quiosco . ITV España y farmacias de guardia de Madrid ciudad gratis. Este listado duplicado se conserva solo como referencia; usa el listado oficial para los siete tools actuales.
Market sizing, prices, rents, crime and locations in Spain from INE and other public data
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceServidor MCP (roadmap L5) sobre los endpoints públicos de emap. No existe otro MCP de movilidad hiperlocal: búsqueda semántica local ES/EU, contexto de lugar, rutas multimodales con infraestructura propia (OSRM/OTP) y "el monte en transporte público".Apache 2.0
- AlicenseAqualityCmaintenanceOfficial MCP server by RefCatastral.es to query Spanish Cadastre (Catastro) data, reverse geocode GPS coordinates to cadastral parcels, and access official WMS cartography in real time.3MIT
- AlicenseNot gradedqualityCmaintenanceEnables agents to find Spanish public datasets from central, regional and local government, get their verified endpoints, required API code lists, identifier joins and build recipes, and check whether a remembered URL is a known dead route. Every record surfaces the silent traps, quirks and licence terms that corrupt a number without raising an error.MIT
- AlicenseAqualityDmaintenanceMCP server for the Spanish Cadastre, enabling local queries of official INSPIRE parcel data (area, geometry, neighboring parcels, searches) and online queries to the OVC and electronic headquarters for additional details, with rate limiting and caching.1013 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.