Skip to main content
Glama

Faceabot Transit Switzerland (SBB/CFF)

Server Details

Swiss trains and public transport: live connections and departures. Official data, free, no key.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct transit need: journey planning between two points (ch_connections), station name resolution (ch_find_station), and departure boards from a single stop (ch_station_departures). The descriptions and 'Use when' guidance make the boundaries crystal clear, so an agent can route requests without confusion.

Naming Consistency4/5

All three tools share a consistent 'ch_' prefix and snake_case format. The patterns are mostly verb_noun (ch_find_station) but the other two are noun phrases, a minor deviation that remains readable and predictable.

Tool Count4/5

Three tools is lean but each covers a genuinely distinct workflow for a focused Swiss transit server. It is slightly on the thin side, though no tool feels redundant or padded.

Completeness4/5

Core workflows—plan a journey, resolve a station name, check next departures—are all covered. Minor gaps exist (e.g. no arrival board or detailed trip/disruption lookup), but agents can work around them via ch_connections.

Available Tools

3 tools
ch_connectionsSwiss public transport connections (SBB/CFF/FFS)A
Read-onlyIdempotent
Inspect

Journeys between two places in Switzerland by train, bus, tram or boat (SBB/CFF/FFS, PostBus and all Swiss operators): departure and arrival times, platforms, transfers, live delays. Use when: someone needs to travel by public transport in Switzerland (e.g. Zürich to Geneva). Example: {"from":"Zürich HB","to":"Genève"}

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesArrival station or stop
dateNoOptional day, YYYY-MM-DD (Swiss time). Default: today
fromYesDeparture station or stop (Zürich HB, Genève, Lausanne, Bern, Basel SBB, Lugano…)
timeNoOptional time HH:MM (Swiss time). Default: now
resultsNo
time_isNodeparture

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, open-world, non-destructive behavior, so the bar is lower. The description adds useful behavioral context beyond annotations: coverage of all Swiss operators and inclusion of live delay data. It omits pagination/return-shape and rate-limit details, but the added operational context is genuine.

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-loaded with the core purpose and scoped with a single 'Use when' clause plus one compact example; no wasted sentences. The example is borderline redundant with the schema's station examples, keeping it just short of a 5.

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 usefully enumerates what comes back (departure/arrival times, platforms, transfers, live delays), which tells the agent what to expect. For a 6-parameter open-world query tool this is nearly sufficient, though timing-parameter usage remains unexplained.

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 67% (mid-range), so the schema already documents most parameters including defaults for date, time, results and time_is. The description adds only an example object illustrating from/to, not semantics for the optional timing parameters, so it neither compensates for gaps nor falls below baseline.

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?

States a specific verb+resource (journeys between two places) with the transport modes and operator coverage (SBB/CFF/FFS, PostBus, all Swiss operators), and lists the returned content: times, platforms, transfers, live delays. This clearly separates it from siblings ch_find_station and ch_station_departures.

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 'Use when' line gives a concrete trigger plus an example (Zürich to Geneva), which is clear context for selection. It stops short of naming alternatives or exclusions, e.g. when to prefer ch_station_departures over this tool, so it doesn't reach the top of the scale.

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

ch_find_stationFind a Swiss station or stop nameA
Read-onlyIdempotent
Inspect

Finds the exact Swiss station or stop names matching a word (German, French or Italian names). Use when: a place name is ambiguous or misspelled. Example: {"query":"Lausanne"}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesPart of the station or stop name

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety and idempotency profile is fully covered. The description adds the useful linguistic note that names may be German, French or Italian, but says nothing about result shape or matching behavior beyond that. With annotations carrying the load, a 3 is appropriate.

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-loaded with the purpose, then the usage trigger, then an example — a clean structure with no wasted prose. The inline JSON example is slightly redundant given the schema already shows the required parameter, keeping it from a 5.

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, so the description carries some burden of explaining what comes back. It implies a set of matching station names but does not describe the return payload (IDs, coordinates, multiple matches), which matters for a disambiguation/autocomplete-style lookup. Adequate but with a real gap for a no-output-schema tool.

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% on the single 'query' parameter, so the schema already documents it. The description adds only marginal framing ('matching a word', an example value) beyond that. Baseline 3 is correct when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource ('Finds the exact Swiss station or stop names matching a word'), which is unambiguous. It implicitly separates itself from siblings (which deal with connections and departures) but never names or contrasts them explicitly, so it stops short of a 5.

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 'Use when: a place name is ambiguous or misspelled' line gives a concrete trigger condition, which is more than most definitions. It does not, however, name an alternative tool or state when not to use it, so it lacks the explicit routing a 5 would require.

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

ch_station_departuresNext departures from a Swiss station or stopA
Read-onlyIdempotent
Inspect

Next departures (train, bus, tram) from one Swiss station or stop: time, line, destination, platform, live delay. Use when: someone is at (or going to) a Swiss station and wants the next departures. Example: {"station":"Bern"}

ParametersJSON Schema
NameRequiredDescriptionDefault
resultsNo
stationYesStation or stop name

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful context about transport modes and return fields (live delay, platform), but does not mention rate limits, authentication needs, or pagination behavior. With annotations carrying the safety burden, a 3 is appropriate.

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 tightly written sentences plus a compact example. The return fields are front-loaded, the usage condition follows, and the example is immediately actionable. No 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 read-only, two-parameter tool with no output schema and annotations covering safety, the description gives sufficient purpose, usage condition, and returned data fields. However, the 'results' parameter behavior (default 8, max 20) is unaddressed, leaving a small gap for an agent that might need to control result count.

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

Parameters2/5

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

Schema description coverage is 50%: the required 'station' parameter is documented in the schema, but the optional 'results' parameter has no description anywhere. The description's example only shows the station format and never addresses the results parameter, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb+resource ('Next departures from one Swiss station or stop') and details returned fields (time, line, destination, platform, live delay). It implicitly distinguishes from ch_connections (connections between stations) by focusing on departures from a single station, but does not explicitly name or contrast siblings.

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?

Provides a clear when-to-use condition: 'someone is at (or going to) a Swiss station and wants the next departures.' No when-not conditions or alternatives (e.g., ch_connections for multi-leg trips) are mentioned, so it stops short of full routing guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • First observedch_connections
    • First observedch_find_station
    • First observedch_station_departures

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time Swiss railway information including departures, connections, train composition, occupancy forecasts, disruptions, and pricing, accessible via natural language in over 100 languages.
    MIT
  • F
    license
    A
    quality
    F
    maintenance
    Independent MCP client by swsistrip for Swiss Federal Railways (SBB/CFF/FFS) — all schedules, prices, ticket links via SBB's official SMAPI.
    9
    15 npm
    3
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources