{
  "markdown": "# getyourguide-mcp\n\nMCP server for [GetYourGuide](https://www.getyourguide.com) — search tours and\nactivities, read tour details, bookable options, and reviews via the\n[GetYourGuide Partner API](https://partner.getyourguide.com).\n\n> 🤖 This project was developed and is maintained by AI (Claude Code).\n> Use at your own discretion.\n\n- **npm:** [npmjs.com/package/getyourguide-mcp](https://www.npmjs.com/package/getyourguide-mcp)\n- **Source:** [github.com/chrischall/getyourguide-mcp](https://github.com/chrischall/getyourguide-mcp)\n\n## Tools\n\nAll tools are read-only — this server registers no write tools.\n\n| Tool | What it does |\n| --- | --- |\n| `gyg_search_tours` | Search tours/activities by free text, location, category, or date range; sortable; `view` |\n| `gyg_get_tour` | Full record for one tour by numeric ID; `view` |\n| `gyg_get_tour_options` | Bookable options of a tour (ticket types, times), optionally within a date range |\n| `gyg_get_tour_availability` | Booking availability of a tour: participant categories, addons, available dates |\n| `gyg_get_tour_reviews` | Customer reviews for a tour |\n| `gyg_list_categories` | Activity categories (IDs feed `gyg_search_tours` / `gyg_list_category_tours`) |\n| `gyg_list_category_tours` | Tours in one category; `view` |\n| `gyg_get_location` | Details for a location (city, POI, region) by ID |\n| `gyg_list_location_tours` | Tours available at one location; `view` |\n| `gyg_healthcheck` | Verify credentials and upstream reachability; reports failures as data, not exceptions |\n\n### `view` — response shape\n\nThe tools marked `view` above take `view: \"compact\" | \"full\"`, and **`compact` is\nthe default**. An efficiency that has to be asked for is one that usually is not,\nso it is not opt-in — the old `compact: true` flag on `gyg_search_tours` is gone.\n\n- **`compact`** — on the three tour LISTINGS it returns the documented slim\n  projection (`tour_id`, `title`, `abstract`, `url`, `price`, `overall_rating`,\n  `number_of_ratings`, `durations`, `categories`, `locations`), flattened to\n  `{ _metadata, tours }`. On `gyg_get_tour` — one record, no listing envelope to\n  project — it instead strips image URLs and keeps everything else.\n- **`full`** — GetYourGuide's whole validated record, untouched.\n\nReach for `full` when you need a field the projection does not carry (picture\nvariants, coordinates, marketing copy). Every response is minified JSON either\nway: formatting whitespace is dropped, whitespace inside a value is not.\n\n## Setup\n\nYou need a **GetYourGuide Partner API key** — join the (free) partner program\nat [partner.getyourguide.com](https://partner.getyourguide.com) and copy the\nAPI key from your dashboard. The key is sent as the `X-ACCESS-TOKEN` header on\nevery request.\n\n### Claude Code / any MCP host\n\n```json\n{\n  \"mcpServers\": {\n    \"getyourguide\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"getyourguide-mcp\"],\n      \"env\": {\n        \"GYG_API_KEY\": \"your-partner-api-key\"\n      }\n    }\n  }\n}\n```\n\nThe server also boots with **no** key set (so hosts can probe `tools/list` at\ninstall time); the first tool call then returns an actionable error telling\nyou which env var to set.\n\n### Environment variables\n\n| Variable | Required | Meaning |\n| --- | --- | --- |\n| `GYG_API_KEY` | yes (for tool calls) | Partner API key, sent as `X-ACCESS-TOKEN` |\n| `GYG_CURRENCY` | no | Default currency for prices (ISO 4217; falls back to `USD` — the API requires one); per-call `currency` args override |\n| `GYG_LANGUAGE` | no | Default content language (falls back to `en` — the API requires one); per-call `language` args override |\n| `GYG_BASE_URL` | no | API base URL (default `https://api.getyourguide.com/1`) |\n| `GYG_REQUEST_TIMEOUT_MS` | no | Per-request timeout (default 30000) |\n\nFor local development, put them in a `.env` next to the server (gitignored;\nsee `.env.example`).\n\n## Behavior notes\n\n- **Rate limits:** one automatic retry on `429`/`503` honoring `Retry-After`\n  (capped at 10s). If it still fails, the error tells you to back off.\n- **Auth errors:** a `401`/`403` names both possible causes — a wrong key, or\n  a key whose partner tier doesn't cover that endpoint.\n- **API drift:** responses are validated leniently. On an unexpected shape the\n  server logs a precise warning to stderr and returns the raw response rather\n  than breaking; search tools also accept `extraParams` to pass raw query\n  params through verbatim. See `docs/GETYOURGUIDE-API.md` — routes and\n  request shapes are live-verified against the API and its official OpenAPI\n  spec; real 200 bodies still need pinning from a keyed capture.\n- **Secrets:** upstream error bodies are redacted then truncated before they\n  reach a tool result; the API key is never echoed.\n\n## Development\n\n```bash\nnpm install\nnpm run build          # tsc + esbuild bundle → dist/\nnpm test               # tsc typecheck + vitest (no network — everything mocked)\nnpm run test:coverage  # tsc typecheck + the CI gate: 100% lines/branches/functions/statements\n```\n\nReleases are automated with release-please; don't hand-bump versions. PR\ntitles must be conventional commits (`feat:`, `fix:`, …) because the repo\nsquash-merges.\n\n## License\n\nMIT\n",
  "bytes": 5183,
  "sha": "3d431a4cbf199e8c67e98bf3205a46d593fbb12c4d120b86184fd4f5c59b1000",
  "repo_slug": "chrischall/getyourguide-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_chrischall_getyourguide_mcp_9abf8966/readme"
}