Let Claude plan an NS train trip in the Netherlands
To let Claude plan an NS train trip, install Wield and name two Dutch stations. Add a date and a time if you do not travel now. For example: "Plan an NS train from Amsterdam Centraal to Rotterdam Centraal on 26 November 2026 at 17:30, and show the fares." Claude runs the ns.nl/search-trains recipe in your own browser. It returns the trips with planned and live times, transfers, status, crowding and fares. No login is needed.
NS (Nederlandse Spoorwegen) Plan a train trip in the Netherlands (NS)
Read-only, no loginPasses the daily check
Parameters (4)
What you need
- Claude Desktop, Claude Code, Cursor, Codex or another MCP client.
- A Chromium browser (Chrome, Edge, Brave, Arc, Vivaldi, Opera) with the Wield extension.
wield-mcp. Runnpx -y wield-mcp init, or use the one-click Claude Desktop bundle on wield.run/install.
For the full setup, follow the quick start.
Ask your agent
Give the departure station and the arrival station. Add a travel day and a departure time if the trip is not now. Claude calls find_recipe to find the recipe, then run with the parameters.
You: Plan an NS train from Amsterdam Centraal to Rotterdam Centraal on 26 November 2026 at 17:30, and show the fares.
You: Show the next NS trains from Utrecht to Schiphol Airport and flag any trip that is cancelled or disrupted.
Params: what to put where
| Param | Required | What to put in it |
|---|---|---|
from | yes | Station, such as Amsterdam Centraal, Utrecht or Schiphol Airport. The first match of NS's station search is used |
to | yes | Station, such as Rotterdam Centraal or Den Haag Centraal |
date | no | Travel day as YYYY-MM-DD. Leave out to travel now |
time | no | Departure time as HH:MM, Dutch local time. Default 08:00. Used together with date |
What comes back
The result has from, to and a trips list. Each trip shows the planned departure and arrival, and the actual times when NS has them (departure_actual and arrival_actual). It also shows duration_min, transfers and status, which is normal, cancelled or disrupted.
Each trip also shows crowding, price_eur for second class, price_first_class_eur for first class and the fare used. The legs list has each leg's train, platform and crowding. The url opens the trip on ns.nl.
What leaves your computer
The recipe reads the planner page on www.ns.nl, then makes three requests to gateway.apiportal.ns.nl. These are the same requests the planner on ns.nl makes, and they go out from your browser. Nothing passes through wield.run. Wield logs each request on your computer, with method, host, path, status and timing, but never bodies or query values. Telemetry is off by default. Wield never reads, copies or sends your cookies or passwords.
A status check on 7 November 2026 from Amsterdam Centraal to Utrecht Centraal passed 6 of 6 checks, with three requests in about one second.
NS's terms, in plain words
We have not reviewed NS's terms for automated access yet. The recipe makes one person's search, with the same requests the planner makes. Do not run it in a loop to collect timetables or prices in bulk. Tickets are not part of the recipe. Buying stays on ns.nl.
This is not legal advice. Read NS's terms yourself before you automate anything else.
Limits
- Read only. The recipe never sells tickets. Open the
urlon a trip to continue on ns.nl. - Current timetable only. Plans work only within the current timetable. The new one is published shortly before mid-December. Later dates return an error.
- No arrive-by search. The recipe plans from a departure time.
- Check the station match. The first match of NS's station search is used, so compare
fromandtowith what you asked for. - Run limits apply. A run has at most 12 steps, 40 requests, 5 MB per response and 60 seconds.
FAQ
Does Claude need an NS account?
No. The recipe runs without a login.
Can Claude book the ticket?
No. Open the url on the trip you want and buy on ns.nl.
Why did my date return an error?
NS plans only within the current timetable. Dates after the December timetable change are not available yet.
Which AI apps work with it?
Any MCP client. npx -y wield-mcp init sets up Claude Desktop, Claude Code, Cursor and Codex. Other MCP clients work with the standard stdio config.