Skip to main content
Glama

Server Quality Checklist

75%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.1.1

  • Disambiguation5/5

    Each tool has a clearly distinct purpose: general queries (get_city_overview, get_city, list_cities), specific data types (weather, air_quality, pois, transit_departures, station_board_departures/arrivals), comparisons (compare), source metadata (sources), and the generic accessor (get_city_resource). No overlap causes confusion.

    Naming Consistency5/5

    All tool names use lowercase with underscores, following a verb_noun pattern (e.g., get_city, list_cities, station_board_departures). Even single-word names like weather and pois are consistent with the style and clearly indicate their function.

    Tool Count5/5

    With 12 tools, the server is well-scoped for a city data API. It provides high-level discovery tools, specific data accessors for common queries, and a generic accessor for the full breadth of 65 data types. No unnecessary tools nor missing essential ones.

    Completeness5/5

    The tool surface covers the full lifecycle of data access: discovery (list_cities, get_city_overview, sources), base information (get_city), specific live data (weather, air_quality, transit, trains, POIs), and comparison. The generic get_city_resource fills any gaps, and no obvious missing operations are evident.

  • Average 4.5/5 across 12 of 12 tools scored. Lowest: 3.8/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 82 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • This repository is licensed under Apache 2.0.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • This repository includes a glama.json configuration file.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds context about data sourcing from OpenStreetMap, which is not covered by annotations. No contradictions found.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two sentences: first states the core purpose, second adds essential context (source and read-only). No filler, front-loaded, every sentence adds value.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    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 does not need to explain return values. It covers purpose, geographic scope (German city), filter (type), and data source. Lack of pagination or result limit details is acceptable for read-only tools with annotations.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 100%, so parameters are well-documented in the schema. The description merely repeats 'filtered by type' without adding new meaning beyond what the schema already provides.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool's action ('Get'), resource ('points of interest'), and key filters ('in a German city', 'filtered by type'). It also mentions the data source (OpenStreetMap) and read-only nature, distinguishing it from sibling tools like list_cities or get_city.

    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 explicit guidance on when to use this tool versus alternatives. While the purpose is clear, the description lacks information about prerequisites, exclusions, or comparisons with siblings like get_city_overview or sources.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare readOnlyHint and idempotent. Description adds 'Read-only' and explains error-free handling for uncovered types ('source_status="not_covered"'), providing useful behavioral context 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.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Front-loads purpose, uses a bullet-like enumeration of example types for clarity, and is efficient. Slightly verbose with the long type list, but overall concise and well-structured.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the tool's generic nature (67 types) and presence of an output schema, the description adequately covers key discovery, coverage behavior, and safety. Complete enough for effective use.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 100%; the description adds value by listing examples and explaining how to discover keys, but does not fundamentally extend meaning beyond the schema parameters.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Description clearly states 'Fetch ANY per-city data type by its key', specifying verb, resource, and scope. It distinguishes from siblings by noting it is a generic accessor for 67 data types, unlike more specialized tools like air_quality or weather.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Explicitly tells users to discover valid keys via get_city_overview or catalog, and explains that uncovered types return a specific status instead of error. However, it does not explicitly state when NOT to use this tool in favor of siblings.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds valuable behavioral context: the tool fans out the resource across cities and returns a per-city source_status, ensuring that a failing city does not spoil the whole response. This goes beyond the annotations.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is three sentences long, front-loaded with the core action, no fluff. Every sentence provides value: purpose, behavior, and read-only nature.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the tool's simplicity (2 params, fully described in schema, output schema present), the description is complete. It explains the key behavioral aspect (per-city source_status) and does not miss critical information.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 100% and both parameters are well-described. The description reinforces the purpose but does not add new meaning beyond what the schema provides. Baseline 3 is appropriate.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    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 the explicit 'ONE resource' and 'MULTIPLE cities' differentiate it from sibling tools like get_city or get_city_resource, which operate on a single city.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies when to use this tool: when you need to compare a resource across multiple cities in one call. It does not explicitly state when not to use it or mention alternatives, but the context is clear enough for an agent to infer appropriate usage.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. Description adds 'Sourced from Wikidata. Read-only.' but this adds only minor context beyond the annotations.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Three sentences, each valuable: purpose, source, usage guidance with alternative. No wasted words. Front-loaded with primary action.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Tool has output schema (not shown but present), so return values are covered. Description covers purpose, source, and usage context. For a simple read-only lookup with one parameter, this is complete.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema provides full description for the single required parameter 'slug' (coverage 100%). The tool description does not add any extra meaning beyond the schema's description.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states 'Get base data for a German city' with specific attributes listed. It distinguishes from sibling tool `get_city_overview` by focusing on base data only.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Explicitly says 'Useful as a first lookup to confirm a city exists and get its core attributes.' Provides an alternative: 'For a broader question... use get_city_overview instead.'

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    While annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, the description adds value by stating the data source (Umweltbundesamt) and the specific pollutants included (PM10, NO2), enriching behavioral context without contradiction.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is two sentences long, front-loaded with the main purpose, followed by source and alternative usage. Every sentence serves a clear function with no waste.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the single parameter, existing output schema, and annotations covering safety, the description fully covers the tool's functionality, including what data is returned and its official nature.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 100% with a clear description of the 'slug' parameter referencing list_cities. The description does not add new parameter details beyond the schema, so a baseline of 3 is appropriate.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description explicitly states 'Get official air quality for a German city (PM10, NO2 and more),' specifying the verb, resource, and scope. It differentiates from sibling tools by mentioning an alternative for live readings.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides explicit when-not-to-use guidance: 'For live nearest-station hourly readings use get_city_resource(slug, resource='air') instead,' and names the alternative tool.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds that it shows whether each source is currently active, which is not in annotations. 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.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Three sentences, concise and front-loaded with the core purpose. No wasted words, and every sentence adds value.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given no parameters, clear annotations, and existing output schema, the description fully covers what the tool does and returns. It is complete for an agent to understand its purpose and behavior.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    There are no parameters, so the description does not need to add param info. Schema coverage is 100%, and the baseline for no params is 4. The description is appropriate.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states it lists data sources with license, attribution, and availability, and shows activity status. The verb 'List' and resource 'data sources' are specific, and it distinguishes from sibling tools like 'air_quality' or 'transit_departures' which focus on specific data types.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description explains that the tool takes no arguments and is used to see which upstream sources are bundled. While it doesn't explicitly state when not to use or name alternatives, the context of being a listing tool for available data sources is clear.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds behavioral details: 'live arrivals', 'all categories, real-time delays, disruption messages', which goes beyond annotations. 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.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is three sentences with no extraneous words. The main purpose is front-loaded, and every sentence adds value.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the tool's simplicity (one parameter, output schema present, annotations covering safety), the description provides all necessary context: purpose, input source, read-only nature, and differentiation from departures.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 100%. The description adds meaning by specifying the EVA number must be 'digits only' and provides an example, as well as referencing the helper function to obtain it.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states 'Get live arrivals for ANY railway station by its EVA number', specifying the verb, resource, and scope. It distinguishes itself from the sibling 'station_board_departures' by noting it is a mirror for arrivals.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description tells when to use the tool (to get arrivals) and provides guidance on obtaining the EVA number via 'get_city_resource'. It implicitly contrasts with departures, but lacks explicit 'when not to use' statements.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare readOnlyHint=true, openWorldHint=true, etc. The description adds value by detailing the nature of data (real-time delays, cancellations, disruptions) and reaffirming 'Read-only'. This goes beyond annotations but could still mention rate limits or data freshness.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is extremely concise with three sentences, each serving a distinct purpose: action + scope, coverage details, prerequisite. No wasted words, and the most important information (live departures) is front-loaded.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the tool's simplicity (1 parameter, output schema exists), the description covers all essential aspects: what it returns, the required input, and how to obtain it. No significant gaps remain.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 100% and already explains the 'eva' parameter well. The description adds useful context by referencing get_city_resource as the source for the EVA number, which aids in parameter preparation. This exceeds the baseline of 3.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly specifies the action ('Get live departures'), resource ('ANY railway station by its EVA number'), and scope ('all train categories ... with real-time delays, cancellations and disruption messages'). It distinguishes from siblings by focusing on departures and specifying coverage, though not explicitly differentiating from 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.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides clear context for when to use the tool (live departures for any station) and a prerequisite (get EVA from get_city_resource). However, it lacks explicit guidance on when not to use it (e.g., for arrivals) or reference to alternatives like station_board_arrivals.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior5/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already provide readOnlyHint and idempotentHint. The description adds valuable behavioral context: it returns a catalog of 67 data types with coverage status, a live highlights snapshot, and redirection for uncovered data. It also declares the tool as read-only, consistent 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.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is concise (~6 sentences) and front-loaded with the main purpose. Every sentence adds essential information without redundancy, and the structure follows a logical flow: purpose, return components, future growth.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given there is an output schema (implied by context signals), the description appropriately focuses on the high-level structure (base data, catalog, highlights). It covers the dynamic nature of the catalog and provides enough context for the agent to understand the tool's role without needing full return details.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 100% schema description coverage for the single parameter 'slug', the baseline applies. The schema already provides clear documentation. The description does not add additional parameter semantics, which is acceptable given the coverage.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description uses specific verbs ('Get a ONE-CALL overview') and clearly defines the resource ('everything InfraNode knows about a German city'). It distinguishes from sibling tools by positioning itself as the starting point and listing the returned catalog with pointers to other tools.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description explicitly states 'Start here for any city question' and explains that for specific data types, users should call tools like get_city_resource. This provides clear when-to-use and alternatives guidance.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description reaffirms read-only and adds output field context, which is valuable 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.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two sentences, zero wasted words. Front-loaded with the core action and output, then usage instruction.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given zero parameters, rich annotations, and output schema, the description is fully complete. It covers purpose, output, and usage order.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    No parameters, so baseline 4. The description adds value by listing the output fields, aiding in understanding the tool's response.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly specifies the verb 'List', the resource 'all covered cities', and the output fields (slug, federal state, population, coverage). It distinguishes from siblings by establishing the tool as a prerequisite for city-scoped tools.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Explicitly states 'Call this first to discover valid city slugs before invoking any city-scoped tool.', providing clear when-to-use guidance and establishing a dependency.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, covering safety. The description adds value by specifying data source (DWD), fields (temperature, wind, precipitation), and clarifying it's current conditions only (not forecast). No contradictions 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.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Three sentences with no wasted words. First sentence states core purpose, second adds details, third provides usage alternatives. Front-loaded with essential information.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    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, the description covers what, source, usage boundaries, and alternatives. Complete for an agent to select and invoke correctly.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 100% with one parameter 'slug' described. The description adds meaning by stating the slug comes from list_cities tool and giving examples ('berlin' or 'hamburg'), which helps the agent understand valid inputs beyond the schema definition.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states 'Get current weather observations for a German city', specifying verb (Get), resource (weather observations), and scope (German city). It differentiates from siblings by explicitly contrasting with forecasts, weather warnings (get_city_resource), and city overview (get_city_overview).

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Explicitly states when to use (current weather), when not (not a forecast), and provides specific alternatives: for warnings use get_city_resource with resource='weather-warnings', and for broader city questions use get_city_overview. This gives clear guidance on tool selection.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior5/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Beyond the annotations (readOnly, openWorld, idempotent), the description adds context: 'minute-fresh departures including delay for ONE stop', data source ('GTFS-RT/HVV/VGN'), and the requirement for a stop ID. It does not contradict any annotations.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is concise yet informative, with four sentences each serving a distinct purpose: stating the main function, citing the data source, differentiating from a sibling tool, and explaining the prerequisite. No unnecessary words.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    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 (not shown but indicated true) and the complexity of real-time departures, the description provides sufficient context: it clarifies the data source, the real-time nature, the restriction to one stop per call, and the need for prior stop discovery. It fully prepares the agent for correct usage.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 100%, so both parameters are already described in the input schema. The description adds value by explaining the relationship between `slug` and `stop_id`, noting that `stop_id` must be discovered via another tool, and providing format examples for `stop_id`. This augments the schema without redundancy.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool's purpose: 'Get live public-transport departures with real-time delays for a stop.' It specifies the verb, resource, and scope, and distinguishes itself from the sibling `get_city_resource` by noting it returns dynamic departures for a single stop.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description explicitly tells when to use this tool (for live departures with delays) and contrasts it with the static stop list tool, providing an alternative. It also outlines a prerequisite: first fetch transit stops via `get_city_resource(slug, resource='transit')` to obtain valid stop IDs.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

infranode MCP server

Copy to your README.md:

Score Badge

infranode MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/street1983nk/infranode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server