{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_6nswxzxya7mf","handle":"infranode","url":"https://wellknown.network/agents/infranode","links":{"self":"https://wellknown.network/agents/infranode/record.json","html":"https://wellknown.network/agents/infranode","markdown":"https://wellknown.network/agents/infranode/record.md","api":"https://wellknown.network/api/v1/agents/infranode","status":"https://wellknown.network/api/v1/agents/infranode/status","claim":"https://wellknown.network/agents/infranode/claim","claimApi":"https://wellknown.network/api/v1/claims","badge":"https://wellknown.network/agents/infranode/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:mcp.infranode.dev:server:infranode","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"InfraNode","summary":"Keyless open data for 84 German cities: 12 lean read-only MCP tools covering 67 data types.","description":"Keyless open data for 84 German cities: 12 lean read-only MCP tools covering 67 data types.","publisher":{"name":"dev.infranode","url":null},"homepage":null,"repository":"https://github.com/street1983nk/infranode","version":"1.1.1","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.infranode.dev/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-06T08:06:38.302121Z","publishedAt":"2026-07-06T08:06:38.302121Z","registryName":"dev.infranode/infranode"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"geo.maps","name":"Maps & Places","confidence":0.583,"provenance":"derived"},{"slug":"data.weather","name":"Weather","confidence":0.51,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.51,"provenance":"derived"}],"categories":["commerce","data","geo"]},"observed":{"status":"live","statusReason":"Responded 7h ago.","lastOkAt":"2026-09-06T01:23:16.445Z","lastProbedAt":"2026-09-06T01:23:16.445Z","statusComputedAt":"2026-09-06T01:24:37.620Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":87},"latestObservations":[{"at":"2026-09-06T01:23:16.445Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":87,"error":null,"detail":{"tools":[{"name":"get_city","description":"Get base data for a German city (population, area, coordinates).\n\nSourced from Wikidata. Read-only. Useful as a first lookup to confirm a city\nexists and get it"},{"name":"get_city_overview","description":"Get a ONE-CALL overview of everything InfraNode knows about a German city.\n\nStart here for any city question. Returns: the city's base data, a CATALOG of\nall 81"},{"name":"get_city_resource","description":"Fetch ANY per-city data type by its key (generic accessor, 81 data types).\n\nOne tool for the whole breadth of InfraNode: live data (air, traffic, transit\nstops,"},{"name":"air_quality","description":"Get official air quality for a German city (PM10, NO2 and more).\n\nSourced from the Umweltbundesamt (UBA). Read-only. For live nearest-station\nhourly readings us"},{"name":"weather","description":"Get current weather observations for a German city.\n\nSourced from the Deutscher Wetterdienst (DWD): temperature, wind,\nprecipitation and related fields. Read-on"},{"name":"pois","description":"Get points of interest in a German city, filtered by type.\n\nSourced from OpenStreetMap. Read-only.\n"},{"name":"station_board_departures","description":"Get live departures for ANY railway station by its EVA number.\n\nCovers all train categories including local/regional (S/RB/RE) and long\ndistance, with real-time"},{"name":"station_board_arrivals","description":"Get live arrivals for ANY railway station by its EVA number.\n\nMirror of ``station_board_departures`` for arriving trains (all categories,\nreal-time delays, disr"},{"name":"transit_departures","description":"Get live public-transport departures with real-time delays for a stop.\n\nSourced from GTFS-RT/HVV/VGN. Unlike the static stop list\n(``get_city_resource(slug, res"},{"name":"list_cities","description":"List all covered cities (slug, federal state, population, coverage).\n\nTakes no arguments. Call this first to discover valid city slugs before\ninvoking any city-"},{"name":"sources","description":"List all data sources with license, attribution and availability.\n\nTakes no arguments. Shows which upstream sources InfraNode bundles and\nwhether each is curren"},{"name":"compare","description":"Compare ONE resource across MULTIPLE cities in a single response.\n\nFans the resource out over the listed cities and returns a per-city\n``source_status`` (ok/dis"}],"toolCount":12,"serverName":"infranode","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.27.2","protocolVersion":"2025-06-18"}}],"tools":[{"name":"get_city","description":"Get base data for a German city (population, area, coordinates).\n\nSourced from Wikidata. Read-only. Useful as a first lookup to confirm a city\nexists and get it"},{"name":"get_city_overview","description":"Get a ONE-CALL overview of everything InfraNode knows about a German city.\n\nStart here for any city question. Returns: the city's base data, a CATALOG of\nall 81"},{"name":"get_city_resource","description":"Fetch ANY per-city data type by its key (generic accessor, 81 data types).\n\nOne tool for the whole breadth of InfraNode: live data (air, traffic, transit\nstops,"},{"name":"air_quality","description":"Get official air quality for a German city (PM10, NO2 and more).\n\nSourced from the Umweltbundesamt (UBA). Read-only. For live nearest-station\nhourly readings us"},{"name":"weather","description":"Get current weather observations for a German city.\n\nSourced from the Deutscher Wetterdienst (DWD): temperature, wind,\nprecipitation and related fields. Read-on"},{"name":"pois","description":"Get points of interest in a German city, filtered by type.\n\nSourced from OpenStreetMap. Read-only.\n"},{"name":"station_board_departures","description":"Get live departures for ANY railway station by its EVA number.\n\nCovers all train categories including local/regional (S/RB/RE) and long\ndistance, with real-time"},{"name":"station_board_arrivals","description":"Get live arrivals for ANY railway station by its EVA number.\n\nMirror of ``station_board_departures`` for arriving trains (all categories,\nreal-time delays, disr"},{"name":"transit_departures","description":"Get live public-transport departures with real-time delays for a stop.\n\nSourced from GTFS-RT/HVV/VGN. Unlike the static stop list\n(``get_city_resource(slug, res"},{"name":"list_cities","description":"List all covered cities (slug, federal state, population, coverage).\n\nTakes no arguments. Call this first to discover valid city slugs before\ninvoking any city-"},{"name":"sources","description":"List all data sources with license, attribution and availability.\n\nTakes no arguments. Shows which upstream sources InfraNode bundles and\nwhether each is curren"},{"name":"compare","description":"Compare ONE resource across MULTIPLE cities in a single response.\n\nFans the resource out over the listed cities and returns a per-city\n``source_status`` (ok/dis"}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"dev.infranode/infranode","url":"https://registry.modelcontextprotocol.io/v0/servers/dev.infranode%2Finfranode","firstSeenAt":"2026-09-05T22:18:30.491Z","fetchedAt":"2026-09-05T22:18:30.491Z","normalizedAt":"2026-09-05T22:18:30.491Z"}]},"firstSeenAt":"2026-09-05T22:18:30.491Z","updatedAt":"2026-09-06T01:24:44.555Z"}