Skip to main content
Glama

Faceabot Rail Finland (VR)

Server Details

Finnish trains (VR, Helsinki commuter): live direct trains and departures. 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

Disambiguation4/5

Each tool targets a distinct scope: finding stations, departures from a single station, and connections between two stations. There is mild overlap between fi_station_departures and fi_train_connections (both return times, tracks, delays, cancellations), but the one-station vs two-station distinction keeps them separable.

Naming Consistency3/5

All names share a consistent 'fi_' prefix and snake_case formatting, which is good. However, the verb pattern is inconsistent: fi_find_station is verb_noun while fi_station_departures and fi_train_connections are noun phrases, breaking a uniform convention.

Tool Count4/5

Three tools is on the lean side but reasonable for a focused Finnish rail lookup server. Each tool earns its place with a clear use case, though the surface is thin enough that it borders on minimal.

Completeness4/5

The set covers the main rail workflows: station lookup, station departures, and point-to-point connections. A notable gap is the explicit 'direct trains only' limitation (no transfer/multi-leg itineraries) and the lack of train-number/detail lookups, which could hinder some agent requests.

Available Tools

3 tools
fi_find_stationFind a Finnish stationA
Read-onlyIdempotent
Inspect

Finds Finnish passenger stations matching a word (Finnish or Swedish name), with their short codes. Use when: a station name is ambiguous or misspelled. Example: {"query":"Helsinki"}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesPart of the station name

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds two useful behavioral facts beyond them: matching works against both Finnish and Swedish spellings, and results come back with short codes. Result limits/ordering are not mentioned, but that is a minor gap given 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?

Three short lines, front-loaded with the purpose, then the trigger condition, then a concrete example. No sentence is redundant and nothing is buried.

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 correctly discloses what comes back (matching stations plus their short codes), which is the key missing piece. It does not say whether results are ranked or capped, a small omission for a search tool that could return many matches.

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% and the schema already explains "Part of the station name", so the baseline is 3. The description adds value by clarifying that matching is word-based and language-flexible (Finnish or Swedish), and the {"query":"Helsinki"} example concretely shows a single-token query works.

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 Finnish passenger stations by name fragment, and notes it also surfaces the short codes used elsewhere. The station-lookup resource is clearly distinct from the sibling tools (fi_station_departures, fi_train_connections), though the description never names those siblings to draw the contrast explicitly.

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: a station name is ambiguous or misspelled" gives an explicit trigger condition, which is exactly the right context for a fuzzy name resolver. It does not state when not to use it (e.g., when the code is already known and a trip query can be issued directly), 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.

fi_station_departuresNext trains from a Finnish stationA
Read-onlyIdempotent
Inspect

Next train departures from one Finnish station: time, train, destination, track, live delay, cancellations. Use when: someone is at (or going to) a station in Finland. Example: {"station":"Helsinki"}

ParametersJSON Schema
NameRequiredDescriptionDefault
resultsNo
stationYesStation name or short code

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 the safety profile is covered. The description adds genuine behavioral value by disclosing the payload contents — live delay and cancellation data — which is important since no output schema exists. It omits the result-count cap (default 8, max 20) and any freshness/rate-limit context.

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: capability plus returned fields first, then the usage condition, then a copy-pasteable example. No filler sentences and the most decision-relevant information is front-loaded.

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 field enumeration (time, train, destination, track, delay, cancellations) usefully compensates. The main gap is the undocumented 'results' limit and no guidance on resolving station names, but for a two-parameter read tool this is close to 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 coverage is 50%: 'station' is documented in the schema and the example ({"station":"Helsinki"}) reinforces the expected format. The 'results' parameter has no schema description and the description does not explain it, so half the parameters remain unilluminated beyond their names.

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 ('next train departures from one Finnish station') and enumerates the returned fields (time, train, destination, track, live delay, cancellations). It does not explicitly name or contrast with the siblings fi_find_station or fi_train_connections, but the single-station departures-board framing makes it functionally distinguishable.

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: someone is at (or going to) a station in Finland' line gives a concrete situational cue for invoking the tool. It stops short of stating when NOT to use it or routing to alternatives (e.g. fi_find_station for name resolution, fi_train_connections for A-to-B journeys).

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

fi_train_connectionsDirect Finnish trains between two stations (VR)A
Read-onlyIdempotent
Inspect

Direct trains between two Finnish stations (VR long-distance and Helsinki commuter trains): departure and arrival times, tracks, live delays, cancellations. Direct trains only (no transfers). Use when: someone travels by train in Finland (e.g. Helsinki to Tampere). Example: {"from":"Helsinki","to":"Tampere"}

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesArrival station or short code
dateNoOptional day YYYY-MM-DD (Finnish time). Default: today
fromYesDeparture station (Helsinki, Tampere, Turku, Oulu, Lentoasema = Helsinki Airport…) or its short code (HKI)
timeNoOptional time HH:MM (Finnish 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, openWorld, idempotent, and non-destructive, so the safety profile is covered. The description adds meaningful behavioral context beyond that: it specifies 'Direct trains only (no transfers)' and that results include live delays and cancellations. It does not disclose rate limits or output structure, but with annotations present this is a strong addition.

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 compact and front-loaded: purpose and returned data come first, followed by a crucial scope constraint, then usage context and a minimal example. Every sentence 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?

For a read-only tool with no output schema, the description adequately covers what is returned (times, tracks, delays, cancellations) and when to use it. It omits details about the output list structure and does not reference sibling tools, but it is complete enough to call correctly.

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%: the schema already documents the from, to, date, and time parameters well, while results and time_is lack descriptions. The description's example shows expected values for from/to but adds no semantic detail for the undocumented parameters, so it does little 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 clearly states the resource (direct trains between two Finnish stations) and enumerates the returned data (departure/arrival times, tracks, live delays, cancellations). It also names the train operators covered. However, it does not explicitly distinguish this tool from its siblings (fi_find_station, fi_station_departures), so it falls 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' line gives a clear context (someone travels by train in Finland, e.g. Helsinki to Tampere) and the example reinforces it. But there are no when-not conditions or named alternatives, so the agent receives no explicit routing guidance versus sibling tools.

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 observedfi_find_station
    • First observedfi_station_departures
    • First observedfi_train_connections

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources