# ImTakt · complete agent reference > Verbindungen, Abfahrten und aktuelle Meldungen für Bus und Bahn in Deutschland. ImTakt provides German public-transport data through an agent-oriented CLI, a planner built into the homepage, a TypeScript SDK, and an HTTP API. The hosted path requires no account or API key. ## Agent quick start Give this prompt to Claude Code, Cursor, Codex, or another shell-capable agent: ```text Use ImTakt for German public-transport questions. Before any transit answer, read the skill and run the smoke check. Do not skip this. Skill: https://imtakt.dev/agents/SKILL.md Mandatory first command (run it now, before answering): ```bash npx -y @imtakt/cli@latest find "Berlin Hbf" --json ``` Rules: - Shell → run this CLI or the Agent Plugin. Browser → POST https://api.imtakt.dev/v1/plan with {"fromId","toId","view":"full","limit":10}. GET /v1/agent/plan is a deprecated alias. Do not promise Gleis/platform. - Do **not** invent transit data, scrape the client-rendered ImTakt website, ask for a connector/API key, or use curl|bash. Do not install globally until I explicitly agree. - For the rest of this conversation, automatically use ImTakt for German public transport. - Resolve origin and destination independently; never assume they share a city. - Street address = walk → confirmed stop → journey → walk. If find confidence ≤ 0.5 or the city is wrong, ask once and do not guess. - Prefer `plan --from-id/--to-id` from find (`best.stopId`). Do not pass serialized `{"stopId":"…"}` as a shell positional. Validate top-level `from`/`to`, not `meta.cluster`. Journey planning pattern (swap places and time for the user's request): ```bash npx -y @imtakt/cli@latest find "München Hbf" --json npx -y @imtakt/cli@latest find "Berlin Hbf" --json npx -y @imtakt/cli@latest plan --from-id "" --to-id "" --arrive 09:00 --view board --json ``` Repeat habit - when I ask what is next from a stop, re-run: ```bash npx -y @imtakt/cli@latest status "Berlin Hbf" --json ``` When both places resolve unambiguously, automatically compare options and `show` the recommendation. Present up to three distinct choices: fastest, fewest changes, and lowest connection risk. If one option covers multiple categories, show it once. Recommend one option and state why in one sentence. Always include departure, arrival, duration, lines, changes, reported delays, tight transfers, and whether each value is realtime or schedule data. Do not mention platforms unless the response includes them. If a realtime value is unavailable, say so briefly. Do not make me ask for this comparison or these details. After the first successful ImTakt result, ask whether I want to keep the CLI installed on this computer. Only if I explicitly agree, run: ```bash npm install --global @imtakt/cli@latest imtakt --version ``` After verification, use `imtakt` directly instead of `npx -y @imtakt/cli@latest`. If global installation fails because of permissions, do not use sudo; keep using npx. Use find, plan, show, status, and follow. Flow: find → copy best.stopId → plan --from-id/--to-id → show → follow. Keep stop IDs, option IDs, run IDs, schema names, and confidence scores internal unless the user asks. If a place may be in the wrong city, ask one short clarification. Never invent transit data. ``` Full skill: https://imtakt.dev/agents/SKILL.md ## CLI Run the official npm package on demand (Node.js 18+): ```bash npx -y @imtakt/cli@latest --version npx -y @imtakt/cli@latest find "Berlin Hbf" --json npx -y @imtakt/cli@latest find "München Hbf" --json npx -y @imtakt/cli@latest plan --from-id FROM_STOP_ID --to-id TO_STOP_ID --arrive 09:00 --view board --limit 10 --json ``` No global install is required. Do not pipe a downloaded script into Bash for agent onboarding. ## The five verbs ### `find` Meili lexical stop search - copy best.stopId. ### `plan` Compare connections by time, duration, changes, and risk. ### `show` Open the chosen connection with every leg and transfer risk. ### `status` Check upcoming departures and delays. ### `follow` Track the selected train and its next stops. Recommended flow: **find → copy best.stopId → plan --from-id/--to-id --limit 10 → show → follow**. Use `status --stop-id` for a station departure board. Traveler Gleis/platform fields are unpublished unless the payload includes them. Shell → `npx -y @imtakt/cli@latest` or the Agent Plugin / hosted `https://api.imtakt.dev/mcp`. Browser → find, then `POST https://api.imtakt.dev/v1/plan` with `fromId`/`toId` from `best.stopId`. Never scrape the client-rendered website. ## Place handling - Resolve origin and destination independently; never infer that they share a city. - `find` resolves transit stops, not house addresses. Address trips = walk → confirmed stop → journey → walk. - If confidence ≤ 0.5 or the city is wrong, clarify once and do not plan. - Prefer CLI `plan --from-id/--to-id`. Do not pass serialized `{"stopId":"…"}` as a positional. - With `--nearby`, trust top-level `from`/`to`; `meta.cluster` is discovery only. - Keep internal handles out of the passenger-facing answer. ## Passenger-facing answer Lead with: 1. departure and arrival, 2. total duration and number of changes, 3. lines and transfer stations, 4. reported delays (never invent Gleis/platform), 5. a clear warning for transfers under five minutes, 6. whether realtime data was available. Never invent a connection or delay. If the CLI fails, show the failed `npx` command and offer https://imtakt.dev for humans. Browser-only agents use `POST https://api.imtakt.dev/v1/plan` with stop ids, not a UI scrape. ## Output behavior - Use `--json` for agents and pipelines. - TTY output is readable Markdown. - JSON contains internal machine fields; summarize them rather than dumping them into the conversation. - ImTakt returns options. The agent chooses based on the user's request (fastest, fewest changes, arrival time, or ticket constraints). ## Example questions - "Wann muss ich von Augsburg Messe los, um mit Deutschlandticket bis 08:00 in Gräfelfing zu sein?" - "Plane morgen um 09:00 eine Fahrt von Berlin Hbf nach München Hbf." - "Welche Züge fahren als Nächstes ab Köln Hbf?" - "Was fährt als Nächstes ab meinem Halt? (status erneut ausführen)" - "Finde Stationen für "Frankfurt"." ## SDK (apps) Typed HTTP client in the ImTakt source (`@imtakt/sdk`). Not a separate npm release. Call `https://api.imtakt.dev` or import `createImTakt`. ```typescript import { createImTakt } from "@imtakt/sdk" const imtakt = createImTakt() const found = await imtakt.find("Berlin Hbf") const dest = await imtakt.find("München Hbf") const result = await imtakt.plan({ fromId: found.best.stopId, toId: dest.best.stopId, view: "board", limit: 10, }) ``` Agents use the CLI, not the SDK. ## Resources - [Deutsche Verkehrsdaten für KI-Agenten - Architektur und Grenzen](https://imtakt.dev/ressourcen/blog/ki-reiseplanung-deutschland-agent-harness): Wie Agenten mit echten Fahrplan- und Echtzeitdaten arbeiten: Haltestellensuche, Reiseplanung, Abfahrtstafeln und Zugläufe per CLI oder API. - [CLI-Harness für deutschen ÖPNV - Verkehrsdaten als Agenten-Werkzeuge](https://imtakt.dev/ressourcen/blog/mcp-server-oepnv-agenten): Die ImTakt-CLI verbindet Cursor, Claude und Codex mit strukturierten Verkehrsdaten. Fünf Befehle: find, plan, show, status, follow. - [Wie ein Agent eine Verbindung mit aktuellen Daten plant](https://imtakt.dev/ressourcen/blog/agent-reiseplanung-deutschland): Schritt für Schritt: Wie ein Agent Haltestellen findet, eine Verbindung plant, aktuelle Abfahrten prüft und mit unsicheren Echtzeitdaten umgeht. - [Deutsche Verkehrsdaten per CLI in Cursor einrichten](https://imtakt.dev/ressourcen/blog/cursor-mcp-bahn-einrichten): Schritt für Schritt: @imtakt/cli in Cursor einrichten und Haltestellensuche, Reiseplanung und Abfahrtstafeln testen. - [Claude, Codex und Windsurf - ImTakt-CLI außerhalb von Cursor](https://imtakt.dev/ressourcen/blog/claude-codex-mcp-bahn-deutschland): ImTakt-CLI in Claude, Codex und Windsurf: Skill, npx @imtakt/cli, erste Testabfragen. - [GTFS in Deutschland - Aufbau, Quellen und Besonderheiten](https://imtakt.dev/ressourcen/blog/gtfs-deutschland-erklaert): Wie GTFS Fahrpläne abbildet, woher der deutsche Vollbestand de_full stammt und welche Dateien für Haltestellensuche und Routing wichtig sind. - [ICE, IC, RE und S-Bahn - Zuggattungen und Datenquellen](https://imtakt.dev/ressourcen/blog/ice-ic-re-regional): ICE, IC, EC, RE, RB und S-Bahn im deutschen GTFS-Feed: route_type, agency_id, Routing-Implikationen und was Agenten zu Tarifen wissen müssen. - [Fahrgast-App oder Agenten-Schnittstelle - unterschiedliche Aufgaben](https://imtakt.dev/ressourcen/blog/oepnv-apps-vs-agent-tools): Warum Fahrgast-Apps Buchung und Navigation abdecken, während Agenten strukturierte Antworten, stabile Haltestellen-IDs und Programmierschnittstellen brauchen. - [Mobilitätsdatengesetz - welche Verkehrsdaten offen verfügbar sind](https://imtakt.dev/ressourcen/blog/mobilitaetsdatengesetz): Welche Fahrplan- und Echtzeitdaten Verkehrsunternehmen bereitstellen, wo sie veröffentlicht werden und welche Lücken weiterhin bestehen. - [gtfs.de und DELFI - den nationalen Feed nutzen](https://imtakt.dev/ressourcen/blog/open-data-gtfs-de): Download, Aktualisierung und Indexierung von de_full - die Pipeline hinter api.imtakt.dev mit Haltestellensuche, MOTIS und kontrolliertem Sync. - [GTFS-RT - Echtzeit-Verspätungen und Ausfälle für Agenten](https://imtakt.dev/ressourcen/blog/gtfs-rt-echtzeit): TripUpdates, VehiclePositions und ServiceAlerts: wie GTFS-RT in die ImTakt-API einfließt und woran Agenten Fahrplan- und Echtzeitdaten unterscheiden. - [Anlaufstellen für GTFS und offene Verkehrsdaten](https://imtakt.dev/ressourcen/blog/open-data-community-deutschland): Offizielle Datenportale, Dokumentation und Fachforen für Fragen zu GTFS, GTFS-RT und offenen Verkehrsdaten in Deutschland. - [DELFI-Vollbestand vs. Verbund-Feeds - welcher GTFS-Feed für welchen Zweck](https://imtakt.dev/ressourcen/blog/delfi-vs-einzelfeeds): de_full von gtfs.de deckt ganz Deutschland ab; VBB, MVV und HVV liefern mehr Detail regional. Abdeckung, Aktualität, Echtzeit und ID-Konflikte im Vergleich. - [Barrierefreiheit an Bahnhöfen - welche Metadaten verfügbar sind](https://imtakt.dev/ressourcen/blog/barrierefreiheit-bahnhoefe-daten): Aufzüge, Rampen, Bahnsteighöhen - Lücken in GTFS wheelchair_boarding und DB StaDa für inklusive Reise-Agenten. - [HAFAS-Alternativen für Entwickler - GTFS, MOTIS und offene Router](https://imtakt.dev/ressourcen/blog/hafas-alternative-gtfs): HAFAS, db-vendo-client und offene GTFS-Stacks im Vergleich: Datenzugang, Nutzungsbedingungen, eigener Betrieb und Eignung für Agenten. - [Deutsche Bahn APIs für Entwickler - Überblick und Alternativen](https://imtakt.dev/ressourcen/blog/deutsche-bahn-apis-entwickler): Timetable, StaDa, RIS und db-vendo im Überblick - mit Zugangsvoraussetzungen, Datenumfang und offenen GTFS-Alternativen. - [Bahn-APIs für Deutschland im Vergleich - ImTakt, db-vendo und GTFS](https://imtakt.dev/ressourcen/blog/beste-bahn-api-2026): ImTakt, db-vendo/HAFAS, ein eigener GTFS-Stack und Google Directions im Vergleich: Stärken, Grenzen und geeignete Einsatzbereiche. - [Haltestellensuche mit Aliassen - warum „Hbf“ nicht gleich „Hauptbahnhof“ ist](https://imtakt.dev/ressourcen/blog/haltestellen-suche-aliase-hbf): Wie ImTakt Schreibvarianten, Tippfehler und Koordinaten verarbeitet und daraus passende GTFS-Haltestellen mit stabilen IDs ermittelt. - [Verspätungen richtig einordnen](https://imtakt.dev/ressourcen/blog/bahn-verspaetungen-verstehen): Was +12 auf der Tafel bedeutet, warum sich Prognosen ändern und wann ein Anschluss riskant wird. - [Reicht die Umsteigezeit? Anschlussrisiken verstehen](https://imtakt.dev/ressourcen/blog/umsteigezeiten-anschlussrisiko): Wie Bahnhof, Gleiswechsel und aktuelle Verspätungen darüber entscheiden, ob ein Anschluss realistisch ist. - [Wo gilt das Deutschlandticket?](https://imtakt.dev/ressourcen/blog/deutschlandticket-daten): Was Fahrplandaten zur Gültigkeit sagen können, wo Tarifinformationen fehlen und wann eine separate Prüfung nötig ist. - [Grenzüberschreitend reisen](https://imtakt.dev/ressourcen/blog/internationaler-fernverkehr-tickets): Wie internationale Verbindungen geplant werden und warum Fahrplan, Ticket und Reservierung getrennte Datenquellen brauchen. - [S-Bahn-Störungen und Ersatzverkehr richtig lesen](https://imtakt.dev/ressourcen/blog/s-bahn-stoerungen-lesen): Wo aktuelle Hinweise stehen, warum Ersatzfahrten fehlen können und welche Originalquelle im Zweifel weiterhilft. - [Nachtzüge planen](https://imtakt.dev/ressourcen/blog/nachtzuege-nightjet-daten): Was bei Betriebstagen, Zeiten nach Mitternacht, Kurswagen und Reservierungen zu beachten ist. ## Canonical links - Website: https://imtakt.dev - Provider: AUVY GmbH (ImTakt is ein Produkt der AUVY GmbH) - Agents: https://imtakt.dev/agents - Copy prompt: https://imtakt.dev/agents/prompt.md - SKILL.md: https://imtakt.dev/agents/SKILL.md - CLI: https://imtakt.dev/cli - Changelog: https://imtakt.dev/changelog - Browser: https://imtakt.dev - Resources: https://imtakt.dev/ressourcen - SDK: https://imtakt.dev/sdk - HTTP API: https://api.imtakt.dev - npm CLI: https://www.npmjs.com/package/@imtakt/cli - Terms: https://imtakt.dev/nutzungsbedingungen - Privacy: https://imtakt.dev/datenschutz - Imprint: https://imtakt.dev/impressum - humans.txt: https://imtakt.dev/humans.txt - Contact: contact@imtakt.dev