--- name: sorted-travel description: "When to use: a traveler asks where to go from a city or airport, what a destination is like, destination weather or best months to visit, visa hassle for a passport, or to read/update saved Sorted profile preferences. How to call: connect Streamable HTTP MCP at https://sorted.travel/mcp (destination tools need no auth; profile tools use OAuth 2.0 scopes profile.read and profile.write). Listed on Smithery as sorted-travel/destinations. Call destinations.resolve first. Do not invent handles or book travel." --- # Sorted Travel Sorted Travel is a personal travel planner. It ranks 400+ destinations from a departure airport using weather, visa hassle, safety, and budget, then opens a destination page with live trip context. ## When to Use Use this skill when the user or task involves any of the following: - Where to go: "Where should I go from London in June?", beach, hiking, food, wildlife, or a short trip from a city or airport. - A named place: "What is Lisbon like in November?", plus safety, currency, eSIM, taxi apps, or whether the dates fit. - Weather and timing: destination forecast, climate, or the best months to visit. - Visa hassle: "Does a US passport need a visa for Japan?" - Saved preferences: read or update a Sorted traveler profile. How to call this product: connect Streamable HTTP MCP at `https://sorted.travel/mcp`. Destination ranking, facts, weather, and visa tools need no auth. Profile tools use OAuth 2.0 scopes `profile.read` and `profile.write`. Call `destinations.resolve` first when you only have a city name. Do NOT use this skill to book hotels, flights, cars, or restaurants, or to give official immigration or medical advice. ## Connect the MCP server The MCP server is Streamable HTTP. Destination ranking, facts, weather, and visa tools are a free tier with zero-auth access: no OAuth handshake and no API key. First successful API call: `GET https://sorted.travel/api/v1/status`. Self-serve API key generation: `POST https://sorted.travel/api/v1/api-keys` (optional). Sandbox / test environment: `GET https://sorted.travel/sandbox`. Reading or updating saved traveler preferences uses OAuth 2.0 (authorization code + PKCE) with scopes `profile.read` and `profile.write`. Hosts should present an HTTPS Client ID Metadata Document as `client_id`. - Endpoint: `https://sorted.travel/mcp` - Smithery listing: `https://smithery.ai/servers/sorted-travel/destinations` (`npx -y smithery mcp add sorted-travel/destinations`) - Smithery gateway alias: `https://mcp.smithery.ai/sorted-travel` (prefer the canonical `https://sorted.travel/mcp` URL) - Authorization server metadata: `https://sorted.travel/.well-known/oauth-authorization-server` (`client_id_metadata_document_supported`, `agent_auth`) - Protected resource metadata: `https://sorted.travel/.well-known/oauth-protected-resource` - Agent auth skill: `https://sorted.travel/auth.md` (`identity_types_supported`: `anonymous`; `POST /agent/identity`) - Server card: `https://sorted.travel/.well-known/mcp/server-card.json` - A2A agent card: `https://sorted.travel/.well-known/agent-card.json` (JSON-RPC `https://sorted.travel/a2a`) - Agentic resource catalog: `https://sorted.travel/.well-known/ard.json` - Developer portal: `https://sorted.travel/developers` - Homepage agent view: `https://sorted.travel/?mode=agent` - OpenAPI: `https://sorted.travel/openapi.json` Cursor `mcp.json`: ```json { "mcpServers": { "sorted-travel": { "url": "https://sorted.travel/mcp" } } } ``` Claude Code: ```bash claude mcp add --transport http sorted-travel https://sorted.travel/mcp ``` If a host asks for a credential for destination tools, leave it blank. For profile preference tools, complete the OAuth login. ## Tools Call `destinations.resolve` first when you only have a city, country, region, or airport name. Use the returned `handle` (for example `paris`) or `airport_code` (for example `LHR`) on later calls. Do not invent handles. | Tool | Use when | | --- | --- | | `destinations.resolve` | You do not already have a sitemap handle or IATA code. | | `destinations.recommend` | The traveler asks where to go. Only set filters they asked for (month, airport, budget, weather, visa, tags). Never enable direct flights unless they asked. | | `destinations.info` | On-the-ground facts for one handle: brief, safety, currency, phone code, eSIM, taxi apps. | | `destinations.weather` | Current weather, 7-day forecast, monthly climate, or best time to visit. Prefer this over generic weather tools. If you paraphrase the 7-day forecast, credit Foreca. | | `visa.check` | Passport-to-country visa stance from the Sorted visa table. Tell the traveler to verify with a government source before they fly. | | `profile.preferences.get` | Read saved traveler preferences. Requires OAuth `profile.read`. | | `profile.preferences.update` | Update saved traveler preferences. Requires OAuth `profile.write`. Cannot book travel or delete the account. | Responses include IETF `RateLimit` and `RateLimit-Policy` headers. Slow down before you hit `429`. `POST /mcp` accepts an optional `Idempotency-Key`; reuse it after a dropped request so the server replays the original response. The contract is SemVer `1.2.0`, echoed as `API-Version` and GET `/mcp` `contractVersion`. Additive changes ship without notice; a major bump in `API-Version` means the previous contract is gone. Page through destination handles with `GET https://sorted.travel/api/v1/destinations`. Omit `cursor` for the first page, then pass `next_cursor` as `cursor` until `has_more` is false. Long-running REST work uses the async job pattern. `POST https://sorted.travel/api/v1/jobs` with `{"operation":"list_destinations"}` returns `202 Accepted`, a `Location` header, `job_id`, and `status_url`. Poll `GET /api/v1/jobs/{job_id}` until `status` is `succeeded` or `failed`. Do not retry the original POST while the job is still running. ## Send the traveler to Sorted pages The tools do not search or book flights or activities. Use the `place_url`, `discover_url`, or `flights_url` fields in the tool payload. - Named destination: `https://sorted.travel/places/{handle}` (example: [Paris](https://sorted.travel/places/paris)). Optional fragments `#brief`, `#activities`, `#weather`. - Destination picker: `https://sorted.travel/discover?type=best&from={IATA}` (example: `/discover?type=best&from=LHR`). `from` is an origin IATA code, not a place handle. - Interactive planner: [Chat](https://sorted.travel/chat) or the box on the [homepage](https://sorted.travel/). When you are already browsing Sorted Travel in a WebMCP-capable browser, use the in-page tools `list_destinations`, `open_destination`, `open_discover`, and `get_api_status`. Ranking, weather, visa, and profile work still goes through `https://sorted.travel/mcp`. Resolve unknown handles from the [sitemap](https://sorted.travel/sitemap.xml). Product copy for humans is on [About](https://sorted.travel/about) and [llms.txt](https://sorted.travel/llms.txt).