Skip to main content
Glama

Ferry Timetable

get_ferry_schedule
Read-onlyIdempotent

Retrieves a ferry line's timetable from open GTFS feeds: next departures today, sailings per day, weekly rhythm, and crossing time.

Instructions

One ferry line by id from find_ferries: both ends with country, operator site and booking link, and a timetable digest from open GTFS feeds — next departures today in local time, sailings per day, daytime and night rhythm, weekdays over the next 8 days, crossing time. available: false means no open timetable is matched, not that the ferry does not run. Use it for when the next ferry leaves, how often it runs and how long the crossing takes.

Input Schema

NameRequiredDescriptionDefault
idYesFerry line id from find_ferries, e.g. r5958961.
localeNoLanguage the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.9.9

TDQS

A4.4/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive), but the description adds the genuinely non-obvious parts: data provenance from open GTFS feeds, that times are local, and the critical failure semantic that 'available: false means no open timetable is matched, not that the ferry does not run.' That caveat directly prevents a wrong inference an agent would otherwise make from the payload.

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 identity and return contents, then the important 'available: false' caveat, then usage. The opening sentence is a long clause chain that takes effort to parse, but no clause is filler.

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 an output schema present, return shape need not be explained, yet the description still tells the agent what categories of data appear and how to read the false-availability case. For a read-only, two-parameter lookup with full schema coverage, nothing needed for a correct call 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 100% and the locale parameter already carries detailed guidance (enum values, 'set it on every call', fallback behavior), so the schema does the heavy lifting. The description only reinforces that the id comes from find_ferries, which the schema's own id description also states — no net new parameter meaning.

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 ('One ferry line by id from find_ferries') and immediately enumerates what the response contains: endpoints with country, operator site, booking link, and a GTFS-derived timetable digest. It explicitly positions itself relative to the sibling find_ferries, so an agent can tell discovery from detail without opening either schema.

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 final sentence gives explicit use cases ('when the next ferry leaves, how often it runs and how long the crossing takes') and the opening phrase routes the agent through find_ferries to obtain the id first. It stops short of an explicit exclusion (e.g. 'do not use for route planning between arbitrary points'), so it is clear context rather than a full when/when-not map.

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