Deutsche BahnCAUTION
AI-powered travel hacking and search with cash, points, miles, and award flights. Drop-in skills and MCP servers for Claude, Codex, and OpenCode.
Overview
AI-powered travel hacking and search with cash, points, miles, and award flights. Drop-in skills and MCP servers for Claude, Codex, and OpenCode.
fda58ab480fdOBSERVED · 2026-10-14What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
--- name: deutsche-bahn description: Deutsche Bahn train schedules, journey planning, and departures across Germany and into neighboring countries (Austria, Switzerland, Netherlands, France, Belgium). Use for ICE/IC/regional rail planning and airport ground transport (FRA, MUC). category: destinations summary: Deutsche Bahn (DB) train search across Germany and into AT/CH/NL/FR/BE via the open-source db-vendo-client. Stations, journeys, departure boards. No API key. Pairs with scandinavia-transit for Europe-wide rail coverage. license: MIT --- # Deutsche Bahn Skill Search German train schedules and plan journeys using the `db-vendo-client` library (open-source client for bahn.de APIs). **No API key required.** No Docker. Just Node.js. **Source:** [db-vendo-client](https://github.com/public-transport/db-vendo-client) — wraps bahn.de's internal APIs. ## Setup ```bash cd skills/deutsche-bahn && npm install ``` ## Commands ### Station Search Find station IDs by name: ```bash node skills/deutsche-bahn/scripts/search_trains.mjs stations "Frankfurt Flughafen" ``` ### Journey Planning Search train routes between two stations (by ID or name): ```bash # By station ID node skills/deutsche-bahn/scripts/search_trains.mjs journeys 8070003 8000376 --date 2026-05-05 --time 10:00 --results 5 # By station name (auto-resolves to ID) node skills/deutsche-bahn/scripts/search_trains.mjs journeys "Frankfurt Airport" "Germersheim" --date 2026-05-05 node skills/deutsche-bahn/scripts/search_trains.mjs journeys "Amsterdam Centraal" "Mannheim Hbf" --date 2026-05-15 --time 09:00 node skills/deutsche-bahn/scripts/search_trains.mjs journeys "Paris Est" "Mannheim" --date 2026-05-05 ``` ### Departure Board Check upcoming departures from any station: ```bash node skills/deutsche-bahn/scripts/search_trains.mjs departures "Mannheim Hbf" --results 10 node skills/deutsche-bahn/scripts/search_trains.mjs departures 8070003 --date 2026-05-05 --time 14:00 ``` ## Key Station IDs ### German Airports | Airport | Station ID | Station Name | Notes | |---------|-----------|--------------|-------| | Frankfurt (FRA) | `8070003` | Frankfurt(M) Flughafen Fernbf | Long-distance (ICE/TGV) | | Frankfurt (FRA) | `8070004` | Frankfurt(M) Flughafen Regionalbf | Regional trains | | Munich (MUC) | `8004154` | München Flughafen Terminal | S-Bahn to München Hbf | | Düsseldorf (DUS) | `8001585` | Düsseldorf Flughafen | S-Bahn + RE | | Cologne/Bonn (CGN) | `8003330` | Köln/Bonn Flughafen | ICE station | | Berlin (BER) | `8089021` | Flughafen BER Terminal 1-2 | FEX + RE + S-Bahn | | Stuttgart (STR) | `8005773` | Flughafen/Messe | S-Bahn to Stuttgart Hbf | | Hamburg (HAM) | `8002549` | Hamburg Airport | S-Bahn | ### Major Stations | City | Station ID | Name | |------|-----------|------| | Frankfurt Hbf | `8000105` | Frankfurt(Main)Hbf | | Mannheim Hbf | `8000244` | Mannheim Hbf | | Germersheim | `8000376` | Germersheim | | Karlsruhe Hbf | `8000191` | Karlsruhe Hbf | | Stuttgart Hbf | `8000096` | Stuttgart Hbf | | München Hbf | `8000261` | München Hbf | | Berlin Hbf | `8011160` | Berlin Hbf | | Köln Hbf | `8000207` | Köln Hbf | | Düsseldorf Hbf | `8000085` | Düsseldorf Hbf | | Hamburg Hbf | `8002549` | Hamburg Hbf | | Heidelberg Hbf | `8000156` | Heidelberg Hbf | | Speyer Hbf | `8000076` | Speyer Hbf | ### International Stations (reachable by DB trains) | City | Station ID | Name | Train from Germany | |------|-----------|------|-------------------| | Amsterdam Centraal | `8400058` | Amsterdam Centraal | ICE from Frankfurt ~4h | | Paris Est | `8700011` | Paris Est | TGV/ICE from Frankfurt ~4h | | Zürich HB | `8503000` | Zürich HB | ICE from Frankfurt ~4h | | Basel SBB | `8500010` | Basel SBB | ICE from Mannheim ~2.5h | | Strasbourg | `8700018` | Strasbourg | TGV/RE from Karlsruhe ~40min | | Brussels Midi | `8814001` | Bruxelles-Midi/Brussel-Zuid | ICE from Frankfurt ~3.5h | | Wien Hbf | `8100003` | Wien Hbf | ICE from München ~4h | | Praha hl.n. | `5400014` | Praha hlavní nádraží | EC from München/Berlin | ## Common Airport-to-Germersheim Routes | From Airport | Route | Typical Duration | Transfers | |-------------|-------|-----------------|-----------| | **Frankfurt (FRA)** | ICE → Mannheim → S3 Germersheim | **78–105 min** | 1 | | Stuttgart (STR) | S-Bahn → Stuttgart Hbf → ICE Mannheim → S3 | ~2h 30m | 2 | | Munich (MUC) | S-Bahn → München Hbf → ICE Mannheim → S3 | ~3h 45m | 2 | | Paris CDG | RER → Paris Est → TGV Mannheim → S3 | ~4h 30m | 2-3 | | Amsterdam (AMS) | Train → Amsterdam CS → ICE Mannheim → S3 | ~5h | 2 | | Zürich (ZRH) | Train → Zürich HB → ICE Mannheim → S3 | ~4h | 2 | ## Parameters | Param | Flag | Default | Description | |-------|------|---------|-------------| | Date | `--date` | Today | YYYY-MM-DD format | | Time | `--time` | 08:00 | HH:MM, departure time | | Results | `--results` | 5 (journeys), 10 (departures) | Number of results | ## Coverage - **All German trains:** ICE, IC/EC, RE, RB, S-Bahn - **International:** ICE to AMS/Brussels/Paris/Zürich/Wien, TGV to Paris, Eurostar connections - **Local transit:** S-Bahn, U-Bahn, trams, buses (if DB data includes them) ## Limitations - **No pricing.** DB does not expose ticket prices via API. For fares, check bahn.de directly or use the Trainline API. - **Rate limits.** DB's backend enforces low rate limits. Keep queries reasonable (a few per minute, not hundreds). - **Schedule data only.** Real-time delays are shown when available, but historical data is not retained. - **Future schedules.** DB typically publishes schedules ~6 months out. Dates beyond that may return no results. ## When to Use Load this skill when: - Planning train connections from a European gateway airport to a destination in Germany - Checking ICE/TGV schedules between major cities - Finding last-mile S-Bahn/regional connections (e.g., Mannheim → Germersheim) - Comparing train travel time from different airports to decide which to fly into - Looking up departure boards at a station D
Trust audit
CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (6)
.agents/skills
.claude/skills
.opencode/skills
skills
AGENTS.md
db-vendo-client
Gates applied: no_behavioural_pass.
fda58ab480fdfull audit observations/trust-audit/skill/borski__deutsche-bahn.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-14 | fda58ab480fd | CAUTION | B | 89 | first audit |
Questions
What does the Deutsche Bahn skill do?
AI-powered travel hacking and search with cash, points, miles, and award flights. Drop-in skills and MCP servers for Claude, Codex, and OpenCode.
Is Deutsche Bahn safe to install?
With care. The audit graded it B (89/100) and found 6 things worth knowing before you trust this skill, listed below with the exact line each was found on.
What can Deutsche Bahn access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
How current is this page?
The grade is for one exact copy of the source (fda58ab480fd), read on 2026-10-14. The repository is watched, and a new audit runs when it changes — this is the first audit.