Skip to main content
Glama
malkreide

SBB Open Data MCP Server

by malkreide

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.3.4

  • Disambiguation5/5

    Each tool targets a distinct SBB Open Data dataset or operation. Even similar-sounding tools like infrastructure construction vs real estate projects are clearly differentiated by their descriptions and parameters. No two tools appear to do the same thing.

    Naming Consistency5/5

    All tools follow a consistent sbb_<verb>_<object> pattern. Most use sbb_get_* for data retrieval, with sbb_search_stations, sbb_compare_stations, and sbb_list_datasets as readable variations. Naming is uniform and predictable.

    Tool Count5/5

    With 10 tools, the server is well-scoped. Each tool covers a meaningful SBB Open Data domain without being overwhelming. The count is within the ideal range for a focused data-access server.

    Completeness4/5

    The tool set covers major SBB Open Data categories: stations, passenger frequency, platforms, rolling stock, disruptions, train counts, infrastructure, real estate, and a dataset catalog. Minor gaps exist (e.g., no explicit timetable data), but core workflows are well supported and sbb_list_datasets helps discover additional datasets.

  • Average 4.3/5 across 10 of 10 tools scored.

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

    • 1 of 1 community issues answered or closed in the last 6 months
    • 47 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 MIT License.

  • 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.

  • Add a glama.json file to provide metadata about your server.

  • 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

  • Behavior3/5

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

    Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is clear. The description adds that it combines three datasets and returns a table, but doesn't disclose potential failure modes (e.g., unknown station names) or default behavior for year, which is a moderate gap.

    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?

    The description is well-structured with a clear lead sentence, a context sentence, and organized Args/Returns sections. It is somewhat redundant with the schema (listing parameters) but remains compact and scannable.

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

    Completeness3/5

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

    There is no output schema, but the Returns section specifies a tabular string with passenger frequency and platform metrics, which is helpful. However, the description omits the response_format option and does not address error handling, making it not fully complete for an agent to invoke correctly in all cases.

    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?

    The description covers stations and year with examples and constraints, but omits the 'response_format' parameter entirely. While the nested schema provides detailed descriptions, the top-level 'params' has 0% schema coverage, so the description partially compensates but remains incomplete.

    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 opens with 'Vergleicht mehrere SBB-Bahnhöfe anhand Passagierfrequenz und Perrondaten', a specific verb+resource+criteria. It further distinguishes itself from sibling single-dataset tools by stating it 'Kombiniert drei Datensätze...' to create a compact comparison, clearly establishing its unique role.

    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?

    It explicitly lists use cases ('Nützlich für Planungsentscheide, Präsentationen und Standortanalysen'), providing clear context. However, it does not mention alternatives or when not to use this tool relative to the sibling getters, so it lacks explicit exclusions.

    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, idempotentHint, and destructiveHint=false. The description adds context about data coverage (operators, traffic types, track_km, Stromverbrauch) and the return schema, but does not disclose additional behavioral traits such as pagination behavior or rate limits. It does not contradict 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?

    The description is well-structured with an introductory paragraph, a bulleted Args list, and a Returns section. Every part is relevant, though it could be slightly trimmed. Minor typos (e.g., 'Traffiktyp') do not hinder clarity.

    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?

    With no output schema, the description provides a return schema and parameter meanings, covering all key aspects for a read-only data retrieval tool. It does not explain defaults or enum constraints, but those are present in the input schema. Overall, it is sufficiently complete for the tool's complexity.

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

    Parameters5/5

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

    Despite the signal of 0% schema description coverage, the tool description manually enumerates all seven parameters within the nested params object with meaningful explanations (e.g., line_name for partial match, operator examples, traffic_type values, limit/offset for pagination, response_format options). This fully compensates for the schema gap.

    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 starts with 'Ruft Anzahl Züge pro Streckenabschnitt und Verkehrstyp ab' – a specific verb (abrufen) and resource (train counts per segment and traffic type). It clearly distinguishes from siblings like sbb_get_passenger_frequency by focusing on train counts and infrastructure operators.

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

    Usage Guidelines3/5

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

    The description implies usage for retrieving train counts per segment across operators (SBB, BLS, etc.) and traffic types, but it does not explicitly mention when to use this tool over alternatives or any exclusions. There is no reference to sibling tools or specific use-case boundaries.

    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 readOnly, idempotent, and non-destructive. The description adds context about the specific data returned (units, accessibility) and the output schema, exceeding basic annotation coverage. 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.

    Conciseness4/5

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

    The description is structured with a summary, args, and returns sections. It is somewhat repetitive (schema repeated) but front-loads the purpose and stays within reasonable length for a data-retrieval tool.

    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 lack of an output schema, the description provides a return schema and parameter details, making it self-contained. It does not address edge cases like filtering behavior or pagination caps, but covers essential invocation and output expectations.

    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 0%, but the description lists all parameters with types, examples, and German explanations. It adds meaning by defining 'limit' as 'Max. Resultate' and pagination, and clarifies optional fields, compensating well for the schema gap.

    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 retrieves platform data (length, area, type) for SBB stations, using a specific verb ('Ruft ab') and resource. It distinguishes itself from sibling tools by focusing on platform-specific metrics, making the purpose unambiguous.

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

    Usage Guidelines3/5

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

    The description implies use for platform information via its content but does not explicitly state when to use it over sibling tools or mention alternatives. No exclusion criteria or use-case guidance is provided beyond the inherent purpose.

    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 establish read-only and non-destructive behavior. The description adds value by disclosing that data is updated daily and that descriptions come in DE/FR/IT/EN, which are not evident from annotations. It also clarifies the output format (markdown/json) and return schema, giving the agent a fuller behavioral picture.

    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?

    The description is well-structured with a clear header sentence, a data freshness/contents note, and separate Args and Returns blocks. It is not overly verbose, though the Args block duplicates schema property information. Overall, it is efficient and easy to scan, earning a solid score.

    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?

    The description includes the output schema inline, compensating for the lack of a structured output schema. It covers the key fields (title, city, phase, start_of_construction, move_in, area_m2, description) and mentions daily updates. However, it does not address pagination limitations or error handling, which is a minor gap for a data retrieval tool.

    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?

    The description provides meaningful examples for city ('Zürich', 'Bern', 'Luzern') and phase ('CONSTRUCTION', 'PLANNING'), and explains limit as 'Max. Resultate' and offset as 'Paginierung'. While the schema already describes city and phase, the description covers all parameters with usage context, adding value beyond raw schema definitions. The response_format parameter is also clarified with 'markdown' oder 'json'.

    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 verb 'Ruft ab' (fetches/retrieves) with a clearly defined resource: 'SBB-Immobilien-Bauprojekte (Wohn- und Geschäftsbauten)'. This distinguishes it from sibling tools like infrastructure construction projects by scope (real estate vs. infrastructure). The inclusion of a daily update note and field list further clarifies the specific resource.

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

    Usage Guidelines3/5

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

    The description implies usage for fetching real estate construction projects but provides no explicit guidance on when to use this tool versus alternatives. It does not state exclusions or mention sibling tools, leaving the agent to infer context. The daily update note offers minimal contextual cue but not enough for clear alternative selection.

    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, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable context beyond this: the dataset is updated annually, contains specific average metrics, and the return includes pagination information. This enriches the behavioral understanding without contradicting 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 well-structured and concise: a lead sentence on purpose, a brief dataset context, an Args list, and a Returns schema. Every section earns its place without redundancy. It is front-loaded and not overly verbose.

    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?

    The description is complete for a read-only data retrieval tool: it specifies the dataset scope, update frequency, available metrics, all input parameters with defaults, and a return schema (despite no output schema). Combined with strong annotations, the agent has everything needed to select and invoke the tool 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?

    Although the schema already describes each parameter, the description's Args section adds practical examples and constraints (e.g., 'ZH', '2024', partial search for station_name, default limit 20, response_format options). Since schema coverage is contextually marked as 0% (though schema has descriptions), the description effectively compensates by providing detailed parameter semantics.

    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 begins with a clear, specific verb-resource pair: 'Ruft Passagierfrequenzdaten (Ein-/Aussteigende) für SBB-Bahnhöfe ab' (retrieves passenger frequency data for SBB stations). It further specifies the contained metrics (DTV, DWV, DNWV) and distinguishes itself from sibling tools like disruptions or construction projects.

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

    Usage Guidelines3/5

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

    The description implies usage for passenger frequency queries but does not explicitly state when to use it vs alternatives. No exclusions or alternative tool names are provided. The context is clear, but the guidance is implicit rather than explicit.

    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 the tool as read-only, idempotent, and non-destructive. The description adds a useful return schema and notes pagination behavior, enriching the behavioral context without overstepping annotation coverage.

    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 efficiently structured with a clear purpose statement, a content overview, parameter documentation, and return schema. Every sentence adds value, and the format is easy to scan.

    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?

    With rich annotations and no output schema, the description provides everything needed: input parameter docs, return schema, and purpose. A complete picture for a read-only query tool.

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

    Parameters5/5

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

    Schema description coverage is 0%, but the description thoroughly documents all four nested parameters with types, defaults, and examples (e.g., vehicle types). This fully compensates for the absence of schema descriptions.

    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 retrieves technical data about SBB rolling stock, listing specific content types (vehicle type, seating capacity, year, length, weight). This distinct resource differentiates it from all sibling tools, which focus on other data domains.

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

    Usage Guidelines3/5

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

    The context of use is clear (need rolling stock technical data), but there is no explicit guidance on when to use this tool versus alternatives, nor any mention of exclusions. Usage is implied rather than stated.

    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 cover the safety profile (read-only, idempotent, non-destructive). The description adds value by detailing the return schema (name, location, type, category, link) and explaining the meaning of parameters, which goes beyond the annotation coverage. It does not contradict 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 well-structured with a concise opening sentence, a note on contents, a usage line, and clearly formatted Args/Returns sections. Every sentence is informative and there is no redundancy or fluff.

    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 lack of an output schema, the description includes a useful return schema. It also documents all parameters and their purpose, covering the essentials. However, it does not explicitly mention default values (limit=20, offset=0, response_format=markdown) which are present in the schema, so it is not fully self-contained but still sufficiently complete for an agent.

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

    Parameters5/5

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

    The input schema has only a top-level 'params' field with no description, and nested properties like limit, offset, and response_format lack descriptions. The description compensates by listing all five properties with types, meanings, and examples (e.g., city 'Zürich', project_type 'ausbau', limit max results, offset pagination, response_format markdown/json).

    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 fetches running SBB infrastructure construction projects (stations, routes, expansion) and lists the contained fields (name, location, type, procurement step, links). This specific verb+resource combination distinguishes it from siblings like sbb_get_real_estate_projects.

    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 usage context by stating it is suitable for city planning, communication, and spatial planning. However, it does not explicitly mention when not to use it or name alternative tools, so it lacks exclusions but still offers strong contextual 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 and destructiveHint, and the description adds valuable context: data is refreshed every 5 minutes, and the response includes cause, affected lines, and time windows. 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?

    The description is well-structured with a short summary, use-case sentence, parameter list, and return format. Every sentence adds value, and the layout is clean and easy to scan.

    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 read-only data-retrieval tool with one nested parameter and no output schema, the description fully covers what the tool returns (list of records with title, description, published, start, end, type, author), the update frequency, and the available parameters. It is complete for its purpose.

    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?

    The description includes an 'Args' section that explains each parameter (limit, offset, response_format) with default values and allowed options. While the schema also describes these, the description makes the tool usable without needing to inspect the schema, adding clarity.

    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 a specific verb 'abruft' (retrieves) with a clear resource: current rail disruptions and messages. It explicitly mentions the live update interval (alle 5 Minuten) which distinguishes it from related SBB data tools, making its purpose unmistakable.

    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?

    It states 'Ideal für Echtzeit-Monitoring und Kommunikation bei Ereignissen' which clearly indicates when to use the tool. It does not explicitly name alternatives, but the sibling tools cover other data domains, so the context is sufficient.

    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 cover safety (read-only, idempotent, non-destructive). The description adds value by specifying the return type ('str') and the schema of the returned list, including fields like dataset_id, title, records_count, update_frequency, and themes. This goes beyond annotations and helps the agent understand what to expect.

    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, with a clear structure: a brief purpose statement, a line about return fields, and a structured 'Returns' section. Every sentence adds value without redundancy.

    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 list tool with no parameters and no output schema, the description is complete. It explains what the tool does, what it returns, and when to use it, fully covering the agent's needs.

    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?

    Since the tool has zero parameters, there is nothing to explain. The description correctly implies that no input is needed, and the baseline of 4 applies because the description does not obfuscate or add unnecessary parameter detail.

    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 lists all available SBB Open Data datasets from data.sbb.ch, using a specific verb ('listet') and resource ('Datensätze'). It also explicitly mentions the return fields, distinguishing it from sibling tools that fetch specific data types like passenger frequency or rail disruptions.

    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 use: 'Nützlich zur Übersicht und Entdeckung neuer Datensätze' (useful for overview and discovery). It does not explicitly list exclusions or alternatives, but the use case is evident enough to guide an agent.

    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=false. The description adds valuable behavioral context: the data source (DiDok list), coverage of all stops, parameters like minimum query length, and the return schema. This goes beyond the structured 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 well-structured and front-loaded with a clear one-line summary. The docstring-style Args section is informative without waste, and every sentence contributes to understanding the tool's purpose, parameters, and output.

    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 moderate complexity and lack of an output schema, the description fully covers the input parameters, return type, and content of the results. It provides enough detail for an agent to select and invoke the tool correctly without ambiguity.

    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 0% for the top-level 'params' parameter, but the description thoroughly documents all sub-parameters (query, canton, limit, response_format) with examples and meaning. It also explains the return format and fields, adding value beyond the schema's limited descriptions.

    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 searches Swiss train stations and stops using the official DiDok list, with a specific verb (Sucht) and resource. It also distinguishes itself by covering all public transport stops, not just SBB, which differentiates it from sibling tools.

    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 about what this tool does and its scope (all Swiss stops, includes UIC numbers, coordinates, etc.), so an agent can infer when to use it. It does not explicitly mention alternatives or when not to use it, but the context is sufficient.

    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

sbb-opendata-mcp MCP server

Copy to your README.md:

Score Badge

sbb-opendata-mcp 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/malkreide/sbb-opendata-mcp'

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