InfraNode
Server Details
Keyless open data for 84 German cities: 12 lean read-only MCP tools covering 67 data types.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 12 of 12 tools scored. Lowest: 3.8/5.
Each tool serves a distinct purpose: discovery (list_cities, get_city, get_city_overview), specific live data (air_quality, weather, transit, stations), generic accessor (get_city_resource), comparison (compare), and metadata (sources). Even similar tools like station_board_arrivals and departures are clearly separated. No overlapping functionality.
Naming patterns are mixed: some use 'get_' prefix (get_city, get_city_resource), others are bare nouns (weather, pois, sources), and 'compare' is a lone verb. However, the conventions are intelligible and the descriptions clarify each tool's role.
With 12 tools, the server is well-scoped for a read-only city data API. It provides both high-level discovery and specific data access without being too numerous or too sparse. The generic get_city_resource covers 67 data types, keeping the surface manageable.
The tool set covers the full lifecycle for a read-only information server: discovery (list_cities, get_city, get_city_overview), specific queries (air_quality, weather, transit, stations, pois), cross-city comparison, and source metadata. The overview tool ensures no dead ends by directing to get_city_resource for any remaining data type. No obvious gaps.
Available Tools
12 toolsair_qualityAir QualityARead-onlyIdempotentInspect
Get official air quality for a German city (PM10, NO2 and more).
Sourced from the Umweltbundesamt (UBA). Read-only. For live nearest-station
hourly readings use get_city_resource(slug, resource='air') instead.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | City identifier, e.g. 'berlin' or 'hamburg'. Resolved leniently: the German name with or without umlauts, any casing, a common English exonym or short form also works (München/munich/munchen -> muenchen, cologne -> koeln, frankfurt -> frankfurt-am-main). An unknown name returns 404 with a 'Meintest du ...?' suggestion. list_cities gives the canonical slugs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses read-only nature, data source (Umweltbundesamt), and that unknown names return 404 with suggestions. Annotations already cover read-only and idempotency, but the description adds useful behavioral context beyond those.
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?
Two sentences plus a clarifying alternative, no wasted words. Efficient and front-loaded with key information.
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?
With one parameter, good schema, output schema present, and annotations covering safety, the description fully addresses the tool's purpose, behavior, and context. The alternative tool guidance makes it complete.
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 100% with a detailed description for the slug parameter. The description adds mention of pollutants but does not significantly enhance understanding beyond the schema, so baseline 3 is appropriate.
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 clearly states the verb 'Get', the resource 'official air quality', and specifies it's for German cities with examples of pollutants (PM10, NO2). It distinguishes from the sibling tool 'get_city_resource' which provides live readings.
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?
Explicitly says when to use this tool (for official air quality) and when not (for live nearest-station hourly readings), and provides the alternative tool 'get_city_resource'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compareCompare CitiesARead-onlyIdempotentInspect
Compare ONE resource across MULTIPLE cities in a single response.
Fans the resource out over the listed cities and returns a per-city
source_status (ok/disabled/no_data/error/not_found), so a missing or
failing city source does not spoil the whole answer. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| cities | Yes | Comma-separated list of city slugs, e.g. 'berlin,koeln,hamburg' (max. 28 cities). | |
| resource | Yes | Resource to compare. Supported: 'weather' (DWD), 'air' (UBA air quality), 'indicators' (INKAR socioeconomic indicators incl. unemployment rate and EV charging coverage), 'demographics', 'unemployment', 'tourism', 'charging-status' (live EV charging occupancy, aggregates only) and 'weather-warnings' (official DWD warning level per city). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: the fan-out mechanism, per-city source_status values (ok/disabled/no_data/error/not_found), and the guarantee that missing or failing city sources do not spoil the whole answer. It also confirms read-only, consistent with annotations. No contradictions.
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?
Three concise sentences that front-load the purpose, then cover behavioral details, and end with read-only confirmation. Every sentence adds value with no unnecessary words.
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 the tool's complexity (multi-city fan-out, status handling) and the rich input schema (100% coverage), the description covers the key behavioral aspects. The presence of an output schema (not shown) further reduces the need to describe return values. No gaps noted.
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?
Input schema has 100% coverage with detailed descriptions for both parameters (cities format and max, resource supported values). The description adds minimal parameter-specific semantics beyond the schema, but the baseline of 3 is appropriate since schema is sufficient.
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 clearly states the tool compares one resource across multiple cities in a single response. The verb 'compare' and scope 'across multiple cities' are explicit, distinguishing it from sibling tools like get_city_resource or weather that operate on single cities or resources.
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?
The description explains when to use the tool for multi-city comparisons and mentions the per-city status handling, implying it's suitable when resilience to missing data is needed. However, it does not explicitly list alternatives or when not to use it, though the sibling names provide some context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cityCity Base DataARead-onlyIdempotentInspect
Get base data for a German city (population, area, coordinates).
Sourced from Wikidata. Read-only. Useful as a first lookup to confirm a city
exists and get its core attributes. For a broader question about the city
(what data is available at all) use get_city_overview instead.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | City identifier, e.g. 'berlin' or 'hamburg'. Resolved leniently: the German name with or without umlauts, any casing, a common English exonym or short form also works (München/munich/munchen -> muenchen, cologne -> koeln, frankfurt -> frankfurt-am-main). An unknown name returns 404 with a 'Meintest du ...?' suggestion. list_cities gives the canonical slugs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint and idempotentHint. Description adds that data is sourced from Wikidata, confirms it is read-only, and describes error behavior for unknown slugs (404 with suggestion). This adds value beyond annotations.
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?
Description is three sentences, front-loaded with purpose, then context, then sibling differentiation. No extraneous words.
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?
All necessary aspects are covered: purpose, usage, parameter semantics, and behavioral notes. Output schema exists, so return values are not needed in description.
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 100%, baseline 3. Description enriches slug parameter with lenient resolution details (umlauts, casing, exonyms, short forms) and error behavior, providing significant extra guidance for the agent.
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?
Description clearly states 'Get base data for a German city' and lists specific attributes (population, area, coordinates). It distinguishes from sibling tools like get_city_overview and list_cities.
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?
Explicitly states it's a first lookup to confirm existence and get core attributes, and directs to get_city_overview for broader questions. Provides when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_city_overviewCity OverviewARead-onlyIdempotentInspect
Get a ONE-CALL overview of everything InfraNode knows about a German city.
Start here for any city question. Returns: the city's base data, a CATALOG of
all 68 available data types (weather, air quality, public transit, trains,
traffic, charging, parking, solar, energy, demographics, taxes, accidents,
tourism, heritage, trees, population density, playgrounds, post boxes and many
more), each with its coverage status and the exact tool to call next (for most
data types that is get_city_resource(slug, resource=<type>)), plus a small
live highlights snapshot (current weather, air quality and train departures).
Data types not yet covered for this city show where they ARE available so you
can pivot. InfraNode keeps adding data and cities, so the catalog grows over
time. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | City identifier, e.g. 'berlin' or 'hamburg'. Resolved leniently: the German name with or without umlauts, any casing, a common English exonym or short form also works (München/munich/munchen -> muenchen, cologne -> koeln, frankfurt -> frankfurt-am-main). An unknown name returns 404 with a 'Meintest du ...?' suggestion. list_cities gives the canonical slugs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds context: states 'Read-only,' explains catalog grows over time (open world), and describes return structure (live highlights, coverage status). No contradictions.
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?
Description is concise and well-structured: front-loaded with purpose, then enumerates contents in a list-like format, with no superfluous words. Every sentence adds value.
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 the tool has 1 parameter, rich annotations, and an output schema (not shown), the description completely covers the tool's role, usage, and behavior. It explains what the output contains and how it evolves.
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?
Single parameter 'slug' has comprehensive schema description covering lenient resolution. Description adds minor value by mentioning 'list_cities gives canonical slugs' as a hint, but otherwise doesn't repeat schema. Baseline 3 raised to 4 for this extra context.
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 clearly states it provides a one-call overview for German cities, detailing what it returns (base data, catalog of data types with coverage and next tool, live snapshot). It distinguishes from siblings by being the starting point, while others like 'get_city' or 'get_city_resource' are more specific.
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?
Explicitly says 'Start here for any city question,' indicating primary use case. It explains that for each data type, it tells which tool to call next, guiding the user to further actions. It also mentions pivoting if data not covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_city_resourceCity Data by TypeARead-onlyIdempotentInspect
Fetch ANY per-city data type by its key (generic accessor, 68 data types).
One tool for the whole breadth of InfraNode: live data (air, traffic, transit
stops, parking, charging, water-level, flood, sharing, fuel-prices, icu-live,
webcams, station-departures/-arrivals/stations, ...), statistics
(demographics, unemployment, tourism, accidents, crime-stats, indicators,
land-values, tax-rates, insolvencies, ...), infrastructure and environment
(solar, solar-roofs, district-heating, energy, heritage, tree-cadastre,
playgrounds, public-toilets, markets, education, ...) and more. Discover the
valid keys and per-city coverage with get_city_overview(slug) or the
infranode://catalog resource; the resource enum lists every key.
Uncovered types return source_status="not_covered" (plus where they ARE
available), never an error. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | City identifier, e.g. 'berlin' or 'hamburg'. Resolved leniently: the German name with or without umlauts, any casing, a common English exonym or short form also works (München/munich/munchen -> muenchen, cologne -> koeln, frankfurt -> frankfurt-am-main). An unknown name returns 404 with a 'Meintest du ...?' suggestion. list_cities gives the canonical slugs. | |
| resource | Yes | Data type key to fetch, exactly as listed by get_city_overview / the infranode://catalog resource (the 'type' field), e.g. 'charging', 'parking', 'demographics', 'solar', 'district-heating'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds key behavioral details: it is a generic accessor, lists many data types, and explains that uncovered types return a status field rather than failing. No contradiction.
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?
Front-loaded with core purpose, then a concise list of examples, then usage guidance. Every sentence is necessary, and the structure flows logically. No wasted words.
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 the tool's complexity as a generic accessor for 68 types, the description covers purpose, usage, discovery, and error behavior. It references output schema (exists) without duplicating, and complements annotations and input schema fully.
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 100% with detailed descriptions for both parameters. The description adds value by referencing get_city_overview for key discovery and listing examples, which aids understanding beyond schema text.
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 clearly states 'Fetch ANY per-city data type by its key', specifying the verb and resource. It lists 68 data types and distinguishes from siblings like get_city_overview which discovers keys, and other specific tools (air_quality, weather, etc.).
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?
Explicitly tells when to use (to get any data type) and how to discover valid keys via get_city_overview(slug) or the catalog resource. It also clarifies that uncovered types return 'source_status="not_covered"' rather than an error, guiding correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_citiesList CitiesARead-onlyIdempotentInspect
List all covered cities (slug, federal state, population, coverage).
Takes no arguments. Call this first to discover valid city slugs before invoking any city-scoped tool. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description redundantly says 'Read-only' but adds useful context about taking no arguments and returning slugs, which is behavioral but not critical beyond annotations.
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?
Three sentences, no fluff. The first sentence states what the tool does, the second clarifies zero arguments, and the third provides usage context. Every sentence adds value.
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 parameters, rich annotations, and presence of an output schema, the description fully covers the tool's purpose and usage flow. No gaps remain for an agent to invoke this tool correctly.
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?
No parameters exist, so schema coverage is 100%. Description states 'Takes no arguments', which reinforces the schema but does not add new meaning. Baseline score of 4 is appropriate for zero-parameter tools.
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?
Description clearly states the verb 'list' and resource 'covered cities', and specifies the fields returned (slug, federal state, population, coverage). This distinguishes it from sibling tools that operate on a specific city.
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?
Explicitly instructs to 'Call this first to discover valid city slugs before invoking any city-scoped tool', providing clear when-to-use guidance and context for ordering calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poisPoints of InterestARead-onlyIdempotentInspect
Get points of interest in a German city, filtered by type.
Sourced from OpenStreetMap. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | City identifier, e.g. 'berlin' or 'hamburg'. Resolved leniently: the German name with or without umlauts, any casing, a common English exonym or short form also works (München/munich/munchen -> muenchen, cologne -> koeln, frankfurt -> frankfurt-am-main). An unknown name returns 404 with a 'Meintest du ...?' suggestion. list_cities gives the canonical slugs. | |
| type | Yes | POI type from the API allowlist, one of: hospital, school, pharmacy, restaurant, police, kindergarten. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. Description adds source (OpenStreetMap) and read-only, but no further behavioral details like rate limits, pagination, or error handling. Minimal added value over annotations.
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?
Two sentences, front-loaded with purpose, no wasted words. Each sentence earns its place.
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 the presence of an output schema, the description is sufficient for a simple POI lookup. It specifies filtering, city, and source. Could mention result format or behavior for no results, but not necessary.
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 has 100% coverage with detailed descriptions for both parameters. Description adds no additional parameter info, so baseline of 3 is appropriate.
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?
Clearly states the tool retrieves points of interest in a German city with type filtering, and distinguishes from siblings (no other POI tool exists among siblings).
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?
Implies use case but provides no explicit guidance on when to use or alternatives. The purpose is clear, but no exclusions or context about avoiding this tool for other data types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sourcesData SourcesARead-onlyIdempotentInspect
List all data sources with license, attribution and availability.
Takes no arguments. Shows which upstream sources InfraNode bundles and whether each is currently active. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds value by specifying that the tool shows which upstream sources are bundled and their activity status, as well as confirming it takes no arguments. No contradiction with annotations.
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 extremely concise with two sentences, each adding critical information. Front-loaded with the main action, no unnecessary words.
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 parameters, comprehensive annotations, and an output schema, the description fully covers the tool's purpose and behavior, mentioning license, attribution, availability, and active status. It is complete for a simple listing tool.
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?
There are no parameters, and schema coverage is 100%. The description explicitly states 'Takes no arguments', which clarifies the input requirement. Baseline for 0 parameters is 4.
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 uses the verb 'List' and specifies the resource 'data sources', clearly stating what the tool does: lists data sources with license, attribution, availability, and activity status. It distinguishes from sibling tools which cover different domains (air quality, cities, transit, etc.).
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?
The description indicates the tool takes no arguments and is read-only, implying it's for browsing data sources. However, it does not explicitly state when to use this tool versus alternatives like list_cities, missing explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
station_board_arrivalsStation Board: ArrivalsARead-onlyIdempotentInspect
Get live arrivals for ANY railway station by its EVA number.
Mirror of station_board_departures for arriving trains (all categories,
real-time delays, disruption messages). Get the EVA from
get_city_resource(slug, resource='stations'). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| eva | Yes | Station EVA number (digits only) from get_city_resource(slug, resource='stations'), e.g. '8000105' (Frankfurt Hbf). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's 'Read-only' is consistent but not additive. However, it adds context about the output: 'all categories, real-time delays, disruption messages', which informs the agent about data richness. No contradictions; the description enhances beyond annotations.
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?
Four sentences, each essential: states purpose, relates to sibling, advises on parameter source, and declares read-only. No wasted words. Information is front-loaded and efficiently structured.
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 single-parameter tool with a rich output schema, the description covers all necessary aspects: purpose, usage context, parameter source, and behavioral traits. The agent is fully equipped to select and invoke this tool correctly.
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 100% with a detailed description for the parameter 'eva'. The tool description adds value by telling where to obtain the EVA number ('Get the EVA from get_city_resource(...)'), which is extra guidance beyond the schema. Given the high coverage, baseline is 3, plus the additive guidance justifies a 4.
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 clearly states the verb 'get' and resource 'live arrivals', specifying 'ANY railway station by its EVA number'. It explicitly distinguishes from the sibling tool 'station_board_departures' by calling itself a 'Mirror of station_board_departures for arriving trains', making the purpose precise and differentiated.
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?
The description provides clear when-to-use guidance: for arrivals at any station. It tells where to obtain the required EVA number ('Get the EVA from get_city_resource(slug, resource='stations')') and explicitly names the alternative for departures ('Mirror of station_board_departures'). This is excellent usage clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
station_board_departuresStation Board: DeparturesARead-onlyIdempotentInspect
Get live departures for ANY railway station by its EVA number.
Covers all train categories including local/regional (S/RB/RE) and long
distance, with real-time delays, cancellations and disruption messages. Get
the EVA from get_city_resource(slug, resource='stations'). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| eva | Yes | Station EVA number (digits only) from get_city_resource(slug, resource='stations'), e.g. '8011160' (Berlin Hbf). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive. Description adds that it returns real-time delays, cancellations, and disruptions, providing extra behavioral context without contradictions.
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?
Four sentences, front-loaded with purpose, no fluff. Efficient and well-structured.
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?
With output schema present, description covers core functionality and data types returned. Lacks mention of pagination or edge cases but adequate for a simple tool.
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 is highly detailed (100% coverage) with example. Description repeats this info but doesn't add new semantics beyond what schema provides.
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?
Clearly states it retrieves live departures for a railway station by EVA number. Specifies coverage of all train categories and real-time updates, distinguishing it from siblings like station_board_arrivals.
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?
Tells how to get the EVA number via get_city_resource. Implicitly contrasts with station_board_arrivals but lacks explicit when-not-to-use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transit_departuresTransit DeparturesARead-onlyIdempotentInspect
Get live public-transport departures with real-time delays for a stop.
Sourced from GTFS-RT/HVV/VGN. Unlike the static stop list
(get_city_resource(slug, resource='transit')), this returns minute-fresh
departures including delay for ONE stop. A stop_id is required: fetch the
city's transit stops first to discover valid stop IDs, then pass one here.
Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | City identifier, e.g. 'berlin' or 'hamburg'. Resolved leniently: the German name with or without umlauts, any casing, a common English exonym or short form also works (München/munich/munchen -> muenchen, cologne -> koeln, frankfurt -> frankfurt-am-main). An unknown name returns 404 with a 'Meintest du ...?' suggestion. list_cities gives the canonical slugs. | |
| stop_id | No | Required stop ID to fetch departures for. Discover a city's stop IDs with get_city_resource(slug, resource='transit') first (each stop carries its id). Format: DELFI 'de:<AGS>:<id>' or a numeric gtfs.de stop id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral context beyond annotations: data freshness (minute-fresh), source (GTFS-RT/HVV/VGN), and read-only nature. No contradiction with annotations (readOnlyHint, idempotentHint). However, the 'required' claim for stop_id contradicts the schema, mildly reducing transparency.
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?
Very concise: 3-4 sentences, front-loaded with main action, then context and prerequisite. No redundancy. Every sentence adds value.
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?
Covers key aspects: data source, freshness, single-stop scope, prerequisite. Output schema exists so no need to explain return values. The stop_id requirement contradiction is a minor gap.
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 100% schema coverage, baseline is 3. Description adds meaning for slug (lenient resolution, error suggestions) and stop_id (format, discovery method). The 'required' assertion contradicts schema, slightly weakening semantic clarity.
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?
Description clearly states 'Get live public-transport departures with real-time delays for a stop', specifying verb and resource. It distinguishes from sibling 'get_city_resource' by contrasting with the static stop list. The purpose is unambiguous.
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?
Description provides context: use for one stop's live data, prerequisite of fetching stop IDs via get_city_resource. However, it claims stop_id is required while the schema marks it optional with default null, creating confusion. No explicit guidance against using sibling station_board_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
weatherWeatherARead-onlyIdempotentInspect
Get current weather observations for a German city.
Sourced from the Deutscher Wetterdienst (DWD): temperature, wind,
precipitation and related fields. Read-only, current conditions only (not a
forecast). For warnings use get_city_resource(slug, resource='weather-warnings'). For a broader question about the city (not
just weather) use get_city_overview instead, which already includes a
live weather highlight.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | City identifier, e.g. 'berlin' or 'hamburg'. Resolved leniently: the German name with or without umlauts, any casing, a common English exonym or short form also works (München/munich/munchen -> muenchen, cologne -> koeln, frankfurt -> frankfurt-am-main). An unknown name returns 404 with a 'Meintest du ...?' suggestion. list_cities gives the canonical slugs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| meta | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent, openWorld), the description adds that it's current conditions only, clarifies the data is live and not a forecast, and documents slug resolution leniency and 404 behavior with suggestions. No contradiction with annotations.
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 front-loaded with the core purpose in the first sentence, then expands concisely with source, scope, and alternatives. Every sentence adds value; no wasted words.
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 simple tool with one parameter and an output schema present, the description covers purpose, data source, usage constraints, parameter behavior, error handling, and sibling tool differentiation. It is fully complete for an agent to correctly select and invoke the tool.
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?
The single parameter 'slug' is fully described in the schema, but the description adds substantial semantic detail: resolution leniency (umlauts, case, English exonyms, short forms), error handling with 'Meintest du...?' suggestions, and guidance to use list_cities for canonical slugs. This goes well beyond the schema's generic description.
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 clearly states it gets current weather observations for a German city from the DWD, specifying fields (temperature, wind, precipitation). It distinguishes itself from forecasts and from sibling tools like get_city_resource, get_city_overview, and get_city.
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?
Explicitly says it's for current conditions only, not a forecast. Provides explicit alternatives: for warnings use get_city_resource with resource='weather-warnings', for broader city info use get_city_overview. Also mentions slug resolution behavior and error responses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!