Skip to main content
Glama

Faceabot Rail Belgium (SNCB/NMBS)

Server Details

Belgian trains for AI agents: live journeys, departures, delays, disruptions. Free, no key.

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

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a clearly distinct function: station name lookup, network disruptions, departures board, journey planning between two stations, and single-train stop tracking. The only mild adjacency is departures vs. connections, but 'one station, next trains' versus 'journey between two stations' is explicit in the descriptions.

Naming Consistency4/5

All tools share a consistent be_ prefix and snake_case with domain-relevant nouns (station, train, rail). The only minor deviation is be_find_station using a verb while the others are noun phrases, though all remain predictable and readable.

Tool Count5/5

Five tools is well-scoped for a real-time rail information server, covering lookup, disruptions, live departures, journey planning, and train tracking without redundancy. Each tool earns its place.

Completeness4/5

The surface covers the core rail-info lifecycle: finding stations, checking disruptions, departures, connections, and train positions. Minor gaps exist (no fare/pricing, no location-based nearest-station lookup), but agents can work around these.

Available Tools

5 tools
be_find_stationFind a Belgian station nameA
Read-onlyIdempotent
Inspect

Finds the exact Belgian station names matching a word (any language). Use when: a station name is ambiguous or misspelled. Example: {"query":"Bruxelles"}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesPart of the station name

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds that matching is language-agnostic and that results are exact station names, but says nothing about result count, ranking, or empty-match behavior.

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 tight lines: purpose, trigger condition, and a concrete example, with the core function front-loaded. Every element earns its place and there is no filler.

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 one-parameter, read-only lookup with no output schema, the description covers what the tool does and when to use it, and annotations carry the safety profile. Only the shape of the returned result (list format, ordering) is left unstated, which is a minor gap.

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 the single parameter is already documented as 'Part of the station name', which is essentially what the description conveys. The 'Bruxelles' example slightly illustrates the partial-name usage, but adds no format or matching rules beyond the schema.

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?

The description gives a specific verb and resource ('Finds the exact Belgian station names matching a word') and scopes it to any language, which is enough to distinguish it from the departure/connection/details siblings by function. It stops short of explicitly naming or contrasting those 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?

It states a concrete trigger condition: 'Use when: a station name is ambiguous or misspelled.' That tells the agent when to reach for this lookup rather than a schedule tool, but there is no explicit when-not or named alternative.

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

be_rail_disturbancesCurrent disruptions on the Belgian rail networkA
Read-onlyIdempotent
Inspect

Current works and disruptions announced on the SNCB/NMBS network. Use when: before advising a train trip in Belgium, to warn about strikes, works or incidents. Example: {}

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoen

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 profile is fully covered by structured data. The description adds the data source (SNCB/NMBS) and the kinds of events reported, but says nothing about data freshness, coverage scope, or result size for a live feed. Adequate given the 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.

Conciseness4/5

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

Two short sentences, front-loaded with the resource and then the usage condition. The trailing "Example: {}" is slightly odd but does usefully signal that no arguments are required.

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?

A read-only, zero-required-argument lookup with no output schema needs only to say what data comes back and when to call it, both of which are covered. Minor gaps are the absence of any note on data freshness or the language parameter, but nothing essential to correct invocation is missing.

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 0% and the single optional lang parameter (fr/nl/en/de, default en) is never mentioned in the description, so an agent may not realize responses can be requested in Dutch, French or German. The enum values are self-explanatory, which keeps this at baseline rather than lower.

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 resource (current works and disruptions on the SNCB/NMBS network), which is clearly distinct from the sibling tools for stations, departures, connections and train details. It does not explicitly name the siblings it differs from, but the domain separation is obvious from the wording.

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?

"Use when: before advising a train trip in Belgium, to warn about strikes, works or incidents" gives a concrete usage context and enumerates the disruption types covered. No alternatives or exclusions are named, so it falls short of a 5.

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

be_station_departuresLive departures from a Belgian stationA
Read-onlyIdempotent
Inspect

Next train departures from one Belgian station: time, destination, platform, live delay, cancellations. Use when: someone is at (or going to) a station and wants the next trains. Example: {"station":"Namur"}

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoen
timeNoOptional HH:MM today (Belgian time). Default: now
resultsNo
stationYesStation name, any language

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so safety is covered. The description adds the useful fact that results include live delay/cancellation data (real-time freshness), but says nothing about data source latency, caching, coverage limits, or auth needs for live feeds.

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 compact lines plus one inline example; the returned-field list is front-loaded before the usage and example cues. Every sentence carries information and nothing is padded.

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 responsibly enumerates the returned fields, and it supplies when-to-use plus an example. Only the unadvertised 'lang' switcher and 'results' bound remain uncovered, which are minor for a single-purpose lookup 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 coverage is 50%: only 'time' and 'station' carry descriptions, while 'lang' and 'results' are undocumented. The description compensates partially with the {"station":"Namur"} example and the note that station names work in any language, but it never mentions 'lang' or the results limit, so the gap is only partly closed.

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 and resource ('next train departures from one Belgian station') plus the exact payload fields returned (time, destination, platform, live delay, cancellations). This cleanly separates it from siblings like be_train_connections (journeys) and be_rail_disturbances (network issues) without needing their schemas.

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?

Explicit 'Use when: someone is at (or going to) a station and wants the next trains' gives a concrete selection context, and the example invocation anchors it. It does not name an alternative tool or state when NOT to use it (e.g. use be_train_connections for trip planning), so it stops short of a 5.

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

be_train_connectionsBelgian train connections (SNCB/NMBS)A
Read-onlyIdempotent
Inspect

Train journeys between two Belgian stations (SNCB/NMBS): departure and arrival times, live delays, platforms, transfers, cancellations. Use when: someone needs to travel by train in Belgium (e.g. Brussels to Liège). Example: {"from":"Bruxelles-Central","to":"Liège-Guillemins"}

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesArrival station
dateNoOptional day, YYYY-MM-DD (Belgian time). Default: today
fromYesDeparture station, any language (Bruxelles-Central, Brussel-Centraal, Brussels Central, Gent-Sint-Pieters…)
langNoLanguage of station namesen
timeNoOptional time HH:MM (Belgian time). Default: now
resultsNo
time_isNodeparture

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds behavioral value beyond them by disclosing what the response contains (live delays, platforms, transfers, cancellations) — important because there is no output schema. It says nothing about auth requirements, rate limits, or behavior when a station name is ambiguous.

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?

Three short lines, front-loaded with the capability, then usage, then a parameter example. The example line is slightly redundant with the schema's own from/to descriptions, but it is cheap and immediately actionable.

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 7-parameter read-only lookup with no output schema, the description covers purpose, trigger, and the shape of the returned journey data — the pieces an agent needs. Remaining parameter details are handled by a fairly rich schema, and no output schema means return values legitimately fall to the description, which addresses them.

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 71%, so most parameters are already documented in the schema, including the language-agnostic station naming and the Belgian-time date/time semantics. The description's example supplies a concrete from/to format but adds nothing about results limits, time_is, or lang beyond the schema. Baseline 3 is appropriate.

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 ('Train journeys between two Belgian stations') and enumerates the payload (times, delays, platforms, transfers, cancellations), so the agent knows exactly what it returns. It does not, however, name or contrast with the siblings (be_train_details, be_station_departures, be_rail_disturbances), leaving the A-to-B journey-planning distinction to inference.

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 triggering scenario with an example route (Brussels to Liège), which is a clear context statement. It offers no exclusions or alternative tools for adjacent cases like a single station's departure board or one train's details, so the agent must guess the boundary with siblings.

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

be_train_detailsOne Belgian train, stop by stopA
Read-onlyIdempotent
Inspect

All stops of one Belgian train today with live delays and platforms. Use when: you know the train number (e.g. IC 2117, S1 1956) and want where it is or when it reaches a stop. Example: {"train":"IC 2117"}

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoen
trainYesTrain type and number, e.g. IC 2117

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds useful freshness and content context with 'today' and 'live delays and platforms', though it does not discuss auth, rate limits, or error behavior.

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 definition is short and front-loaded: purpose first, then usage condition, then example. Every sentence contributes without repetition or filler.

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 two-parameter read tool with no output schema, the description covers purpose, usage, return content, and a request example. The main gap is that the optional language parameter is not explained.

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 required train parameter is explained with format examples, and the description includes a sample invocation. However, the optional lang parameter is not mentioned, leaving one of two parameters undocumented in the description.

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 resource and scope: all stops of one Belgian train today, including live delays and platforms. It is distinguishable from siblings by focusing on a single train's full stop list, though it does not explicitly name alternatives.

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' sentence gives a clear condition: you know the train number and want its location or stop times. It lacks explicit exclusions or sibling routing, such as directing station-level queries to be_station_departures.

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. 5 tool updates
    • First observedbe_find_station
    • First observedbe_rail_disturbances
    • First observedbe_station_departures
    • First observedbe_train_connections
    • First observedbe_train_details

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides real-time Belgian rail (SNCB/NMBS) data via the iRail API, enabling AI agents to query train schedules and live information.
    15 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural-language queries about live Belgian trains, metro, tram and bus services — departures, arrivals, A-to-B journey planning, disruptions and train composition — from Claude or any MCP client speaking Streamable HTTP. It runs remotely on Cloudflare Workers, needs no accounts, and stores no personal data.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides Belgian railway travel information via the iRail API, including station search, live departures/arrivals, route planning, and network disturbances.
    5
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources