Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Austrian rail travel planner (ÖBB Scotty). Use when planning train journeys in Austria, checking departures/arrivals at stations, or looking for service disruptions. Covers ÖBB trains, S-Bahn, regional trains, and connections to neighboring countries.
Austrian rail travel planner (ÖBB Scotty). Use when planning train journeys in Austria, checking departures/arrivals at stations, or looking for service disruptions. Covers ÖBB trains, S-Bahn, regional trains, and connections to neighboring countries.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Query Austria's public transport for trip planning, station departures, and service alerts via the HAFAS mgate API.
MethodPurposeLocMatchSearch for stations/stops by nameTripSearchPlan a journey between two locationsStationBoardGet departures/arrivals at a stationHimSearchGet service alerts and disruptions Base URL: https://fahrplan.oebb.at/bin/mgate.exe
All requests require these headers in the JSON body: { "id": "1", "ver": "1.67", "lang": "deu", "auth": {"type": "AID", "aid": "OWDL4fE4ixNiPBBm"}, "client": {"id": "OEBB", "type": "WEB", "name": "webapp", "l": "vs_webapp"}, "formatted": false, "svcReqL": [...] }
Search for stations, stops, addresses, or POIs by name.
curl -s -X POST "https://fahrplan.oebb.at/bin/mgate.exe" \ -H "Content-Type: application/json" \ -d '{ "id":"1","ver":"1.67","lang":"deu", "auth":{"type":"AID","aid":"OWDL4fE4ixNiPBBm"}, "client":{"id":"OEBB","type":"WEB","name":"webapp","l":"vs_webapp"}, "formatted":false, "svcReqL":[{ "req":{"input":{"field":"S","loc":{"name":"Wien Hbf","type":"ALL"},"maxLoc":10}}, "meth":"LocMatch" }] }'
{ "svcResL": [{ "res": { "match": { "locL": [{ "lid": "A=1@O=Wien Hbf (U)@X=16377950@Y=48184986@U=181@L=1290401@", "type": "S", "name": "Wien Hbf (U)", "extId": "1290401", "crd": { "x": 16377950, "y": 48184986 }, "pCls": 6015 }] } } }] }
TypeDescriptionSStation/StopAAddressPPOI (Point of Interest)
FieldDescriptionlidLocation ID string (use in TripSearch)extIdExternal station IDnameStation namecrd.x/yCoordinates (x=lon, y=lat, scaled by 10^6)pClsProduct class bitmask
Plan a journey between two locations.
curl -s -X POST "https://fahrplan.oebb.at/bin/mgate.exe" \ -H "Content-Type: application/json" \ -d '{ "id":"1","ver":"1.67","lang":"deu", "auth":{"type":"AID","aid":"OWDL4fE4ixNiPBBm"}, "client":{"id":"OEBB","type":"WEB","name":"webapp","l":"vs_webapp"}, "formatted":false, "svcReqL":[{ "req":{ "depLocL":[{"lid":"A=1@O=Wien Hbf@L=8103000@","type":"S"}], "arrLocL":[{"lid":"A=1@O=Salzburg Hbf@L=8100002@","type":"S"}], "jnyFltrL":[{"type":"PROD","mode":"INC","value":"1023"}], "getPolyline":false, "getPasslist":true, "outDate":"20260109", "outTime":"080000", "outFrwd":true, "numF":5 }, "meth":"TripSearch" }] }'
ParamDescriptiondepLocLDeparture location(s) - use lid from LocMatcharrLocLArrival location(s)outDateDeparture date (YYYYMMDD)outTimeDeparture time (HHMMSS)outFrwdtrue = search forward, false = search backwardnumFNumber of connections to returnjnyFltrLProduct filter (see below)getPasslistInclude intermediate stops
BitValueProduct01ICE/RJX (High-speed)12IC/EC (InterCity)24NJ (Night trains)38D/EN (Express)416REX/R (Regional Express)532S-Bahn664Bus7128Ferry8256U-Bahn9512Tram Use 1023 for all products, or sum specific bits.
{ "svcResL": [{ "res": { "outConL": [{ "date": "20260109", "dur": "025200", "chg": 0, "dep": { "dTimeS": "075700", "dPltfS": {"txt": "8A-B"} }, "arr": { "aTimeS": "104900", "aPltfS": {"txt": "7"} }, "secL": [{ "type": "JNY", "jny": { "prodX": 0, "dirTxt": "Salzburg Hbf", "stopL": [...] } }] }], "common": { "locL": [...], "prodL": [...] } } }] }
FieldDescriptiondurDuration (HHMMSS)chgNumber of changesdTimeSScheduled departuredTimeRReal-time departure (if available)aTimeSScheduled arrivalaTimeRReal-time arrival (if available)dPltfS.txtDeparture platformaPltfS.txtArrival platformsecLJourney sections (legs)secL[].jny.prodXIndex into common.prodL[] for train name
Important: The prodX field in journey sections is an index into the common.prodL[] array, NOT the train name itself. To get the actual train name (e.g., "S7", "RJX 662"), you must look up common.prodL[prodX].name.
The raw TripSearch response is very verbose. Use this jq filter to extract a concise summary with resolved train names: curl -s -X POST "https://fahrplan.oebb.at/bin/mgate.exe" \ -H "Content-Type: application/json" \ -d '{ ... }' | jq ' .svcResL[0].res as $r | $r.common.prodL as $prods | [$r.outConL[] | { dep: .dep.dTimeS, arr: .arr.aTimeS, depPlatform: .dep.dPltfS.txt, arrPlatform: .arr.aPltfS.txt, dur: .dur, chg: .chg, legs: [.secL[] | select(.type == "JNY") | { train: $prods[.jny.prodX].name, dir: .jny.dirTxt, dep: .dep.dTimeS, arr: .arr.aTimeS, depPlatform: .dep.dPltfS.txt, arrPlatform: .arr.aPltfS.txt }] }]' Example output: [ { "dep": "213900", "arr": "221100", "depPlatform": "1", "arrPlatform": "3A-B", "dur": "003200", "chg": 0, "legs": [{"train": "S 7", "dir": "Flughafen Wien Bahnhof", "dep": "213900", "arr": "221100", ...}] } ]
Get departures or arrivals at a station.
curl -s -X POST "https://fahrplan.oebb.at/bin/mgate.exe" \ -H "Content-Type: application/json" \ -d '{ "id":"1","ver":"1.67","lang":"deu", "auth":{"type":"AID","aid":"OWDL4fE4ixNiPBBm"}, "client":{"id":"OEBB","type":"WEB","name":"webapp","l":"vs_webapp"}, "formatted":false, "svcReqL":[{ "req":{ "stbLoc":{"lid":"A=1@O=Wien Hbf@L=8103000@","type":"S"}, "date":"20260109", "time":"080000", "type":"DEP", "maxJny":20 }, "meth":"StationBoard" }] }'
ParamDescriptionstbLocStation locationdateDate (YYYYMMDD)timeTime (HHMMSS)typeDEP (departures) or ARR (arrivals)maxJnyMaximum number of journeys
{ "svcResL": [{ "res": { "jnyL": [{ "prodX": 0, "dirTxt": "Salzburg Hbf", "stbStop": { "dTimeS": "080000", "dPltfS": {"txt": "8A-B"} } }], "common": { "prodL": [{ "name": "RJX 662", "cls": 1, "prodCtx": {"catOutL": "Railjet Xpress"} }] } } }] }
Get current disruptions and service information.
curl -s -X POST "https://fahrplan.oebb.at/bin/mgate.exe" \ -H "Content-Type: application/json" \ -d '{ "id":"1","ver":"1.67","lang":"deu", "auth":{"type":"AID","aid":"OWDL4fE4ixNiPBBm"}, "client":{"id":"OEBB","type":"WEB","name":"webapp","l":"vs_webapp"}, "formatted":false, "svcReqL":[{ "req":{ "himFltrL":[{"type":"PROD","mode":"INC","value":"255"}], "maxNum":20 }, "meth":"HimSearch" }] }'
{ "svcResL": [{ "res": { "msgL": [{ "hid": "HIM_FREETEXT_843858", "head": "Verringertes Sitzplatzangebot", "text": "Wegen einer technischen Störung...", "prio": 0, "sDate": "20260108", "eDate": "20260108" }] } }] }
StationextIdWien Hbf8103000Wien Meidling8100514Wien Westbahnhof8101003Salzburg Hbf8100002Linz Hbf8100013Graz Hbf8100173Innsbruck Hbf8100108Klagenfurt Hbf8100085St. Pölten Hbf8100008Wr. Neustadt Hbf8100516
Dates: YYYYMMDD (e.g., 20260109) Times: HHMMSS (e.g., 080000 = 08:00:00) Duration: HHMMSS (e.g., 025200 = 2h 52m)
Check err field in response: { "err": "OK", // Success "err": "PARSE", // Invalid request format "err": "NO_MATCH", // No results found "errTxt": "..." // Error details }
clsProduct1ICE/RJX2IC/EC4Night trains8NJ/EN16REX/Regional32S-Bahn64Bus128Ferry256U-Bahn512Tram1024On-demand2048Other
Messaging, meetings, inboxes, CRM, and teammate communication surfaces.
Largest current source with strong distribution and engagement signals.