Skip to main content
Glama

show_departures

Read-only

Der Vordereingang für jede Abfahrtsfrage eines Menschen: liest die Tafel einer Haltestelle wie departures und liefert sie zusätzlich als Ansicht aus, die ein Wirt mit Ansichten dem Nutzer zeigt — je Abfahrt Linie, Ziel, Gleis/Steig, Zeit und Echtzeit-Lage. Beantwortest du einem Menschen eine Abfahrtsfrage, ruf dies statt departures, das für Ergebnisse ist, die du weiterverarbeitest. Pflicht ist die Halte-Id, wie dort: id — eine Id aus resolve_location, kein Haltestellen-Name; render_payload entfällt. Der Antwort-Text ist der von departures; die Rohdaten daneben tragen nur die Felder, die die Ansicht zeichnet. Anleitung: get_usage_guide mit tool='departures'. Anti-Fab: Linien, Ziele, Zeiten und Gleise ausschließlich aus dem Output dieses Aufrufs.

Input Schema

NameRequiredDescriptionDefault
idYesStop id to read the board of, as the resolver hands it out: a DHID (`"de:03241:57"`, `at:…`, `ch:…`, `it:…`) or a station id (`"Parentch:1:sloid:3000"`). Resolve the stop first — a name here is an argument error.
langNoDie Sprache der Namen: `'de'` (Vorgabe), `'it'`, `'fr'`, auch mit Region (`'de-CH'`).
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.
linesNoOnly the departures of these lines, by the ids a board writes: the line alone (either direction) as at `mot.line.id`, or line@direction as at `mot.line.direction.ids` (`"de:VBN-VH:6002:_3@0"`); several combine. A line NUMBER (`"9"`) is no id — read the id off a board first. An entry that is no line is an argument error.
modesNoTransport-mode filter; the board then shows nothing else. Entries: `"bus"`, `"tram"`, `"subway"`, `"train"`/`"rail"`, `"ferry"`, `"air"` (flights), `"transit"` (all of them but flights); 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 each departure's way (`pathOnMap`, `pathSource`, `additionalInfos.pathKind`) — 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.
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` it reads the last rides before the window ends: pick it so the window ENDS where the question does. The last ride of a day is `first_last`. Omit for a normal next-N lookup.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / modes / description
      Previous value: -"Transport-mode filter; the board then shows nothing else. Entries:\n`\"bus\"`, `\"tram\"`, `\"subway\"`, `\"train\"`/`\"rail\"`, `\"ferry\"`,\n`\"transit\"`; several combine. Another entry — a street mode, a misspelling\n— is an argument error, not a dropped filter: a board lists scheduled\nservices. Omitted or empty = all modes. A Stadtbahn or\nlight-rail mention needs BOTH labels — `[\"tram\",\"subway\"]`: which of the\ntwo such a network carries depends on the dataset rather than on the\nvehicle. Set the filter only when the user really asks for a vehicle type;\nthe guide has the rest of the vocabulary and the traps."New value: +"Transport-mode filter; the board then shows nothing else. Entries:\n`\"bus\"`, `\"tram\"`, `\"subway\"`, `\"train\"`/`\"rail\"`, `\"ferry\"`, `\"air\"`\n(flights), `\"transit\"` (all of them but flights); several combine. Another entry — a street mode, a misspelling\n— is an argument error, not a dropped filter: a board lists scheduled\nservices. Omitted or empty = all modes. A Stadtbahn or\nlight-rail mention needs BOTH labels — `[\"tram\",\"subway\"]`: which of the\ntwo such a network carries depends on the dataset rather than on the\nvehicle. Set the filter only when the user really asks for a vehicle type;\nthe guide has the rest of the vocabulary and the traps."
  2. Changed1 schema field changed
    • addedInput schema / properties / lang
      Added value: +{
      +  "description": "Die Sprache der Namen: `'de'` (Vorgabe), `'it'`, `'fr'`, auch mit Region (`'de-CH'`).",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / id / description
      Previous value: -"Stop id to read the board of, as the resolver hands it out: a DHID (`\"de:03241:57\"`,\n`at:…`, `ch:…`) or a station id (`\"Parentch:1:sloid:3000\"`). Resolve the stop first — a\nname here is an argument error."New value: +"Stop id to read the board of, as the resolver hands it out: a DHID (`\"de:03241:57\"`,\n`at:…`, `ch:…`, `it:…`) or a station id (`\"Parentch:1:sloid:3000\"`). Resolve the stop first — a\nname here is an argument error."
  4. Changed1 schema field changed
    • changedInput schema / properties / id / description
      Previous value: -"Stop id to read the board of, as a DHID (`\"de:03241:57\"`; in Austria and\nSwitzerland `at:…`/`ch:…`). Resolve the stop first — a name here is an\nargument error."New value: +"Stop id to read the board of, as the resolver hands it out: a DHID (`\"de:03241:57\"`,\n`at:…`, `ch:…`) or a station id (`\"Parentch:1:sloid:3000\"`). Resolve the stop first — a\nname here is an argument error."
  5. Changed2 schema fields changed
    • changedInput schema / properties / extended / description
      Previous value: -"`true` keeps the map data in the text: every stop's coordinate, the whole\ncourse of each run, and a polyline where the board carries one — for an\napplication that DRAWS the board. It multiplies the answer. A chat client\nleaves it off."New value: +"`true` keeps the map data in the text: every stop's coordinate, the whole\ncourse of each run, and each departure's way (`pathOnMap`, `pathSource`,\n`additionalInfos.pathKind`) — for an application that DRAWS the board. It\nmultiplies the answer. A chat client leaves it off."
    • changedInput schema / properties / time_range_seconds / description
      Previous value: -"Time WINDOW in seconds, starting at `time`. Together with `last_of_window`\nthis answers „letzte Fahrt\": pick it so the window ENDS after end of\nservice (from the evening on, `28800` = 8 h rather than 4 h). Omit for a\nnormal next-N lookup."New value: +"Time WINDOW in seconds, starting at `time`. Together with `last_of_window`\nit reads the last rides before the window ends: pick it so the window ENDS\nwhere the question does. The last ride of a day is `first_last`. Omit for a\nnormal next-N lookup."
  6. Changed2 schema fields changed
    • changedInput schema / properties / id / description
      Previous value: -"Stop id to read the board of, as a DHID (`\"de:03241:57\"`). Resolve the\nstop first — a name here is an argument error."New value: +"Stop id to read the board of, as a DHID (`\"de:03241:57\"`; in Austria and\nSwitzerland `at:…`/`ch:…`). Resolve the stop first — a name here is an\nargument error."
    • changedInput schema / properties / lines / description
      Previous value: -"Only the departures of these lines, by the ids a board writes: the line alone\n(either direction) as at `mot.line.id`, or line@direction as at\n`mot.line.direction.ids` (`\"de:nds-gvh:gvh-2-9:_1@0\"`); several combine. A line\nNUMBER (`\"9\"`) is no id — read the id off a board first. An entry that is no line\nis an argument error."New value: +"Only the departures of these lines, by the ids a board writes: the line alone\n(either direction) as at `mot.line.id`, or line@direction as at\n`mot.line.direction.ids` (`\"de:VBN-VH:6002:_3@0\"`); several combine. A line\nNUMBER (`\"9\"`) is no id — read the id off a board first. An entry that is no line\nis an argument error."
  7. Changed1 schema field changed
    • addedInput schema / properties / lines
      Added value: +{
      +  "description": "Only the departures of these lines, by the ids a board writes: the line alone\n(either direction) as at `mot.line.id`, or line@direction as at\n`mot.line.direction.ids` (`\"de:nds-gvh:gvh-2-9:_1@0\"`); several combine. A line\nNUMBER (`\"9\"`) is no id — read the id off a board first. An entry that is no line\nis an argument error.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
  8. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/non-destructive, so the bar is lower, and the description still adds real behavior: the response text equals `departures`, the raw payload carries only view-drawn fields, the id must come from `resolve_location`, and an explicit anti-fabrication constraint. It stops short of describing pagination or view rendering mechanics, but the added context is meaningful.

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?

Purpose and the sibling-routing decision are front-loaded before the id requirement and the guide pointer, so an agent gets the critical selection signal first. The heavy bold markup and long compound sentences add some density, but nothing is truly redundant.

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 16-parameter tool with no output schema, the description states what the answer contains (the `departures` text plus a view-shaped raw payload), the mandatory id source, and where to find further guidance. The safety profile is carried by annotations, so the remaining gap is only detail on the optional filters, which the schema covers.

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% so baseline is 3, but the description adds genuinely new semantics: `render_payload` is dropped here, `id` must be a resolver-issued id rather than a stop name, and the output field set differs from `departures`. It does not re-explain the many optional filters, which the schema already handles well.

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?

Opens with a bold, specific framing ('Der Vordereingang für jede Abfahrtsfrage eines Menschen'), states it reads a stop's board like `departures` and returns it additionally as a view, and names the sibling it replaces. An agent can distinguish it from `departures` 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing rule: 'Beantwortest du einem Menschen eine Abfahrtsfrage, ruf dies statt `departures`, das für Ergebnisse ist, die du weiterverarbeitest' — when to use it, which alternative to avoid, and why. Also points to `get_usage_guide` for the deeper vocabulary.

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