Skip to main content
Glama

Server Details

Independent SBB/CFF/FFS MCP — schedules, prices, tickets. By SwissTrip; not the official SBB MCP.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
Fabsbags/sbb-mcp
GitHub Stars
3
Server Listing
sbb-mcp

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.5/5 across 6 of 6 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose: station search, connection search, pagination, trip details, pricing, and ticketing. There is no overlap or ambiguity among their functionalities.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores: 'search_stations', 'search_connections', 'get_more_connections', 'get_trip_details', 'get_prices', 'get_ticket_link'. Convention is uniform.

Tool Count5/5

Six tools is well-scoped for a Swiss railway information and ticket server. Each tool addresses a necessary step in the user journey without being excessive or insufficient.

Completeness4/5

The tool set covers the core workflow: station lookup, connection search with pagination, detailed trip info, pricing, and ticket purchase. Minor gaps like seat reservation or dedicated live departure board exist but do not hinder primary use.

Available Tools

6 tools
get_more_connectionsGet More ConnectionsA
Read-onlyIdempotent
Inspect

Load earlier or later train connections for a previous search. Use the collection ID from search_connections results.

ParametersJSON Schema
NameRequiredDescriptionDefault
directionYes"next" for later trains, "previous" for earlier trains
collection_idYesCollection ID from search_connections results
Behavior3/5

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

Annotations already declare readOnly, idempotent, and non-destructive. Description adds minimal extra behavioral context beyond the parameter dependency (collection ID). 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.

Conciseness5/5

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

Two sentences, 17 words, front-loaded with the core action. Every word earns its place with no redundancy.

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?

Provides sufficient context for a simple pagination tool with no output schema. Could mention behavior when no more connections or invalid collection_id, but the existing information is adequate.

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 the schema already explains each parameter. The description reinforces the collection_id relationship but adds no new semantic meaning beyond the schema.

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?

Clearly states the verb 'Load' and resource 'earlier or later train connections for a previous search'. Distinguishes from sibling 'search_connections' by specifying dependency on its results.

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 instructs to use the collection ID from search_connections results, providing clear when-to-use context. Does not explicitly list alternatives or when-not-to-use, but the sibling set implies limited scenarios.

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

get_pricesGet PricesA
Read-onlyIdempotent
Inspect

Get ticket prices in CHF for one or more train connections. Supports Half-Fare card (Halbtax) and GA travelcard discounts. Up to 10 trip_ids per call — batch them in a single request rather than calling once per connection. Use trip_ids from a recent search_connections result; do not invent IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
trip_idsYesTrip IDs from search_connections results
traveler_typeNoTraveler typeADULT
reduction_cardNoSwiss reduction card: HALF_FARE (Halbtax), GA (General Abonnement), or NONEHALF_FARE
Behavior5/5

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

Adds context beyond annotations: price currency (CHF), discount support, batching limit, and input source requirement. No contradiction with annotations (readOnly, idempotent, non-destructive).

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?

Extremely concise: three sentences covering purpose, key constraints, and input prerequisites. No redundant information. Front-loaded with main 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?

For a simple read operation with no output schema, the description fully covers what the tool does, its inputs, constraints, and prerequisites. No gaps given the complexity and structured fields.

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?

Although schema coverage is 100%, the description adds meaning by explaining trip_ids source and limit, and clarifying the reduction_card enum values (Halbtax, GA). It compensates for any ambiguity in the enum labels.

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 states 'Get ticket prices in CHF for one or more train connections' with a specific verb and resource, clearly distinguishing it from sibling tools like get_more_connections or search_connections.

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?

Provides explicit guidance: batch up to 10 trip_ids, use IDs from search_connections, do not invent IDs. Also specifies supported discount cards (Half-Fare, GA). Clearly tells when to use and what to avoid.

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

get_trip_detailsGet Trip DetailsA
Read-onlyIdempotent
Inspect

Get detailed information about a specific train connection including all intermediate stops, platforms, and occupancy. Use a trip ID from search_connections results.

ParametersJSON Schema
NameRequiredDescriptionDefault
trip_idYesTrip ID from search_connections results
Behavior4/5

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

Annotations already declare read only and non-destructive. Description adds behavioral details on what is returned (stops, platforms, occupancy) 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 efficient sentences with purpose first, then usage. No wasted words, 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?

For a simple tool with one parameter and no output schema, description covers core purpose and input source. Could mention return format but adequate.

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?

Parameter trip_id is fully described in schema. Description adds relational context linking trip_id to search_connections results, providing extra semantic value.

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 'Get detailed information about a specific train connection' listing specific elements (intermediate stops, platforms, occupancy) and differentiates from siblings like search_connections and get_prices.

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 says 'Use a trip ID from search_connections results', guiding when to invoke. Does not explicitly mention alternatives but context implies appropriate usage.

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

search_connectionsSearch ConnectionsA
Read-onlyIdempotent
Inspect

Find train connections between two Swiss stations. Accepts station names directly (e.g. "Zürich HB", "Bern") or UIC IDs — name resolution happens internally. Returns live schedules with departure/arrival times, duration, transfers, and trip IDs for downstream pricing/details/ticket calls. Live data: includes delays and cancellations for trains departing within 30 min.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesDestination station name or ID (e.g. "Bern" or "8507000")
dateNoTravel date in YYYY-MM-DD format (default: today)
fromYesOrigin station name or ID (e.g. "Zurich HB" or "8503000")
timeNoTime in HH:MM (Europe/Zurich local time, 24h). By default treated as DEPARTURE time. Default: now.
arrival_timeNoDefaults to false (treat `time` as departure). Only set true when the user EXPLICITLY says they want to ARRIVE by a specific time ("I need to be in Bern by 9am", "arriving at 14:00"). For loose phrases like "around 9am", "morning", or "tomorrow at 9", leave this false — those mean departure time.
Behavior5/5

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

Beyond annotations (readOnly, idempotent), the description discloses important behavioral traits: name resolution happens internally, live data includes delays/cancellations for trains within 30 min, and returns trip IDs for downstream calls. 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 concise and well-structured: first states purpose, then input format, then output, then live data note. No redundant sentences; all information earns its place.

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?

Despite no output schema, the description adequately explains return values (times, duration, transfers, trip IDs) and live data behavior. It does not mention pagination or limits, but the sibling get_more_connections covers that. Sufficient for an agent to use 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%, so each parameter has a description. The tool description adds value by clarifying that from/to accept names or UIC IDs, and provides detailed guidance on the arrival_time parameter (when to set true vs false). This improves usability beyond schema alone.

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 finds train connections between two Swiss stations. It specifies accepted input types (station names or UIC IDs) and output (live schedules with times, duration, transfers, trip IDs). This distinguishes it from siblings like search_stations (station lookup) and the downstream 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 guidance on when to use the tool (finding connections) and includes specific usage rules for the arrival_time parameter (only set true when user explicitly states arrival). However, it does not explicitly contrast with siblings like get_more_connections or state when NOT to use this tool.

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

search_stationsSearch StationsA
Read-onlyIdempotent
Inspect

Search for Swiss train stations, addresses, or points of interest by name. Returns UIC station IDs (e.g. "8503000" for Zürich HB) used by the other tools. Note: search_connections accepts station names directly, so this tool is only needed when the user explicitly asks for station info or when you need disambiguation between multiple matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results
queryYesStation name to search for (e.g. "Zurich", "Bern", "Interlaken")
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive. Description adds that it returns UIC IDs and is used for disambiguation, complementing well 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?

Two sentences, front-loaded with purpose, minimal waste.

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?

For a simple search tool with 2 params and no output schema, description mentions output format and disambiguation use case. Could add details on return structure.

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 clear descriptions for both parameters. Description adds no extra meaning to parameters beyond schema, but links to output format.

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?

Clearly states it searches for Swiss train stations, addresses, or POIs by name, and distinguishes from sibling search_connections by noting that the latter accepts station names directly.

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 (user asks for station info or disambiguation) and when not (search_connections accepts names directly), and mentions output UIC IDs for other tools.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.