Lets an assistant plan intercity journeys in India by train, flight or bus, with fares, timetables and seat availability.
What you can do
Resolves typed place names into RailRoute place ids, then plans every practical way between two places: direct trains with fares per class, one-change train journeys, flights, mixed train-and-flight itineraries, and government state bus services. It also checks live seat availability for one train and date, lists a train's full stop schedule, shows a station's departure board, maps day-by-day service over a date range, and finds nearby stations.
When to use it
Use it when someone wants to plan an intercity trip in India, check train or bus fares and seats, or find out which days a route runs. It also helps when a traveller is flexible about dates and the requested date is waitlisted.
Requirements
A remote MCP endpoint reached over HTTP; no local package or runtime is needed. The input declares no accounts, API keys, environment variables or headers, but network access to the remote service is required.
Before you install
Some tools spend a metered upstream call, and next_confirmed_date is described as expensive because it checks seats across dozens of trains, so use it sparingly. Queries are sent to a third-party service. The input does not say whether booking or payment is involved.
Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/in.railroute%2Fjourney-planner/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.
Turn what somebody typed into RailRoute place ids. ALWAYS call this before plan_journey. A place is a city with all of its stations and airports — Mumbai covers CSMT, LTT, Dadar, Bandra Terminus and the airport — so the planner can choose the right terminal rather than making the traveller do it. Typing a station code ("CSMT") finds the city and says which terminal matched.
Parameterslimitqueryrequired
plan_journey
Plan a journey
Every practical way to get from one place to another: direct trains with their fares per class, journeys with one change of train, flights, mixed train-and-flight itineraries, and GOVERNMENT BUSES from the state road transport corporations, priced from their own reservation systems. This is the whole answer in one call. Place ids come from find_place.
Use it for bus questions too. On a large share of the corridors these corporations serve there is no through train at all — Mysuru to Mangaluru runs twenty-five buses a day and not one direct train — so a journey this tool answers with a bus is often the only through service that exists, not a second-best.
Pass `train_class` when the traveller has named one ("3A", "sleeper") and every train is priced in it; leave it out and each train is priced in every class we have evidence it carries. Pass `modes: "trains_only"` when they have said train — do not ask them to choose otherwise, because the point of this planner is that they do not have to. Pass `arrive_by: true` when they named a time they must BE somewhere rather than a time they want to leave.
Live seat availability per class for one train on one date, plus every other way to book it when the through ticket will not confirm: a split at an intermediate station, boarding earlier, alighting later. This is the tool that rescues a waitlisted train. It spends a metered upstream call, so ask it about trains the traveller is actually considering rather than sweeping a list.
Every stop of one train with its scheduled arrival and departure, in order. Scheduled times only — this says nothing about where the train is today.
Parameterstrain_numberrequired
station_departures
Departures from a station
Every train scheduled to call at a station, in departure order — the enquiry board, not a journey plan. Use plan_journey when somebody wants to get somewhere; use this when they are asking what leaves from here. Scheduled times only.
Parametersafterlimitstation_coderequired
journey_calendar
Which days a route runs
Day-by-day service over a span of dates for a station pair: which days have a direct train and which have none, plus the weekly pattern. Use this when somebody is flexible about when they travel, or asks 'does it run on Sundays'. Timetable only — it says nothing about seats.
Other railway stations within a radius of one station, nearest first. Useful when a place has no service of its own and the traveller needs to know what is reachable — the planner already does this internally, so reach for it only when somebody asks the question directly.
Parameterslimitradius_kmstation_coderequired
next_confirmed_date
The next date with a confirmed seat
Search forward up to a month for the first date this route can actually be travelled with a confirmed berth — direct trains and one-change journeys together. Use it when a traveller is flexible about WHEN and the date they asked for is waitlisted. EXPENSIVE: it checks seats across dozens of trains and dates, so it is limited to a few calls an hour; for a single date use check_train_options instead.
Parameterstorequireddaterequiredfromrequiredquota
Version history
1
v1.3.0LatestSep 16, 2026
Score
83%
83% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Reached in the last 30 daysRequired25 pts
Auth declaredRequired10 pts
Tools listedRequired15 pts
DescriptionRequired15 pts
Logo10 pts
Documentation15 pts
Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.
LicenseNot applicable
A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.