Skip to main content
Glama

connections

Read-only

Plant ÖPNV-Verbindungen von A nach B in Deutschland, Österreich und der Schweiz (Echtzeit in Deutschland und der Schweiz; Österreich: Fahrplan ohne Echtzeit), Fernrouten eingeschlossen — als Daten, für Ergebnisse, die du weiterverarbeitest. Steht show_connections in deinem Werkzeug-Satz, ist das der Vordereingang für die Frage eines Menschen. Für „wie komme ich von X nach Y" kommt die Auskunft aus diesen Werkzeugen. Pflicht sind BEIDE Endpunkte: origin_id UND destination_id aus einer Ortsauflösung, mit origin_type/destination_type — ODER origin_lat+origin_lon+destination_lat+destination_lon; ein NAME in einem Id-Feld ist ein Argument-Fehler. Optional: time, is_arrival_time; via_id bzw. via_lat+via_lon mit via_type, oder bis zu vier vias (through/stopover); not_via, no_change_at; je Ende access_modes/egress_modes (only/prefer); cancelled (include/mark); die hart einschränkenden Filter modes, only_lines/exclude_lines, submodes_allow/submodes_deny, max_transfers, max_walk_minutes/max_walk_meters, max_walk_from_origin/max_walk_to_destination (500/1000/2000/5000 m), walk_speed, accessibility_profile (dazu accessibility_unknown: refuse/admit), include_rental_bike, bike_carriage (true/allow_unknown), prefer_flat, mobility_profile, taxi_pickup (door/rank); verbosity, limit, render_payload. Höhenmeter: nur Fuß-/Rad-Abschnitte tragen ascentInMeters/descentInMeters. Durchbindung: staySeated: true an einem Abschnitt heißt, der Fahrgast bleibt aus dem vorigen sitzen — kein Umstieg, also auch keinen zählen. Fehlt das Feld, ist nichts gesagt; nie selbst herleiten. Rad-Tempo: Bei einer Radfahrt setzt cycling_profile das Tempo des Fahrers und damit die gemeldete Dauer — family bei kleinen Kindern, ebike bei E-Bike/Pedelec; sonst weglassen (= normal). Fahrradmitnahme: Geht es um ein Rad, sprich je Abschnitt bikeCarriageConditions aus (Bedingungen des Verbunds zur Abfahrtszeit); bikesAllowed/bikeCarriageNote sind nur die Grundregel, bikeCarriageCoverage die Wissensgrenze. Unbekannt: unknown in additionalInfos.accessibility bzw. bikeCarriage eines Abschnitts ist weder barrierefrei noch Rad erlaubt. Genannter Wunsch: Nennt jemand, was ihn stört ("nicht in der Innenstadt parken"), hol die Option, die das löst, als EIGENEN Aufruf (mobility_profile) und empfiehl sie aus ihrem Nutzen — mit dem Nachteil, den die Antwort ihr gibt. Nicht umgesetzt: was not_considered nennt, blieb unberücksichtigt — nie als erfüllt ausgeben; broken_journeys fahren nicht. Anleitung: get_usage_guide mit tool='connections' — lies sie, bevor du filterst. Anti-Fab: Linien, Zeiten, Halte, Anlagen und Gleise ausschließlich aus dem Output dieses Aufrufs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
timeNoISO 8601 timestamp (e.g. `"2026-06-15T08:30:00Z"`). Omit to plan from now. Resolve a spoken time with the time tool rather than computing one.
viasNoZwischenhalte in Reiserichtung, höchstens 4, statt `via_id`/`via_lat`/`via_lon`: je `id`+`type` (wie ein Endpunkt) oder `lat`+`lon`, dazu `kind`, `stay_minutes`.
limitNoMaximum number of journeys, at least 1. Default 5, values above 15 are served as 15.
modesNoTransport-mode restriction, not a preference: nothing outside the list is planned. The footpath always stays allowed — the way to, from and between stops goes on foot — while `["foot"]` on its own plans no ride at all. Entries: `"bike"`, `"bike_rental"`, `"foot"`, `"car"`, `"taxi"`, `"scooter"`, `"transit"`, `"bus"`, `"tram"`, `"rail"`, `"subway"`, `"ferry"`; several combine. An entry outside that list is an argument error, not a dropped filter. Omitted or empty = all standard transit modes, the ferry included. Set only when the user insists on a mode; the guide has the vocabulary and the traps.
formatNoAnswer serialisation: `"toon"` (default) or `"json"` — the detail is in `get_usage_guide`. **An agent leaves this out.**
via_idNoIntermediate stop the route must pass through („über X"), as an id in the same form as `origin_id`. The route is then planned A → via → B.
not_viaNoHalt-Ids wie `origin_id`, die keine Verbindung berührt.
via_latNoVia latitude, for an intermediate address or POI without an id. Goes with `via_lon`.
via_lonNoVia longitude. Goes with `via_lat`.
extendedNo`true` keeps the map data in the text: every stop's coordinate, every leg's polyline, and the whole stop sequence with them — for an application that DRAWS the route, at two to three times the answer. A chat client leaves it off.
via_typeNoWhat `via_id` is. Same values as `origin_type`.
cancelledNo`exclude` (Default), `include` (dazu `broken_journeys` mit Grund) oder `mark` (dazu jeder Halt beurteilt und wo neu zu suchen ist).
origin_idNoOrigin id. A DHID (`de:NNNNN:NNN`; in Austria and Switzerland `at:…`/`ch:…`) for a stop, otherwise the resolver's `main` id of the address or POI. Resolve the place first — a name here is an argument error.
verbosityNoHow much of each journey comes back: `"compact"` (default — everything an answer is cited from) or `"full"` (adds the stops in between). A third word is an argument error, not the default.
only_linesNoLine whitelist. Entries are line tokens as printed on the vehicle (`"6"`, `"U3"`); a journey is kept only if every transit leg uses one of them.
origin_latNoOrigin latitude, WGS-84 decimal degrees — the fallback when no id is at hand, and the one retry worth making when resolved ids find nothing.
origin_lonNoOrigin longitude. Goes with `origin_lat`.
walk_speedNoWalking speed of the foot legs in metres/second, between 0.3 and 3 m/s — outside that it is an argument error. Default ≈1.33, slow ≈0.7, brisk ≈2.0. Overrides the walk speed of `accessibility_profile`.
origin_typeNoWhat `origin_id` is: `"stop"` (default), `"address"` or `"poi"`. The backend resolves an address or a POI to its real name from the id.
prefer_flatNo`true` plant die hügel-ärmste statt der sonst gewählten Rad-Route: die Suche gewichtet die Steigung und nimmt dafür Umwege in Kauf, nur auf Rad-Abschnitten. Keine Zusage — ohne flachere Alternative kommt dieselbe Route; die Höhenmeter der Antwort sagen es. Wann setzen: die Anleitung.
taxi_pickupNoWo das Taxi die Fahrten trifft: `door` (Default, am Halt) oder `rank` (am Taxistand).
access_modesNoWeg zur ersten Haltestelle: Einträge `fahrzeug[:own|sharing][:only|prefer]`, Fahrzeug `walk`, `bike`, `scooter`, `car`, `taxi`; `own`/`sharing` eigenes/geliehenes (sonst gleich wessen); `only` nur damit, `prefer` (Default) neben dem Fußweg.
egress_modesNoWie `access_modes`, für den Weg von der letzten Haltestelle.
no_change_atNoHalt-Ids wie `origin_id`, an denen keine Verbindung umsteigt.
bike_carriageNoDas Rad fährt auf jeder Fahrt mit: `true` nur auf Fahrten, die es bekanntlich mitnehmen, `'allow_unknown'` auch ohne Angabe.
cycling_speedNoRad-Tempo in Metern/Sekunde, 1 bis 12 — außerhalb ein Argument-Fehler. Überschreibt `cycling_profile`. Richtwerte: Familie ≈2.8, normal ≈5, Pedelec ≈6.5.
exclude_linesNoLine blacklist, same token form as `only_lines`. A journey is dropped if any transit leg uses one of them.
max_transfersNoUpper bound on interchanges: `0` = direct, up to `3`. Omit unless the user constrains transfers: the backend then derives the search depth from the trip's air-line distance and escalates it when the first attempt finds nothing, so omitting never loses a connection.
submodes_denyNoFine submode blacklist, same vocabulary as `submodes_allow`. A journey is dropped if any transit leg matches one.
destination_idNoDestination id. Same form as `origin_id`.
render_payloadNo`true` appends the same journeys again as raw JSON, addressed to the user rather than to the model — the map geometry an application draws from. A chat client leaves this off: it is the whole answer twice.
submodes_allowNoFine submode whitelist — finer than `modes`, which only separates bus/tram/rail/subway. Entries: `"sbahn"`, `"regionalbahn"`, `"ice"`, `"ic"`, `"ir"`, `"nj"`, `"fernverkehr"`, `"stadtbahn"`, `"ubahn"`, `"bus"`, `"regionalbus"`, `"stadtbus"`. A journey is kept only if every transit leg matches one.
cycling_profileNoWer auf dem Rad sitzt, und damit das Tempo der Rad-Abschnitte: `family` (mit kleinen Kindern), `normal` (Default, unverändert) oder `ebike` (Pedelec). Ein anderer Name ist ein Argument-Fehler.
destination_latNoDestination latitude. Same use as `origin_lat`.
destination_lonNoDestination longitude. Goes with `destination_lat`.
is_arrival_timeNo`true` reads `time` as the desired ARRIVAL time instead of the departure time.
max_walk_metersNoCap on the summed walking DISTANCE in metres. Works like `max_walk_minutes`, on the metres walked.
destination_typeNoWhat `destination_id` is. Same values as `origin_type`.
max_walk_minutesNoCap on the summed walking TIME in minutes: every journey of the answer keeps to it.
mobility_profileNoHow the first and the last mile may be covered, by name: `"transit"` (default — both ends on foot), `"transit_plus_sharing"` (a shared bike), `"door_to_door"` (being driven), `"park_and_ride"` or `"bike_and_ride"` (one's OWN car or bicycle, left where the transit leg starts). Another name is an argument error. It widens those two ends, restricts no ride and promises nothing. When to set which, and how it composes with `modes`, is in the usage guide.
include_rental_bikeNo`true` adds a rental-bike leg (park-and-bike / station rental). Equivalent to naming `"bike"` in `modes` together with a transit mode.
max_walk_from_originNoHöchstens so weit zu Fuß vom Start zur ersten Haltestelle, Meter über die Straße: 500, 1000, 2000 oder 5000 — anderes ist ein Argument-Fehler.
accessibility_profileNoMobility profile by name: `"Standard"` (default), `"WheelchairRobust"`, `"WalkerComfort"` or `"IndividualComfort"`. Each bundles its accessibility constraints and walk speed; another name is an argument error. Where the wheelchair profiles find no stated step-free ride, `accessibility_routing` says what the journeys beside it are. What each profile constrains is in the usage guide.
accessibility_unknownNoNur mit `WheelchairRobust`/`WalkerComfort`: `refuse` nimmt nur als stufenfrei Ausgewiesenes, `admit` auch, worüber nichts bekannt ist. Weggelassen: siehe Anleitung.
max_walk_to_destinationNoWie `max_walk_from_origin`, von der letzten Haltestelle zum Ziel.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / max_walk_from_origin
      Added value: +{
      +  "default": null,
      +  "description": "Höchstens so weit zu Fuß vom Start zur ersten Haltestelle, Meter über die Straße:\n500, 1000, 2000 oder 5000 — anderes ist ein Argument-Fehler.",
      +  "enum": [
      +    500,
      +    1000,
      +    2000,
      +    5000,
      +    null
      +  ],
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • changedInput schema / properties / max_walk_minutes / description
      Previous value: -"Cap on the summed walking TIME in minutes. A post-filter drops journeys\nabove it; if that leaves nothing, the backend searches once more avoiding\nfootpaths before the answer is empty."New value: +"Cap on the summed walking TIME in minutes: every journey of the answer\nkeeps to it."
    • addedInput schema / properties / max_walk_to_destination
      Added value: +{
      +  "default": null,
      +  "description": "Wie `max_walk_from_origin`, von der letzten Haltestelle zum Ziel.",
      +  "enum": [
      +    500,
      +    1000,
      +    2000,
      +    5000,
      +    null
      +  ],
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • changedInput schema / properties / origin_id / description
      Previous value: -"Origin id. A DHID (`de:NNNNN:NNN`) for a stop, otherwise the resolver's\n`main` id of the address or POI. Resolve the place first — a name here is\nan argument error."New value: +"Origin id. A DHID (`de:NNNNN:NNN`; in Austria and Switzerland `at:…`/`ch:…`)\nfor a stop, otherwise the resolver's `main` id of the address or POI. Resolve the place first — a name here is\nan argument error."
  2. Changed1 schema field changed
    • changedInput schema / properties / origin_type / description
      Previous value: -"What `origin_id` is: `\"stop\"` (default), `\"address\"` or `\"poi\"`. A stop id\nis auto-prefixed `GTFS.de:`; the other two are forwarded verbatim so the\nbackend resolves the real name."New value: +"What `origin_id` is: `\"stop\"` (default), `\"address\"` or `\"poi\"`. The backend\nresolves an address or a POI to its real name from the id."
  3. Changed1 schema field changed
    • addedInput schema / properties / taxi_pickup
      Added value: +{
      +  "description": "Wo das Taxi die Fahrten trifft: `door` (Default, am Halt) oder `rank` (am Taxistand).",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  4. Changed10 schema fields changed
    • addedInput schema / $defs
      Added value: +{
      +  "BikeCarriageArgument": {
      +    "anyOf": [
      +      {
      +        "type": "boolean"
      +      },
      +      {
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  "ViaRequest": {
      +    "description": "Ein Zwischenhalt.",
      +    "properties": {
      +      "id": {
      +        "description": "Id wie `origin_id`.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "kind": {
      +        "description": "`through` (Default: durchfahren genügt) oder `stopover` (dort umsteigen).",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "lat": {
      +        "description": "Breite eines Orts ohne Id, mit `lon`.",
      +        "format": "double",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "lon": {
      +        "description": "Länge, mit `lat`.",
      +        "format": "double",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "stay_minutes": {
      +        "description": "Mindest-Aufenthalt, 0–1440 Minuten; macht den Halt zum Umstieg.",
      +        "format": "int64",
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "type": {
      +        "description": "Wie `origin_type`.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  }
      +}
    • addedInput schema / properties / access_modes
      Added value: +{
      +  "description": "Weg zur ersten Haltestelle: Einträge `fahrzeug[:own|sharing][:only|prefer]`, Fahrzeug\n`walk`, `bike`, `scooter`, `car`, `taxi`; `own`/`sharing` eigenes/geliehenes (sonst\ngleich wessen); `only` nur damit, `prefer` (Default) neben dem Fußweg.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
    • changedInput schema / properties / accessibility_profile / description
      Previous value: -"Mobility profile by name: `\"Standard\"` (default), `\"WheelchairRobust\"`,\n`\"WalkerComfort\"` or `\"IndividualComfort\"`. Each bundles its accessibility\nconstraints and walk speed; another name is an argument error. The two\nwheelchair profiles find no ride at all today — the answer then carries\n`accessibility_routing` with `status: no_data` beside ordinary connections,\nwhich are to be reported as ordinary ones. What each profile constrains is\nin the usage guide."New value: +"Mobility profile by name: `\"Standard\"` (default), `\"WheelchairRobust\"`,\n`\"WalkerComfort\"` or `\"IndividualComfort\"`. Each bundles its accessibility\nconstraints and walk speed; another name is an argument error. Where the\nwheelchair profiles find no stated step-free ride, `accessibility_routing`\nsays what the journeys beside it are. What each profile constrains is in the\nusage guide."
    • addedInput schema / properties / accessibility_unknown
      Added value: +{
      +  "description": "Nur mit `WheelchairRobust`/`WalkerComfort`: `refuse` nimmt nur als stufenfrei\nAusgewiesenes, `admit` auch, worüber nichts bekannt ist. Weggelassen: siehe Anleitung.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / bike_carriage
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/BikeCarriageArgument"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Das Rad fährt auf jeder Fahrt mit: `true` nur auf Fahrten, die es bekanntlich\nmitnehmen, `'allow_unknown'` auch ohne Angabe."
      +}
    • addedInput schema / properties / cancelled
      Added value: +{
      +  "description": "`exclude` (Default), `include` (dazu `broken_journeys` mit Grund) oder `mark` (dazu\njeder Halt beurteilt und wo neu zu suchen ist).",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / egress_modes
      Added value: +{
      +  "description": "Wie `access_modes`, für den Weg von der letzten Haltestelle.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / no_change_at
      Added value: +{
      +  "description": "Halt-Ids wie `origin_id`, an denen keine Verbindung umsteigt.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / not_via
      Added value: +{
      +  "description": "Halt-Ids wie `origin_id`, die keine Verbindung berührt.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / vias
      Added value: +{
      +  "description": "Zwischenhalte in Reiserichtung, höchstens 4, statt `via_id`/`via_lat`/`via_lon`:\nje `id`+`type` (wie ein Endpunkt) oder `lat`+`lon`, dazu `kind`, `stay_minutes`.",
      +  "items": {
      +    "$ref": "#/$defs/ViaRequest"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
  5. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources