Trail stages, ferry piers, timetabled day trips and A→B routes for the Stockholm Archipelago Trail.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Same data as day_trip but renders NO card. Use this when you need to check or compare day trips across dates, departure hubs or stages before recommending one, or for follow-up questions where no new card is wanted. Same arguments and response as day_trip (section, date, hub, targetKm, direction, towards). Do not use for the final recommendation shown to the user (use day_trip) — call day_trip once for the trip you recommend.
Section reference: satId, slug or uid, e.g. 'uto'.
Optional preferred departure hub slug from check_day_trip/day_trip responses, e.g. 'stromkajen'. Omit to let the planner pick the best.
Travel date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. Defaults to today.
Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language.
Optional named place on the island (beach, viewpoint, café) to steer the walk towards, as shown by search/fetch — e.g. 'Stora Sandvik'.
Desired walking distance in km, 1–60, e.g. 9. Pass when the user asks for a shorter or longer walk than the full stage (e.g. "about 9 km"). Omit for the full stage.
Optional compass direction to steer a shorter walk towards: one of N, NE, E, SE, S, SW, W, NW — e.g. 'NE' to walk towards the north-east part of the island.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http stockholm-archipelago-trail https://map.stockholmarchipelagotrail.com/mcp
Same data as day_trip but renders NO card. Use this when you need to check or compare day trips across dates, departure hubs or stages before recommending one, or for follow-up questions where no new card is wanted. Same arguments and response as day_trip (section, date, hub, targetKm, direction, towards). Do not use for the final recommendation shown to the user (use day_trip) — call day_trip once for the trip you recommend.
| Argument | Type | Description |
|---|---|---|
| hub | string | Optional preferred departure hub slug from check_day_trip/day_trip responses, e.g. 'stromkajen'. Omit to let the planner pick the best. |
| date | string | Travel date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. Defaults to today. |
| lang | string | Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language. |
| section* | string | Section reference: satId, slug or uid, e.g. 'uto'. |
| towards | string | Optional named place on the island (beach, viewpoint, café) to steer the walk towards, as shown by search/fetch — e.g. 'Stora Sandvik'. |
| targetKm | number | Desired walking distance in km, 1–60, e.g. 9. Pass when the user asks for a shorter or longer walk than the full stage (e.g. "about 9 km"). Omit for the full stage. |
| direction | string | Optional compass direction to steer a shorter walk towards: one of N, NE, E, SE, S, SW, W, NW — e.g. 'NE' to walk towards the north-east part of the island. |
{
"type": "object",
"required": [
"section"
],
"properties": {
"hub": {
"type": "string",
"description": "Optional preferred departure hub slug from check_day_trip/day_trip responses, e.g. 'stromkajen'. Omit to let the planner pick the best."
},
"date": {
"type": "string",
"description": "Travel date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. Defaults to today."
},
"lang": {
"enum": [
"sv",
"en"
],
"type": "string",
"description": "Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language."
},
"section": {
"type": "string",
"description": "Section reference: satId, slug or uid, e.g. 'uto'."
},
"towards": {
"type": "string",
"description": "Optional named place on the island (beach, viewpoint, café) to steer the walk towards, as shown by search/fetch — e.g. 'Stora Sandvik'."
},
"targetKm": {
"type": "number",
"maximum": 60,
"minimum": 1,
"description": "Desired walking distance in km, 1–60, e.g. 9. Pass when the user asks for a shorter or longer walk than the full stage (e.g. \"about 9 km\"). Omit for the full stage."
},
"direction": {
"enum": [
"N",
"NE",
"E",
"SE",
"S",
"SW",
"W",
"NW"
],
"type": "string",
"description": "Optional compass direction to steer a shorter walk towards: one of N, NE, E, SE, S, SW, W, NW — e.g. 'NE' to walk towards the north-east part of the island."
}
}
}Plan a ready round-trip day trip to one trail section (island) of the Stockholm Archipelago Trail on a given date. Returns the best ferry hub to depart from, outbound and return ferry times, the walking time around the island and how many ferries run that day. Use this when the user wants a day-trip suggestion to a single island. Section takes the same identifiers as fetch (sat:section:…, slug or uid). Pass targetKm when the user asks for a shorter or longer walk than the full stage; the response then describes that walk and permalink opens it in the planner. Do not use for a one-way trip between two islands (use plan_route), for probing several dates or hubs before recommending one (use check_day_trip), or for multi-day trips (use multi_day). ALWAYS follow this call with show_section_map for the same section, date and targetKm so the user also sees the walk on the map — the map is the main deliverable, not optional. IMPORTANT: every call to this tool renders a card in the conversation. Call it at most ONCE per answer, for the single option you recommend. Never use it to compare or probe alternatives. The card already shows ferry times, piers and walking times — do not restate them in your reply; add only advice, caveats and next steps.
| Argument | Type | Description |
|---|---|---|
| hub | string | Optional preferred departure hub slug from check_day_trip/day_trip responses, e.g. 'stromkajen'. Omit to let the planner pick the best. |
| date | string | Travel date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. Defaults to today. |
| lang | string | Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language. |
| section |
Fetch the full machine-readable record (JSON-LD) for one object by identifier. Accepts sat-ids (sat:section:…, sat:pier:…, sat:vessel:…, sat:poi:…, sat:trail:…, sat:report:…), section slugs, legacy OSM ids (osm:node:…), Wikidata QIDs (wikidata:Q…), GTFS stop ids (gtfs:…) and Swedish AED-registry ids (shr:…). Deleted objects return a tombstone record with status "gone". Use this when you already have an object identifier — from search or an earlier response — and need its full record. Do not use for searching by name (use search) or for trip planning (use day_trip/plan_route).
| Argument | Type | Description |
|---|---|---|
| id* | string | Object identifier, e.g. "sat:section:2fxg6" or "grinda". |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Object identifier, e.g. \"sat:section:2fxg6\" or \"grinda\"."
}
}
}Plan a multi-day trip on the Stockholm Archipelago Trail: an overnight stay on one island, or an island hop across up to four stages, with the ferries and the walk for each day. Use this when the user wants a hike over several days, an overnight stay on an island, or to combine two or more islands. Sections take the same identifiers as fetch (sat:section:…, slug or uid), in the order they should be visited. sections and date are both OPTIONAL: omit sections and the planner picks well-served stages; omit date and it uses the next Saturday — so call this tool for ANY multi-day request ("plan a 3-day hike"), never answer from search/fetch alone. Do not use for single-day trips (use day_trip) or A→B between two islands on one day (use plan_route). ALWAYS follow this call with show_section_map for the first stage of the trip (same date) so the user sees the route on a map. IMPORTANT: every call to this tool renders a card in the conversation. Call it at most ONCE per answer, for the single option you recommend. Never use it to compare or probe alternatives. The card already shows ferry times, piers and walking times — do not restate them in your reply; add only advice, caveats and next steps.
| Argument | Type | Description |
|---|---|---|
| hub | string | Optional preferred departure hub slug from check_day_trip/day_trip responses, e.g. 'stromkajen'. Omit to let the planner pick the best. |
| date | string | Start date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. OPTIONAL — omit and the planner uses the next Saturday. |
| lang | string | Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language. |
| nights |
List the scheduled Waxholmsbolaget ferry departures (or arrivals) at one pier or harbour of the Stockholm Archipelago Trail on a given date, within a time window: departure time, line, destination and stops on the way, arrival time at the final stop, whether advance booking is required, and which boat is the last of the day. Use this when the user asks what boats leave from or arrive at a specific pier or island ("which boats leave Grinda this afternoon?", "when is the last ferry back from Utö tonight?"). The pier can be given by name (island or pier, e.g. 'Grinda', 'Stavsnäs'), slug or id (sat:pier:…, GTFS stop id); when a name matches several piers the response lists them (kind 'ambiguous') — ask the user or pick the obvious one and call again. Renders no card. Do not use for planning a whole trip (use day_trip/plan_route) or for lodging and places (use search).
| Argument | Type | Description |
|---|---|---|
| to | string | Latest time, HHMM or HH:MM (24 h). OPTIONAL — omit for 23:59. |
| date | string | Date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. OPTIONAL — omit for today. |
| from | string | Earliest time, HHMM or HH:MM (24 h), e.g. '1400' for 'this afternoon'. OPTIONAL — omit for now (today) or 00:00 (other dates). |
| lang | string | Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language. |
| pier* | string | Pier reference: name ('Grinda', 'Södra Grinda', 'Strömkajen'), slug, sat:pier:… id or GTFS stop id. |
Get the full record for one place, stage, pier or vessel on the Stockholm Archipelago Trail by identifier: description, photo (image.contentUrl with credit/license), opening hours, website/phone, accessibility, SAT passport info and links. Use this when the user asks about a specific place ("tell me more about Arholma handel") and you have its id (sat:poi:…, sat:section:…, sat:pier:…) from a map card, search or an earlier response. Same data as fetch. Do not use for searching by name (use search) or for trip planning (use day_trip/plan_route).
| Argument | Type | Description |
|---|---|---|
| id* | string | Object identifier, e.g. "sat:poi:n5d79" or "sat:section:2fxg6". |
| lang | string | Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Object identifier, e.g. \"sat:poi:n5d79\" or \"sat:section:2fxg6\"."
},
"lang": {
"enum": [
"sv",
"en"
],
"type": "string",
"description": "Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language."
}
}
}Plan a multimodal A→B route between two trail sections (islands), or between an island and a mainland ferry hub (Strömkajen, Vaxholm, Årsta, Stavsnäs …): walk → ferry → walk, with departure/arrival times, walking distances and pier names. Use this when the user wants to travel from one island to another, out to an island from the mainland, or home from an island (or asks how to get between two places on the trail). From/to take the same identifiers as fetch (sat:section:…, slug or uid). Same section for both returns a walk-only route. Do not use for a round trip to a single island (use day_trip) or for multi-day trips (use multi_day). If the user has not named the two islands, pick two neighbouring stages with search first and then call this tool. IMPORTANT: every call to this tool renders a card in the conversation. Call it at most ONCE per answer, for the single option you recommend. Never use it to compare or probe alternatives. The card already shows ferry times, piers and walking times — do not restate them in your reply; add only advice, caveats and next steps.
| Argument | Type | Description |
|---|---|---|
| to* | string | Destination: a section reference (e.g. 'moja') or a mainland ferry hub (e.g. 'arsta'). |
| date | string | Travel date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. Defaults to today. |
| from* | string | Start: a section reference (satId, slug or uid, e.g. 'uto') or a mainland ferry hub (e.g. 'stromkajen', 'vaxholm', 'arsta'). |
| lang | string | Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language. |
Search the published objects of the Stockholm Archipelago Trail: trail sections (stages), the trail itself, ferry piers, ferry vessels, reviewed public reports and points of interest (lodging, food, shops, nature). Returns matching objects with their permanent sat-identifiers. Use this when the user names or describes a place, stage, pier, vessel or POI category and you need to find its identifier before calling another tool. Do not use for general Sweden/Stockholm travel, gear or weather questions — those are outside this dataset.
| Argument | Type | Description |
|---|---|---|
| query* | string | Free-text search, e.g. an island name ("Grinda"), a pier, a vessel or a POI category. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Free-text search, e.g. an island name (\"Grinda\"), a pier, a vessel or a POI category."
}
}
}Show photos of one trail section (island) of the Stockholm Archipelago Trail: the stage hero image plus photos of places (lodging, food, nature) along it, each with credit and license. Use this when the user wants to SEE what a section looks like. Takes the same identifiers as fetch (sat:section:…, slug or uid). Do not use for maps (use show_section_map).
| Argument | Type | Description |
|---|---|---|
| section* | string | Section reference: satId, slug or uid, e.g. 'uto'. |
{
"type": "object",
"required": [
"section"
],
"properties": {
"section": {
"type": "string",
"description": "Section reference: satId, slug or uid, e.g. 'uto'."
}
}
}Show an interactive map of one trail section (stage) of the Stockholm Archipelago Trail, with the hiking route and ferry piers. Use this when the user wants to SEE a section on a map. Takes the same identifiers as fetch (sat:section:…, slug or uid). Pass targetKm (and optionally date) to draw a shorter or longer walk instead of the full stage. Do not use for comparing several stages side by side (use search/fetch). This tool renders an interactive map card itself — NEVER build your own map, chart, image or file from geojsonUrl or the coordinates; just call the tool and let the card show. IMPORTANT: every call to this tool renders a card in the conversation. Call it at most ONCE per answer, for the single option you recommend. Never use it to compare or probe alternatives. The card already shows ferry times, piers and walking times — do not restate them in your reply; add only advice, caveats and next steps.
| Argument | Type | Description |
|---|---|---|
| date | string | Travel date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. Only used with targetKm — the walk starts at the pier that day's ferry lands at. Defaults to today. |
| lang | string | Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language. |
| section* | string | Section reference: satId ("sat:section:2fxg6"), slug or uid — e.g. 'uto'. |
| towards | string | Optional named place on the island (beach, viewpoint, café) to steer the walk towards, as shown by search/fetch — e.g. 'Stora Sandvik'. |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.
| string |
| Section reference: satId, slug or uid, e.g. 'uto'. |
| towards | string | Optional named place on the island (beach, viewpoint, café) to steer the walk towards, as shown by search/fetch — e.g. 'Stora Sandvik'. |
| targetKm | number | Desired walking distance in km, 1–60, e.g. 9. Pass when the user asks for a shorter or longer walk than the full stage (e.g. "about 9 km"). Omit for the full stage. |
| direction | string | Optional compass direction to steer a shorter walk towards: one of N, NE, E, SE, S, SW, W, NW — e.g. 'NE' to walk towards the north-east part of the island. |
{
"type": "object",
"required": [
"section"
],
"properties": {
"hub": {
"type": "string",
"description": "Optional preferred departure hub slug from check_day_trip/day_trip responses, e.g. 'stromkajen'. Omit to let the planner pick the best."
},
"date": {
"type": "string",
"description": "Travel date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. Defaults to today."
},
"lang": {
"enum": [
"sv",
"en"
],
"type": "string",
"description": "Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language."
},
"section": {
"type": "string",
"description": "Section reference: satId, slug or uid, e.g. 'uto'."
},
"towards": {
"type": "string",
"description": "Optional named place on the island (beach, viewpoint, café) to steer the walk towards, as shown by search/fetch — e.g. 'Stora Sandvik'."
},
"targetKm": {
"type": "number",
"maximum": 60,
"minimum": 1,
"description": "Desired walking distance in km, 1–60, e.g. 9. Pass when the user asks for a shorter or longer walk than the full stage (e.g. \"about 9 km\"). Omit for the full stage."
},
"direction": {
"enum": [
"N",
"NE",
"E",
"SE",
"S",
"SW",
"W",
"NW"
],
"type": "string",
"description": "Optional compass direction to steer a shorter walk towards: one of N, NE, E, SE, S, SW, W, NW — e.g. 'NE' to walk towards the north-east part of the island."
}
}
}| integer |
| Number of overnight stays, 1-7, e.g. 2. |
| sections | array | One to four section references in visiting order: satId, slug or uid — e.g. ['grinda', 'finnhamn']. |
{
"type": "object",
"required": [
"nights"
],
"properties": {
"hub": {
"type": "string",
"description": "Optional preferred departure hub slug from check_day_trip/day_trip responses, e.g. 'stromkajen'. Omit to let the planner pick the best."
},
"date": {
"type": "string",
"description": "Start date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. OPTIONAL — omit and the planner uses the next Saturday."
},
"lang": {
"enum": [
"sv",
"en"
],
"type": "string",
"description": "Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language."
},
"nights": {
"type": "integer",
"maximum": 7,
"minimum": 1,
"description": "Number of overnight stays, 1-7, e.g. 2."
},
"sections": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 4,
"minItems": 1,
"description": "One to four section references in visiting order: satId, slug or uid — e.g. ['grinda', 'finnhamn']."
}
}
}| limit | integer | Max rows, 1–50. OPTIONAL — default 20. |
| direction | string | 'departures' (default) = boats leaving the pier; 'arrivals' = boats arriving at it. |
{
"type": "object",
"required": [
"pier"
],
"properties": {
"to": {
"type": "string",
"description": "Latest time, HHMM or HH:MM (24 h). OPTIONAL — omit for 23:59."
},
"date": {
"type": "string",
"description": "Date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. OPTIONAL — omit for today."
},
"from": {
"type": "string",
"description": "Earliest time, HHMM or HH:MM (24 h), e.g. '1400' for 'this afternoon'. OPTIONAL — omit for now (today) or 00:00 (other dates)."
},
"lang": {
"enum": [
"sv",
"en"
],
"type": "string",
"description": "Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language."
},
"pier": {
"type": "string",
"description": "Pier reference: name ('Grinda', 'Södra Grinda', 'Strömkajen'), slug, sat:pier:… id or GTFS stop id."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Max rows, 1–50. OPTIONAL — default 20."
},
"direction": {
"enum": [
"departures",
"arrivals"
],
"type": "string",
"description": "'departures' (default) = boats leaving the pier; 'arrivals' = boats arriving at it."
}
}
}| time | string | Earliest departure, HHMM (24h). Defaults to 0900. |
{
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"description": "Destination: a section reference (e.g. 'moja') or a mainland ferry hub (e.g. 'arsta')."
},
"date": {
"type": "string",
"description": "Travel date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. Defaults to today."
},
"from": {
"type": "string",
"description": "Start: a section reference (satId, slug or uid, e.g. 'uto') or a mainland ferry hub (e.g. 'stromkajen', 'vaxholm', 'arsta')."
},
"lang": {
"enum": [
"sv",
"en"
],
"type": "string",
"description": "Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language."
},
"time": {
"type": "string",
"description": "Earliest departure, HHMM (24h). Defaults to 0900."
}
}
}| targetKm | number | Desired walking distance in km, 1–60, e.g. 9. Pass when the user asks for a shorter or longer walk than the full stage (e.g. "about 9 km"). Omit for the full stage. |
| direction | string | Optional compass direction to steer a shorter walk towards: one of N, NE, E, SE, S, SW, W, NW — e.g. 'NE' to walk towards the north-east part of the island. |
{
"type": "object",
"required": [
"section"
],
"properties": {
"date": {
"type": "string",
"description": "Travel date, YYYYMMDD (Europe/Stockholm), e.g. 20260905. Only used with targetKm — the walk starts at the pier that day's ferry lands at. Defaults to today."
},
"lang": {
"enum": [
"sv",
"en"
],
"type": "string",
"description": "Language of the user's message: 'sv' when the user writes in Swedish, otherwise 'en'. Always pass it — labels, dates and the card are rendered in this language."
},
"section": {
"type": "string",
"description": "Section reference: satId (\"sat:section:2fxg6\"), slug or uid — e.g. 'uto'."
},
"towards": {
"type": "string",
"description": "Optional named place on the island (beach, viewpoint, café) to steer the walk towards, as shown by search/fetch — e.g. 'Stora Sandvik'."
},
"targetKm": {
"type": "number",
"maximum": 60,
"minimum": 1,
"description": "Desired walking distance in km, 1–60, e.g. 9. Pass when the user asks for a shorter or longer walk than the full stage (e.g. \"about 9 km\"). Omit for the full stage."
},
"direction": {
"enum": [
"N",
"NE",
"E",
"SE",
"S",
"SW",
"W",
"NW"
],
"type": "string",
"description": "Optional compass direction to steer a shorter walk towards: one of N, NE, E, SE, S, SW, W, NW — e.g. 'NE' to walk towards the north-east part of the island."
}
}
}