Skip to main content
Glama

departures

Read-only

Abfahrten oder Ankünfte für EINE Haltestelle — als Daten, für Ergebnisse, die du weiterverarbeitest. Steht show_departures in deinem Werkzeug-Satz, ist das der Vordereingang für die Frage eines Menschen. Für „wann fährt von X", „letzte Stadtbahn von X" kommt die Auskunft aus diesen Werkzeugen, nicht aus dem Allgemeinwissen; für eine A→B-Frage aus connections. Pflicht ist eine konkrete Stop-id aus einer vorhergehenden Ortsauflösung (z.B. 'de:03241:57'); ein Haltestellen-NAME in id ist ein Argument-Fehler, keine leere Tafel. Optional: time und is_arrival_time; modes; direction (Halt-Name, in dessen Richtung gefahren wird) bzw. für eine weiche Angabe target_bearing mit bearing_tolerance; arrival_departure; für „letzte Fahrt des Tages" time_range_seconds zusammen mit last_of_window; und für den Umfang verbosity, limit sowie render_payload. modes und direction schränken hart ein. Eine leere Tafel ist keine Auskunft: blieb sie mit ['tram'] („Straßenbahn") leer, mit ['tram','subway'] nachfassen — sonst ohne den Filter. Anleitung: get_usage_guide mit tool='departures' — die Fenster-Kette für „letzte Fahrt", die Echtzeit-, Ausfall- und Zitier-Felder. Anti-Fab: Linien, Richtungen, Zeiten, Gleise, Verspätung und Ausfall ausschließlich aus dem Output dieses Aufrufs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesStop id to read the board of, as a DHID (`"de:03241:57"`). Resolve the stop first — a name here is an argument error.
timeNoISO 8601 timestamp (e.g. `"2026-06-15T08:30:00Z"`). Omit for now. Resolve a spoken time with the time tool rather than computing one.
limitNoMaximum number of departures, at least 1. Default 5, values above 15 are served as 15.
modesNoTransport-mode filter; the board then shows nothing else. Entries: `"bus"`, `"tram"`, `"subway"`, `"train"`/`"rail"`, `"ferry"`, `"transit"`; several combine. Another entry — a street mode, a misspelling — is an argument error, not a dropped filter: a board lists scheduled services. Omitted or empty = all modes. A Stadtbahn or light-rail mention needs BOTH labels — `["tram","subway"]`: which of the two such a network carries depends on the dataset rather than on the vehicle. Set the filter only when the user really asks for a vehicle type; the guide has the rest of the vocabulary and the traps.
formatNoAnswer serialisation: `"toon"` (default) or `"json"` — the detail is in `get_usage_guide`. **An agent leaves this out.**
extendedNo`true` keeps the map data in the text: every stop's coordinate, the whole course of each run, and a polyline where the board carries one — for an application that DRAWS the board. It multiplies the answer. A chat client leaves it off.
directionNoName of a stop the user wants to head TOWARD („Richtung Wettbergen") — not a routing destination. The board keeps only departures heading that way, whether the named stop is the terminus or a stop downstream of the queried one. Matching is case-insensitive and area-prefix-tolerant.
verbosityNoHow much of each departure comes back: `"compact"` (default — everything an answer is cited from) or `"full"` (adds the onward stops of the run, and with them the per-stop cancellation marker). A third word is an argument error, not the default.
last_of_windowNoWhich end of a `time_range_seconds` window to read: omitted or `false` the FIRST departures, `true` the LAST ones (the end-of-service question). An answer carrying `window_truncated: true` beside its board did NOT reach the window's end — its last entry is then not the last departure. Without a window it has no effect.
render_payloadNo`true` appends the same board again as raw JSON, addressed to the user rather than to the model — for an application that draws a departure board. A chat client leaves this off: it is the whole answer twice.
target_bearingNoTarget bearing in degrees (0=N, 90=E, 180=S, 270=W) for a SOFT direction („Richtung Norden", „Richtung Stadt") instead of a stop name. The board keeps only departures whose course lies within `bearing_tolerance` of it. Mutually exclusive with `direction`.
is_arrival_timeNo`true` reads `time` as an ARRIVAL time — the same as `arrival_departure = "arrivals"`.
arrival_departureNo`"arrivals"` (when vehicles reach `id`) or `"departures"` (default) — a third value is an argument error. Wins over `is_arrival_time` when both are set.
bearing_toleranceNoAngular tolerance in degrees for `target_bearing`. Default ±60°.
time_range_secondsNoTime WINDOW in seconds, starting at `time`. Together with `last_of_window` this answers „letzte Fahrt": pick it so the window ENDS after end of service (from the evening on, `28800` = 8 h rather than 4 h). Omit for a normal next-N lookup.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only/open-world/non-destructive, and the description adds non-redundant behavior: an empty board is not a no-information answer, `modes` and `direction` are hard filters, an invalid mode or stop name is an argument error, and all journey facts must be cited only from this tool's output. This is exactly the anti-fabrication and error-semantics context an agent needs beyond the annotations.

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?

The text is dense but front-loaded, leading with the one-stop purpose before moving to alternatives and invocation rules. Bold key phrases and the final anti-fabrication rule earn their place; it is longer than a minimal description, but for a 15-parameter tool with several traps, the length is justified. A more scannable list structure would have pushed it to 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?

For a tool with no output schema, it covers selection, required/optional parameter usage, error cases, empty-board behavior, and delegation to `get_usage_guide` for real-time/cancellation/citation fields. It stops short of self-contained output details (which are referred to the guide), so an agent without access to that guide would be missing some return-field semantics.

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 the schema already documents all 15 parameters, the description adds value by grouping them by intent: required resolved `id`, time/arrival switches, hard vs soft direction filters, the `time_range_seconds` + `last_of_window` combination for last-trip questions, and payload/verbosity controls for chat vs drawing applications. It also flags the mutual exclusion of `target_bearing` and `direction` and the tram/subway labeling trap.

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 opening sentence names the operation precisely: departures or arrivals for a single stop, delivered as data for downstream processing. It also distances the tool from route planning by steering A→B questions to `connections`, and distinguishes it from the human-facing `show_departures` sibling, so an agent can select it without opening the schema.

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?

The description gives explicit when-to-use rules: single-stop departure questions come from this tool family, A→B questions from `connections`, and `show_departures` is the front end when present. It also mandates a pre-resolved stop `id`, names the `get_usage_guide` route for nuance, and tells the agent how to recover from an empty filtered board.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources