connections
Plant ÖPNV-Verbindungen von A nach B in Deutschland, Österreich, der Schweiz und Südtirol (Echtzeit in Deutschland, der Schweiz und Südtirols Bussen; sonst Fahrplan), 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 (stufenfrei WheelchairRobust/WalkerComfort/PramComfort, dazu accessibility_unknown: refuse/admit; Fußweg-Hinweise in walkNotes, auch mit VisuallyImpaired), include_rental_bike, bike_carriage (true/allow_unknown), prefer_flat, mobility_profile, taxi_pickup (door/rank); verbosity, limit, render_payload. Zeiten: departs/arrives an Verbindung und Abschnitt, Ortszeit (Echtzeit: departsExpected/arrivesExpected); beginnt sie zu Fuß, steht die erste Fahrt in firstRide. 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. Flug: mot.type air, Linie = Flugnummer, Halte = Flughäfen; ohne Flüge submodes_deny: ['flug']. 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. Barrierefreiheit je Halt: accessibilityBoarding/accessibilityAlighting am Ein-/Ausstiegs-Halt einer Fahrt gelten nur dort, nie für Zwischenhalte, andere Fahrten oder die ganze Verbindung. Unbekannt: unknown dort bzw. in bikeCarriage 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. Carsharing nur auf Wunsch (Carsharing, Leihauto, stadtmobil, Stadtflitzer): dann car:sharing in access_modes (zum ersten Halt) bzw. egress_modes (vom letzten); ein Stationsauto nur hin und zurück, mit stay_minutes (Aufenthalt am Ziel) neben car:sharing — ohne ihn erscheint es nicht; den Rückweg sagt roundTrip. Umstiege nur auf Wunsch: change_reliability: true nur bei Fragen nach sicheren Umstiegen, Puffer, „was, wenn der Zug zu spät ist" (ja: „mit sicherem Umstieg"; nein: „A nach B um 16:30", „wie oft umsteigen?" — die Zahl der Umstiege sagt jede Antwort); dann sagt change am Abschnitt, wie oft der Umstieg klappt, reliability das Risiko der Verbindung. max_miss_risk (Anteil 0–1, 0.1 = 10 %) fragt das ebenso ab und stellt neben eine Verbindung darüber die verlässlichere Alternative. Nicht umgesetzt: was not_considered nennt, blieb unberücksichtigt — nie als erfüllt ausgeben; broken_journeys fahren nicht. Namen in lang (Vorgabe 'de'), der Name vor Ort daneben in localName — „Meran (Merano)". Anleitung: get_usage_guide mit tool='connections' — lies sie, bevor du filterst. Anti-Fab: Linien, Zeiten, Halte, Anlagen, Gleise und Umstiegs-Chancen ausschließlich aus dem Output dieses Aufrufs.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Die Sprache der Namen: `'de'` (Vorgabe), `'it'`, `'fr'`, auch mit Region (`'de-CH'`). | |
| time | No | ISO 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. | |
| vias | No | Zwischenhalte 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`. | |
| limit | No | Maximum number of journeys, at least 1. Default 5, values above 15 are served as 15. | |
| modes | No | Transport-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"`, `"air"` (flights); 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, and a flight where one arrives sooner; `"transit"` = the same without flights. Set only when the user insists on a mode; the guide has the vocabulary and the traps. | |
| format | No | Answer serialisation: `"toon"` (default) or `"json"` — the detail is in `get_usage_guide`. **An agent leaves this out.** | |
| via_id | No | Intermediate 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_via | No | Halt-Ids wie `origin_id`, die keine Verbindung berührt. | |
| via_lat | No | Via latitude, for an intermediate address or POI without an id. Goes with `via_lon`. | |
| via_lon | No | Via longitude. Goes with `via_lat`. | |
| extended | No | `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_type | No | What `via_id` is. Same values as `origin_type`. | |
| cancelled | No | `exclude` (Default), `include` (dazu `broken_journeys` mit Grund) oder `mark` (dazu jeder Halt beurteilt und wo neu zu suchen ist). | |
| origin_id | No | Origin id: the resolver's `main` id as handed out — for a stop a DHID (`de:NNNNN:NNN`, `at:…`, `ch:…`, `it:…`) or a station id (`Parentch:1:sloid:3000`), else the address or POI id. Resolve the place first — a name here is an argument error. | |
| verbosity | No | How 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_lines | No | Line 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_lat | No | Origin 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_lon | No | Origin longitude. Goes with `origin_lat`. | |
| walk_speed | No | Walking 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_type | No | What `origin_id` is: `"stop"` (default), `"address"` or `"poi"`. The backend resolves an address or a POI to its real name from the id. | |
| prefer_flat | No | `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_pickup | No | Wo das Taxi die Fahrten trifft: `door` (Default, am Halt) oder `rank` (am Taxistand). | |
| access_modes | No | Weg 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_modes | No | Wie `access_modes`, für den Weg von der letzten Haltestelle. | |
| no_change_at | No | Halt-Ids wie `origin_id`, an denen keine Verbindung umsteigt. | |
| stay_minutes | No | Aufenthalt am Ziel, 0–1440 Minuten: ein Leihfahrzeug mit fester Station fährt damit hin und zurück; ohne ihn keins. | |
| bike_carriage | No | Das Rad fährt auf jeder Fahrt mit: `true` nur auf Fahrten, die es bekanntlich mitnehmen, `'allow_unknown'` auch ohne Angabe. | |
| cycling_speed | No | Rad-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_lines | No | Line blacklist, same token form as `only_lines`. A journey is dropped if any transit leg uses one of them. | |
| max_miss_risk | No | Ab welchem Risiko, einen Umstieg zu verpassen, eine verlässlichere Alternative daneben steht: ein Anteil von 0 bis 1 (`0.1` = 10 %), auch ohne `change_reliability`. Weggelassen: keine Alternative. | |
| max_transfers | No | Upper 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_deny | No | Fine submode blacklist, same vocabulary as `submodes_allow`. A journey is dropped if any transit leg matches one. | |
| destination_id | No | Destination id. Same form as `origin_id`. | |
| render_payload | No | `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_allow | No | Fine 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"`, `"flug"` (flights). A journey is kept only if every transit leg matches one. | |
| cycling_profile | No | Wer 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_lat | No | Destination latitude. Same use as `origin_lat`. | |
| destination_lon | No | Destination longitude. Goes with `destination_lat`. | |
| is_arrival_time | No | `true` reads `time` as the desired ARRIVAL time instead of the departure time. | |
| max_walk_meters | No | Cap on the summed walking DISTANCE in metres. Works like `max_walk_minutes`, on the metres walked. | |
| destination_type | No | What `destination_id` is. Same values as `origin_type`. | |
| max_walk_minutes | No | Cap on the summed walking TIME in minutes: every journey of the answer keeps to it. | |
| mobility_profile | No | How 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. | |
| change_reliability | No | `true` nur, wenn der Nutzer nach der Verlässlichkeit der Umstiege fragt: dann sagen `change` und `reliability`, wie oft die Umstiege klappten. Weggelassen: nichts davon, außer mit `max_miss_risk`. | |
| include_rental_bike | No | `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_origin | No | Hö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_profile | No | Mobility profile by name: `"Standard"` (default), `"WheelchairRobust"`, `"WalkerComfort"`, `"PramComfort"`, `"VisuallyImpaired"` or `"IndividualComfort"`. Each bundles its accessibility constraints and walk speed; another name is an argument error. Where the step-free three (wheelchair, walker, pram) find no stated step-free ride, `accessibility_routing` says what the journeys beside it are; these three and `VisuallyImpaired` note on a walk what the map knows (`additionalInfos.walkNotes`). What each profile constrains is in the usage guide. | |
| accessibility_unknown | No | Nur mit `WheelchairRobust`/`WalkerComfort`/`PramComfort`: `refuse` nimmt nur als stufenfrei Ausgewiesenes, `admit` auch, worüber nichts bekannt ist. Weggelassen: siehe Anleitung. | |
| max_walk_to_destination | No | Wie `max_walk_from_origin`, von der letzten Haltestelle zum Ziel. |