Findings on what compounds and supplements do in the body, with evidence strength, quote and paper.
- Passed: Handshake
- Passed: Tools listed
- Passed: Updated recently
Median latency 699 ms · Last checked
Explore
Evidence for your next connection.
Independent measurements of remote MCP servers. Every observation has a timestamp.
Read-only probesMCP server · Other
Swiss trains, trams, buses, boats: door-to-door journeys with pictures, boards, days out, reach maps
2 failed · 8 not measured
Median of successful probes over 7 days
Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.
Tool definitions returned by this server
Independent monitoring
Outdated check
Last connection measurement is over 24 hours old. Current availability is unknown.
Last checked| Test area | Passed | Failed | Unmeasured |
|---|---|---|---|
ConnectionCan a client connect and discover tools? | 4 | 1 | 0 |
Reliability & speedDoes it respond consistently and quickly? | 0 | 0 | 4 |
Access & authenticationWhat is required to use this server? | 1 | 0 | 2 |
Tool qualityAre the tool definitions usable by an agent? | 4 | 0 | 0 |
Publisher identityCan the publisher be traced to its source? | 3 | 1 | 2 |
Unmeasured means there is not enough evidence to decide. How these checks work
Start using Spick Me — Swiss public transport
Choose your client, copy the configuration, then enable the server in your client’s MCP settings.
Run this command in your terminal, then restart Claude Code.
Claude Code
claude mcp add --transport http spick-me-swiss-public-transport https://spickme.ch/mcpCapabilities
List the next departures from one station or stop, as the board on the platform would: time, line, direction, platform, kind of vehicle, and the next stops it calls at. Use it for "what leaves from Bern in the next hour", "when is the next tram from Bellevue", or to see how often a place is served. With to, it lists only what calls at that station later, each with its arrival time there — "trains from Olten to Zürich HB" — including trains whose destination is further on. For connections that may need a change, or door to door, use plan_journey. The answer's open_url opens the station's live board on spickme.ch. Inputs: station is A station or stop name ("Zürich HB", "Bern", "Lausanne, Flon"), an address ("Bahnhofplatz 1, Winterthur"), a named place ("ETH Zürich", "Kunsthaus Zürich"), a town's name in English, French or Italian ("Geneva", "Lucerne"), a coordinate as "geo:47.3769,8.5417", or a place_id returned by find_place ("stop:8503000"). Names are read the way a rider types them; an ambiguous name returns candidates instead of a guess. If it is an address or coordinate, the nearest stop is used and named in the answer. to (optional) is a station the departures must call at, read the same way. time is when the board starts; Swiss local time in ISO 8601, e.g. "2026-09-26T08:00"; an explicit offset or Z is converted. A bare "08:00" means today (tomorrow if it has long passed). Omit for now. limit is how many departures (1–40, default 12). Times are planned timetable times with their Swiss offset. With live: true each departure carries live: its delay in minutes and whether it is cancelled, and the answer the operators' notices about it. Example: {"station": "Luzern", "time": "2026-09-26T17:30", "limit": 8}
DiscoveredLook up what a place name means in the Swiss public-transport network: stations and stops, street addresses, and named places (a university, a museum, a mountain), ranked best first, each with a stable place_id. Use it when the user names a place you are not sure of, when another tool answered that a name is ambiguous, or to get coordinates for a place. You do not need it before plan_journey or departures for ordinary names — those tools accept names directly and say how they read them. A station or stop in Switzerland carries a page_url: its page on spickme.ch, with its departures, its lines and the places it reaches directly. Inputs: query is A station or stop name ("Zürich HB", "Bern", "Lausanne, Flon"), an address ("Bahnhofplatz 1, Winterthur"), a named place ("ETH Zürich", "Kunsthaus Zürich"), a town's name in English, French or Italian ("Geneva", "Lucerne"), a coordinate as "geo:47.3769,8.5417", or a place_id returned by find_place ("stop:8503000"). Names are read the way a rider types them; an ambiguous name returns candidates instead of a guess. limit is how many candidates to return (1–10, default 5). near is an optional latitude/longitude that breaks ties between equally good matches. Example: {"query": "Winterthur Spital"} returns the stop "Winterthur, Kantonsspital" with its place_id, which you can pass to plan_journey as from or to.
DiscoveredFind the last public-transport connection tonight from where someone is to where they are going, the few before it, and what still runs after one in the morning (night trains and night buses), in Switzerland. When nothing goes tonight, the first connection after five in the morning. Use it for "when is the last train from Zürich to Bern tonight", "how late can I stay in Lausanne and still get home to Vevey", "is there a night bus from Bellevue to Witikon on Saturday". A plain plan_journey search asked for a late departure lists what leaves after it, and one asked to arrive by midnight misses the connection that leaves at 00:02; this tool asks the timetable the way the night needs. For any other time of day, use plan_journey. Inputs: from is where the person is, to where they are going home to; each is A station or stop name ("Zürich HB", "Bern", "Lausanne, Flon"), an address ("Bahnhofplatz 1, Winterthur"), a named place ("ETH Zürich", "Kunsthaus Zürich"), a town's name in English, French or Italian ("Geneva", "Lucerne"), a coordinate as "geo:47.3769,8.5417", or a place_id returned by find_place ("stop:8503000"). Names are read the way a rider types them; an ambiguous name returns candidates instead of a guess. departure is the earliest they could leave: Swiss local time in ISO 8601, e.g. "2026-09-26T08:00"; an explicit offset or Z is converted. A bare "08:00" means today (tomorrow if it has long passed). Omit for now. ("the last train tonight" from a dinner: the time the dinner might end, or omit for now). bicycle: true keeps to rides that carry bicycles; avoid_tilting: true keeps off tilting trains. Both are rules for the search, so it finds the connection that keeps them rather than striking trains out of the usual answer. The regular service is taken to end at one in the morning, and the night at five: last is the latest connection leaving before one, earlier the three before it, after_1am everything leaving between one and five. When nothing leaves before one, the latest night connection is last. Connections that sit out the night at a station (a change of two hours or more) are left out. Times are planned timetable times with their Swiss offset; live delays and cancellations are not included. Example: {"from": "Zürich HB", "to": "Bern", "departure": "2026-09-26T22:00"}
DiscoveredDescribe one public-transport line in Switzerland — a train (S24, IC5, RE33), a tram or bus line (tram 11, bus 31), a boat or a mountain railway — by its directions and the stops of each with the minutes to them, how many trips it makes on a working day, a Saturday and a Sunday with the first, the last and how often it runs, and its page and whole timetable as a PDF to print or save. Use it for "where does the S24 go", "how often does tram 11 in Zürich run on Sundays", "when is the first and last IC5", "give me the timetable of the S6 as a PDF". For a station's lines and works, station_info; for a journey, plan_journey. Inputs: line is the line's label as on the vehicle or the board ("S24", "IC 5", "11", "Bus 31"). near narrows a label used in several places: a station or town it calls at, A station or stop name ("Zürich HB", "Bern", "Lausanne, Flon"), an address ("Bahnhofplatz 1, Winterthur"), a named place ("ETH Zürich", "Kunsthaus Zürich"), a town's name in English, French or Italian ("Geneva", "Lucerne"), a coordinate as "geo:47.3769,8.5417", or a place_id returned by find_place ("stop:8503000"). Names are read the way a rider types them; an ambiguous name returns candidates instead of a guess. Without near, the busiest line of that label is described and the others are listed with their towns. The days are read from the published timetable for the four weeks from today, each kind of day from an ordinary one of them; times are planned. Example: {"line": "S24", "near": "Zug"}
DiscoveredSuggest railway stations in Switzerland where two to ten people starting from different places can meet by public transport, each with every person's travel time. Two rankings: fairest (the longest journey as short as it can be, and nobody travelling much longer than the others) and least_travel (everybody's minutes added up, keeping to places in between). Well-connected stations get a small bonus, and the suggestions are spread out rather than five suburbs of one town. Use it for "where should I meet my friend from Basel if I'm in Chur", "a good place for the four of us from Bern, Luzern, Zürich and Basel to meet for lunch", "halfway between Geneva and Lausanne". For the travel times between given places, use travel_time_matrix; for the journey to the place chosen, plan_journey. Each suggestion carries plan_urls, one per person, opening their connections to it on spickme.ch; with two people, open_url opens the meet page with a map. Inputs: people is the list of starting places in any order (2–10), each A station or stop name ("Zürich HB", "Bern", "Lausanne, Flon"), an address ("Bahnhofplatz 1, Winterthur"), a named place ("ETH Zürich", "Kunsthaus Zürich"), a town's name in English, French or Italian ("Geneva", "Lucerne"), a coordinate as "geo:47.3769,8.5417", or a place_id returned by find_place ("stop:8503000"). Names are read the way a rider types them; an ambiguous name returns candidates instead of a guess. departure is when everybody leaves: Swiss local time in ISO 8601, e.g. "2026-09-26T08:00"; an explicit offset or Z is converted. A bare "08:00" means today (tomorrow if it has long passed). Omit for now. limit is how many suggestions per ranking (1–8, default 5). max_transfers caps changes. Minutes are from the departure to the arrival at the meeting station, waiting for the first vehicle included, on that day's planned timetable; live delays are not included. A person's own station is never suggested. Example: {"people": ["Basel", "Chur"], "departure": "2026-09-26T09:00"}
DiscoveredList the museums and galleries in Switzerland that can be reached by public transport from one place within a travel budget, each with the minutes to its door (the walk from the stop included), that day's opening hours, and whether a visit of the length asked for fits before it closes. Use it for "which museums can I visit from Bern this afternoon", "a rainy-day museum within an hour of Zürich", "an art museum near Lausanne open on Monday", or "what is there to see from Olten in two hours". For the journey to one museum, use plan_journey with its address; for a day with several stops, plan_day_out. The answer's open_url opens the same question on spickme.ch's museums page, and each museum's plan_url opens the visit as a day out there and back, to change and share. Inputs: from is A station or stop name ("Zürich HB", "Bern", "Lausanne, Flon"), an address ("Bahnhofplatz 1, Winterthur"), a named place ("ETH Zürich", "Kunsthaus Zürich"), a town's name in English, French or Italian ("Geneva", "Lucerne"), a coordinate as "geo:47.3769,8.5417", or a place_id returned by find_place ("stop:8503000"). Names are read the way a rider types them; an ambiguous name returns candidates instead of a guess. departure is when to leave: Swiss local time in ISO 8601, e.g. "2026-09-26T08:00"; an explicit offset or Z is converted. A bare "08:00" means today (tomorrow if it has long passed). Omit for now. visit_minutes is the time wanted inside (10–360, default 50). max_minutes is the most travel time to the door (5–360, default 90). kinds narrows to art, gallery, history, science, technology, museum (general) or other. limit is how many to list (1–60, default 15). lang is the language of the museums' names (de, fr, it or en; default the name in the language of the place). Each museum has a status: "fits" (open when you arrive, or opens later, with the whole visit before closing), "short" (open, but not for the whole visit; closes is given), "closed" (closed by then, that day or that season), or "hours_unknown" (no source publishes its hours as data, which is most museums; its website is given). Listed fits first, then hours_unknown, short and closed; within each, museums of national importance first, then the nearest. Times are planned timetable times; live delays are not included. The museum records are CC BY-SA 4.0; their source and licence are in data.museums. Example: {"from": "Bern", "departure": "2026-09-26T13:00", "visit_minutes": 90, "max_minutes": 60, "kinds": ["art"]}
DiscoveredPlans a multi-stop day with a stay at each stop, timing each leg from when the previous stay ends: the train there, the hours somewhere, the connection on, and the way home. Use it for "a day trip from Bern to Grindelwald with four hours hiking, then dinner in Interlaken", "visit Thun, Spiez and Interlaken today", or an evening out and back. For a single A-to-B trip, use plan_journey. Inputs: start is A station or stop name ("Zürich HB", "Bern", "Lausanne, Flon"), an address ("Bahnhofplatz 1, Winterthur"), a named place ("ETH Zürich", "Kunsthaus Zürich"), a town's name in English, French or Italian ("Geneva", "Lucerne"), a coordinate as "geo:47.3769,8.5417", or a place_id returned by find_place ("stop:8503000"). Names are read the way a rider types them; an ambiguous name returns candidates instead of a guess. stops is the list of places in order (1–12), each with stay_minutes (default 120; 0 means pass through without stopping) or leave_at ("HH:MM", move on at that time — a night away works: the next such time), and an optional note. end defaults to start, which makes it a round trip. max_transfers caps the changes on each stretch. bicycle: true keeps to rides that carry bicycles; avoid_tilting: true keeps off tilting trains. Both are rules for the search, so it finds the connection that keeps them rather than striking trains out of the usual answer. departure is when the day starts: Swiss local time in ISO 8601, e.g. "2026-09-26T08:00"; an explicit offset or Z is converted. A bare "08:00" means today (tomorrow if it has long passed). Omit for now. Each leg comes with a picture_url that opens an image of that connection, and the answer's open_url opens the whole day on spickme.ch, where a stay can be changed, the day re-planned for another date, and the plan shared. Each leg also carries its track record from the days before, as plan_journey's journeys do: on how many of them it ran smoothly, how punctual each train was where you get off, and how often each change was too short; punctuality sets how much of it (default "summary"). Example: {"start": "Bern", "stops": [{"place": "Grindelwald", "stay_minutes": 240, "note": "hike"}, {"place": "Interlaken Ost", "stay_minutes": 90, "note": "dinner"}], "departure": "2026-09-26T08:00"}
DiscoveredFind the best connections by train, tram, bus, boat and mountain railway between two places in Switzerland, over the official Swiss timetable. Door to door: an address or a named place works as well as a station, and the walk to and from the nearest stops is included. Use it for "how do I get from A to B", "the next connections from Olten to Zürich", "when is the next train to …", "I need to be in Bern by 9" — it gives departure and arrival times, changes and platforms. Prefer it to the departure board for any question with a destination. Every journey comes with a picture_url: a link that opens a ready-made image of the connection, for looking at or sharing. The answer's open_url opens the same search on spickme.ch, where the connections are shown with their live delays. Inputs: from and to are each A station or stop name ("Zürich HB", "Bern", "Lausanne, Flon"), an address ("Bahnhofplatz 1, Winterthur"), a named place ("ETH Zürich", "Kunsthaus Zürich"), a town's name in English, French or Italian ("Geneva", "Lucerne"), a coordinate as "geo:47.3769,8.5417", or a place_id returned by find_place ("stop:8503000"). Names are read the way a rider types them; an ambiguous name returns candidates instead of a guess. Give departure (leave at or after) or arrival (be there by), not both; with arrival, the answer also brings the first connection arriving up to 30 minutes after it, for a user who said "around"; both are Swiss local time in ISO 8601, e.g. "2026-09-26T08:00"; an explicit offset or Z is converted. A bare "08:00" means today (tomorrow if it has long passed). Omit for now. via is up to three stations or stops the journey must pass through (then one best journey is returned); to stop somewhere on the way, use plan_day_out. max_transfers caps the number of changes (0 = direct only). bicycle: true keeps to rides that carry bicycles; avoid_tilting: true keeps off tilting trains. Both are rules for the search, so it finds the connection that keeps them rather than striking trains out of the usual answer. limit is how many alternatives to return (1–8, default 4). punctuality says how much of the trains' past record to include (default "summary"). Every journey also carries its track record from the days before (up to eight weeks): track_record says on how many of them it ran smoothly — every change made and on time at the destination — and what happened on the others; each ride's punctuality says on how many days that train was on time (less than 3 minutes late) where you get off and how late it usually is; each change_after says on how many days the change left less time than the timetable reckons for it. These are past days, recorded from live data, not a forecast. All times are planned timetable times with their Swiss offset. With live: true, the connections are routed on the realtime data (a cancelled ride is avoided, an added one used) and each ride carries live: its departure and arrival delay in minutes, whether it is cancelled, and the operators' notices about the stations ridden past; the journey's live gives the delay at the destination. Example: {"from": "Winterthur", "to": "Bern", "departure": "2026-09-26T07:00"}
DiscoveredList every station and stop in Switzerland reachable from one place within a number of minutes by public transport, nearest first, with the earliest arrival at each. Use it for "where can I get to from Bern in 45 minutes", "which towns are within an hour's commute of Zug", catchment areas and isochrones. For the travel time between specific places, use travel_time_matrix; for how to make a particular journey, plan_journey. The answer's open_url opens the area as a map on spickme.ch, with every place reached and a picture of it to share. Inputs: from is A station or stop name ("Zürich HB", "Bern", "Lausanne, Flon"), an address ("Bahnhofplatz 1, Winterthur"), a named place ("ETH Zürich", "Kunsthaus Zürich"), a town's name in English, French or Italian ("Geneva", "Lucerne"), a coordinate as "geo:47.3769,8.5417", or a place_id returned by find_place ("stop:8503000"). Names are read the way a rider types them; an ambiguous name returns candidates instead of a guess. (an address or coordinate is snapped to its nearest stop, which the answer names). departure is when to leave: Swiss local time in ISO 8601, e.g. "2026-09-26T08:00"; an explicit offset or Z is converted. A bare "08:00" means today (tomorrow if it has long passed). Omit for now. max_minutes is the time budget (default 60), waiting for the first vehicle included. limit is how many places to list (default 50). max_transfers caps changes. include: ["museums"] also lists the museums reachable in the same time, with that day's hours where known (museums_to_visit has the full question, with a visit length). Minutes are timetable minutes from the departure time given, on that day's planned timetable; live delays are not included. Example: {"from": "Bern", "departure": "2026-09-28T07:30", "max_minutes": 45}
DiscoveredDescribe one station or stop in Switzerland as its page on spickme.ch does: the lines that call there, each with its page and its whole timetable as a PDF to print; the planned changes of the coming weeks (works, a replacement bus and the stop it leaves from, departures that do not run, end early or leave at another minute, extra departures, holidays that run as a Sunday); and the connections the timetable builds there, line to line, with the minutes allowed, what missing one costs, and how often each held over the last weeks. Use it for "are there any works at Olten next week", "is the train replaced by a bus this weekend", "which lines stop at Bern, Wankdorf", "can I get a PDF timetable of the S24", "does the change from the IR to the bus in Langnau usually work". For what leaves in the next hour, use departures; for a journey, plan_journey; for one line's stops and how often it runs, line_info. Inputs: station is A station or stop name ("Zürich HB", "Bern", "Lausanne, Flon"), an address ("Bahnhofplatz 1, Winterthur"), a named place ("ETH Zürich", "Kunsthaus Zürich"), a town's name in English, French or Italian ("Geneva", "Lucerne"), a coordinate as "geo:47.3769,8.5417", or a place_id returned by find_place ("stop:8503000"). Names are read the way a rider types them; an ambiguous name returns candidates instead of a guess. (an address or coordinate is taken to its nearest station). date is the first day the planned changes are read from: Swiss local time in ISO 8601, e.g. "2026-09-26T08:00"; an explicit offset or Z is converted. A bare "08:00" means today (tomorrow if it has long passed). Omit for now. lines is how many lines to list, busiest first (1–80, default 25). The planned changes are the published timetable's, compared with an ordinary week; live disruptions are not in them (departures with live: true has those). The connections' record is of past days, recorded from live data, not a forecast. Example: {"station": "Olten"}
DiscoveredList what changes in Swiss public transport at the timetable change in December, from a comparison of this year's published timetable with next year's: lines with more or fewer trips on a weekday, a Saturday or a Sunday, new and discontinued lines, stops added to or dropped from a line, first and last trips that move, direct connections between two stations that start or end or get quicker, stops that open, close or are renamed. Use it for "what changes at Olten in December", "will the S24 still run next year", "what is new in canton Bern from 13 December", "does my bus 31 get more trips". For the planned works of the coming weeks, use station_info; for a journey after the change, plan_journey with a date after it. Inputs: give one or more of place (a station, stop or town: entries whose stops or communes include it), line (a line's label: "S24", "31"), canton (two letters: "BE", "VD"); with none, the largest changes in the country. limit is how many entries (1–50, default 12). An operator whose lines are not in next year's file yet is listed in operators_not_yet_published, and its lines are left out rather than called discontinued; an entry marked uncertain may be a gap in next year's data. The comparison is redone every week until the change. Example: {"place": "Olten"}
DiscoveredCompute the public-transport travel time in minutes from each of several origins to each of several destinations in Switzerland, for one departure time. For comparing locations: which office site is best reached from where staff live, which flat has the shortest commutes, how well a venue is connected. Use it when there are several places on either side. For one pair with the actual connection, use plan_journey; for everywhere reachable, reachable_area. Each origin in the answer carries a reach_url: the places reachable from it, as a map on spickme.ch. Inputs: origins and destinations are lists of places, each A station or stop name ("Zürich HB", "Bern", "Lausanne, Flon"), an address ("Bahnhofplatz 1, Winterthur"), a named place ("ETH Zürich", "Kunsthaus Zürich"), a town's name in English, French or Italian ("Geneva", "Lucerne"), a coordinate as "geo:47.3769,8.5417", or a place_id returned by find_place ("stop:8503000"). Names are read the way a rider types them; an ambiguous name returns candidates instead of a guess. (addresses and coordinates are snapped to their nearest stop, named in the answer). departure: Swiss local time in ISO 8601, e.g. "2026-09-26T08:00"; an explicit offset or Z is converted. A bare "08:00" means today (tomorrow if it has long passed). Omit for now. max_transfers caps changes. The answer is minutes[i][j] from origins[i] to destinations[j], waiting for the first vehicle included, or null where no connection exists that day. A place that cannot be read (an ambiguous or unknown name) is left out of origins, destinations and minutes and listed in unresolved with its candidates; the rest is answered. Planned timetable; live delays are not included. Example: {"origins": ["Winterthur", "Baden", "Zug"], "destinations": ["Zürich HB", "Zürich Oerlikon"], "departure": "2026-09-28T07:30"}
DiscoveredRecent measurements
| Checked | Result | Response | Tools |
|---|---|---|---|
| Connected | 14891 ms | 12 |