{"id":"cb60e9f1-7239-445f-a917-024bcd6471bd","entityType":"agent","slug":"clawhub-chrischall-viator-mcp","name":"viator-mcp","canonicalUrl":"https://www.xpersona.co/agent/clawhub-chrischall-viator-mcp","canonicalPath":"/agent/clawhub-chrischall-viator-mcp","generatedAt":"2026-10-10T10:44:42.359Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T04:46:57.633Z","emptyReason":null},"description":"Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.7K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:viator-mcp","sourceUrl":"https://clawhub.ai/chrischall/viator-mcp","homepage":"https://clawhub.ai/chrischall/skills/viator-mcp","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/chrischall/viator-mcp","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/chrischall/skills/viator-mcp","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"viator-mcp technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T04:46:57.633Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T04:46:57.633Z","emptyReason":null},"stars":null,"forks":null,"downloads":1673,"packageName":null,"latestVersion":"2.1.8","tractionLabel":"1.7K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T04:46:57.632Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T04:46:57.633Z","lastCrawledAt":"2026-10-10T04:46:57.632Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T04:46:57.632Z","lastVerifiedAt":null,"highlights":[{"version":"2.1.8","createdAt":"2026-10-09T23:27:21.898Z","changelog":"- Removed the file skill-card.md. - Updated documentation in SKILL.md to clarify that on response shape fallback, a raw, media-stripped response is returned rather than an empty one. - No changes to workflow, setup, or functionality.","fileCount":3,"zipByteSize":3821},{"version":"2.1.7","createdAt":"2026-10-07T13:41:36.707Z","changelog":"- Removed the sample skill card file (skill-card.md). - No changes to code or user-facing functionality.","fileCount":3,"zipByteSize":3835},{"version":"2.1.6","createdAt":"2026-10-05T02:51:50.510Z","changelog":"- Removed the file: skill-card.md. - No other code or logic changes in this version.","fileCount":3,"zipByteSize":3833},{"version":"2.1.5","createdAt":"2026-10-03T01:46:14.030Z","changelog":"- Removed the file: skill-card.md. - No changes to core functionality or documentation within SKILL.md.","fileCount":3,"zipByteSize":3733},{"version":"2.1.4","createdAt":"2026-09-30T16:58:21.421Z","changelog":"- Removed the file: `skill-card.md` - No changes to code or functionality; only documentation cleanup.","fileCount":3,"zipByteSize":3767},{"version":"2.1.3","createdAt":"2026-09-25T15:55:52.286Z","changelog":"- Removed the file: skill-card.md - No other code or behavior changes in this version.","fileCount":3,"zipByteSize":3915},{"version":"2.1.2","createdAt":"2026-09-23T21:41:28.726Z","changelog":"- Removed the file: skill-card.md. - No changes to functionality or setup.","fileCount":3,"zipByteSize":3973},{"version":"2.1.1","createdAt":"2026-09-23T15:41:46.009Z","changelog":"- Removed the file skill-card.md. - No changes to core logic or functionality. - Documentation and usage remain unchanged.","fileCount":3,"zipByteSize":3919}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:viator-mcp","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:viator-mcp` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/chrischall/viator-mcp before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-viator-mcp/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-viator-mcp/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-viator-mcp/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-viator-mcp/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-viator-mcp/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-viator-mcp/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:44:42.357Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-viator-mcp/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-viator-mcp/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-viator-mcp/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-viator-mcp/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T04:46:57.633Z","emptyReason":null},"readme":"Skill: viator-mcp\n\nOwner: chrischall\n\nSummary: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).\n\nTags: latest:2.1.8\n\nVersion history:\n\nv2.1.8 | 2026-10-09T23:27:21.898Z | auto\n\n- Removed the file skill-card.md.\n- Updated documentation in SKILL.md to clarify that on response shape fallback, a raw, media-stripped response is returned rather than an empty one.\n- No changes to workflow, setup, or functionality.\n\nv2.1.7 | 2026-10-07T13:41:36.707Z | auto\n\n- Removed the sample skill card file (skill-card.md).\n- No changes to code or user-facing functionality.\n\nv2.1.6 | 2026-10-05T02:51:50.510Z | auto\n\n- Removed the file: skill-card.md.\n- No other code or logic changes in this version.\n\nv2.1.5 | 2026-10-03T01:46:14.030Z | auto\n\n- Removed the file: skill-card.md.\n- No changes to core functionality or documentation within SKILL.md.\n\nv2.1.4 | 2026-09-30T16:58:21.421Z | auto\n\n- Removed the file: `skill-card.md`\n- No changes to code or functionality; only documentation cleanup.\n\nv2.1.3 | 2026-09-25T15:55:52.286Z | auto\n\n- Removed the file: skill-card.md\n- No other code or behavior changes in this version.\n\nv2.1.2 | 2026-09-23T21:41:28.726Z | auto\n\n- Removed the file: skill-card.md.\n- No changes to functionality or setup.\n\nv2.1.1 | 2026-09-23T15:41:46.009Z | auto\n\n- Removed the file skill-card.md.\n- No changes to core logic or functionality.\n- Documentation and usage remain unchanged.\n\nv2.1.0 | 2026-09-20T02:53:42.894Z | auto\n\n- Removed the sample file skill-card.md.\n- No functional or user-facing changes; this is a cleanup of documentation files only.\n\nv2.0.0 | 2026-09-19T11:19:27.486Z | auto\n\n- Removed the outdated file skill-card.md.\n- No functional or behavioral changes to the skill itself.\n- Documentation and setup instructions remain as before.\n\nv1.2.3 | 2026-09-14T14:12:29.434Z | auto\n\n- Removed the sample file skill-card.md.\n- No user-facing functionality or documentation changes.\n\nv1.2.2 | 2026-09-10T17:51:42.200Z | auto\n\n- Removed the file: skill-card.md.\n- No changes to code or documentation content.  \n- No user-facing functionality impact.\n\nv1.2.1 | 2026-09-05T00:51:18.686Z | auto\n\n- Changed documentation to clarify that all read tools now accept a view (\"compact\" or \"full\"), with \"compact\" as the default.\n- Detailed how \"compact\" projections differ by tool, especially for product search functions.\n- Noted that the previous opt-in compact flag is now replaced by the default \"view\" parameter.\n- Removed redundant references to the deprecated compact option in instructions.\n- Removed the skill-card.md file.\n\nv1.2.0 | 2026-09-04T22:23:27.871Z | auto\n\n- Removed the sample file skill-card.md.  \n- No changes to the functionality, configuration, or documentation of the skill itself.\n\nv1.1.0 | 2026-09-02T00:17:08.040Z | auto\n\n- Added a new health check tool (`vt_healthcheck`) to verify connector and API key status.\n- Updated documentation to include the new health check tool in the Tools table and usage guidance.\n- Removed `skill-card.md` file.\n\nv1.0.6 | 2026-08-28T21:07:35.598Z | auto\n\n- Removed the skill-card.md file.\n- No changes to functionality or documentation aside from file removal.\n\nv1.0.5 | 2026-07-27T21:15:37.252Z | auto\n\n- Removed the file: skill-card.md.\n- No changes to functionality or documentation content; housekeeping update only.\n\nv1.0.4 | 2026-07-27T02:56:25.583Z | auto\n\n- Removed the sample file skill-card.md.\n- No changes to skill functionality or documentation.\n\nv1.0.3 | 2026-07-14T10:41:04.783Z | auto\n\n- Removed the sample file skill-card.md.\n- No functional changes to skill logic or documentation.\n\nv1.0.2 | 2026-07-07T23:41:50.536Z | auto\n\n- No file changes detected in this release.\n- Version updated to 1.0.2 with no functional or documentation modifications.\n\nv1.0.1 | 2026-07-06T06:28:17.716Z | auto\n\nVersion 1.0.1 of viator-mcp is a maintenance release with no detected file changes.\n\n- No changes to features, code, or documentation.\n- All existing setup, usage instructions, and functionality are unchanged.\n\nv1.0.0 | 2026-07-05T22:37:54.086Z | auto\n\nInitial release of viator-mcp.\n\n- Search and browse 300,000+ Viator tours, activities, and experiences via MCP.\n- Retrieve product details, real-time availability, and pricing (with currency conversion).\n- Explore attractions and destinations, with landmark-based product mapping.\n- Requires Viator Partner API (Basic Access affiliate tier) and MCP server registration.\n- Read-only: searches and lookups only; booking is not supported.\n- Offers usage guidance, setup instructions, and workflow examples.\n\nArchive index:\n\nArchive v2.1.8: 3 files, 3821 bytes\n\nFiles: skill-card.md (1855b), SKILL.md (5417b), _meta.json (129b)\n\nFile v2.1.8:SKILL.md\n\n---\nname: viator-mcp\ndescription: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).\n---\n\n# viator-mcp\n\nMCP server for the **Viator Partner API** (v2, Basic Access affiliate tier) — search the\nViator catalog of 300k+ tours, activities and experiences, get product details, availability\nschedules and pricing, browse attractions and destinations, all over stdio. Read-only: this\ntier cannot make bookings; every product result carries a `productUrl` for booking on viator.com.\n\n- **npm:** [npmjs.com/package/@chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- **Source:** [github.com/chrischall/viator-mcp](https://github.com/chrischall/viator-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}\n```\n\nGet a key by signing up as a Viator affiliate at\n[partnerresources.viator.com](https://partnerresources.viator.com/) — the Basic Access tier is free.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build\n```\n\nThen point `.mcp.json` at `dist/index.js` with `VIATOR_API_KEY` in `env`.\n\n## Workflow\n\n1. **Find the destination id** — `vt_search_freetext` with `search_types: [\"DESTINATIONS\"]`\n   (or `vt_list_destinations` for the full taxonomy).\n2. **Search products** — `vt_search_products` with the destination id plus filters\n   (price, dates, rating, duration, tags via `vt_list_product_tags`, flags like\n   `FREE_CANCELLATION`). Results are already slim while browsing — see\n   [Response shape](#response-shape).\n3. **Drill in** — `vt_get_product` for full details; `vt_get_availability_schedule` for\n   seasons/start times/pricing (supplier currency — convert with `vt_get_exchange_rates`).\n4. **Attractions** — `vt_search_attractions` / `vt_get_attraction` for landmark-centric\n   browsing; each attraction lists its mapped product codes.\n\n## Tools\n\n| Area | Tools |\n| --- | --- |\n| Products | `vt_search_products`, `vt_get_product`, `vt_list_product_tags` |\n| Search | `vt_search_freetext` |\n| Attractions | `vt_search_attractions`, `vt_get_attraction` |\n| Availability | `vt_get_availability_schedule` |\n| Reference | `vt_list_destinations`, `vt_get_locations`, `vt_get_exchange_rates` |\n| Health | `vt_healthcheck` — is this connector working? Reports whether VIATOR_API_KEY resolved, whether Viator accepted it, and what to fix. Start here when another tool fails: an empty result can mean \"no products\" or \"never authenticated\". |\n\n## Response shape\n\nEvery read tool — all ten of them — takes `view: \"compact\" | \"full\"`, and\n**`compact` is the default**, so the smaller payload is what you get without\nasking for it. Pass `view: \"full\"` for Viator's untouched record.\n\nWhat `compact` *does* differs by tool, because only two of them have a field\nprojection written against Viator's documented shapes:\n\n- `vt_search_products` and `vt_search_freetext` project each ProductSummary down\n  to its product code, title, from-price and currency, rating, review count,\n  duration, confirmation type, flags, booking URL and cover image — and nothing\n  else. (`vt_search_freetext` projects only its PRODUCTS block; its attraction\n  and destination results are media-stripped instead.) If Viator's shape drifts,\n  the projection falls back to the raw response, media-stripped, rather than\n  emitting an empty one.\n- The other eight — `vt_get_product`, `vt_list_product_tags`,\n  `vt_search_attractions`, `vt_get_attraction`, `vt_get_availability_schedule`,\n  `vt_list_destinations`, `vt_get_locations` and `vt_get_exchange_rates` — strip\n  image and avatar URLs and do nothing else. Every other field comes back as\n  Viator sent it.\n\n`vt_healthcheck` takes no `view`: it reports a verdict it assembles itself, not\na Viator payload, and a rung that cannot change anything is worse than no\nparameter.\n\n(This replaced an opt-in `compact: true` flag. Passing `compact` now does\nnothing — zod drops the unknown key and you get the compact rung regardless,\nwhich is what the flag used to ask for.)\n\n## Notes\n\n- Prices from `vt_search_products`/`vt_search_freetext` are in the requested `currency`;\n  prices from `vt_get_availability_schedule` are in the **supplier's** currency.\n- Viator rate-limits per endpoint on a rolling 10s window; the server caches identical\n  reads (`VIATOR_CACHE_TTL`, default 60s) and retries once honoring `Retry-After`.\n- Booking URLs (`productUrl`, `attractionUrl`) must be used verbatim for affiliate\n  attribution; pass `campaign_value` to tag them.\n\nFile v2.1.8:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"viator-mcp\",\n  \"version\": \"2.1.8\",\n  \"publishedAt\": 1791588441898\n}\n\nFile v2.1.8:skill-card.md\n\n## Description:\n\nHelps agents search Viator tours and attractions, check product details and availability, and convert supplier-currency prices without making bookings.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nTravel-planning agents and their users can discover Viator experiences, compare details and prices, and check availability before visiting Viator to book.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requires a third-party MCP package and a Viator Partner API key.\n\nMitigation: Verify that you trust the package before installation and use a key you are comfortable placing in MCP environment configuration.\n\nRisk: Tour details and prices are retrieved from Viator, and bookings are not performed by this skill.\n\nMitigation: Confirm current availability and pricing with Viator before booking through the provided product link.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/chrischall/skills/viator-mcp)\n- [viator-mcp npm package](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- [Viator Partner resources](https://partnerresources.viator.com/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Guidance]\n\n**Output Format:** [Markdown]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Search and availability information may include prices and booking links; the skill does not make bookings.]\n\n## Skill Version(s):\n\n2.1.8 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.1.7: 3 files, 3835 bytes\n\nFiles: skill-card.md (1953b), SKILL.md (5400b), _meta.json (129b)\n\nFile v2.1.7:SKILL.md\n\n---\nname: viator-mcp\ndescription: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).\n---\n\n# viator-mcp\n\nMCP server for the **Viator Partner API** (v2, Basic Access affiliate tier) — search the\nViator catalog of 300k+ tours, activities and experiences, get product details, availability\nschedules and pricing, browse attractions and destinations, all over stdio. Read-only: this\ntier cannot make bookings; every product result carries a `productUrl` for booking on viator.com.\n\n- **npm:** [npmjs.com/package/@chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- **Source:** [github.com/chrischall/viator-mcp](https://github.com/chrischall/viator-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}\n```\n\nGet a key by signing up as a Viator affiliate at\n[partnerresources.viator.com](https://partnerresources.viator.com/) — the Basic Access tier is free.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build\n```\n\nThen point `.mcp.json` at `dist/index.js` with `VIATOR_API_KEY` in `env`.\n\n## Workflow\n\n1. **Find the destination id** — `vt_search_freetext` with `search_types: [\"DESTINATIONS\"]`\n   (or `vt_list_destinations` for the full taxonomy).\n2. **Search products** — `vt_search_products` with the destination id plus filters\n   (price, dates, rating, duration, tags via `vt_list_product_tags`, flags like\n   `FREE_CANCELLATION`). Results are already slim while browsing — see\n   [Response shape](#response-shape).\n3. **Drill in** — `vt_get_product` for full details; `vt_get_availability_schedule` for\n   seasons/start times/pricing (supplier currency — convert with `vt_get_exchange_rates`).\n4. **Attractions** — `vt_search_attractions` / `vt_get_attraction` for landmark-centric\n   browsing; each attraction lists its mapped product codes.\n\n## Tools\n\n| Area | Tools |\n| --- | --- |\n| Products | `vt_search_products`, `vt_get_product`, `vt_list_product_tags` |\n| Search | `vt_search_freetext` |\n| Attractions | `vt_search_attractions`, `vt_get_attraction` |\n| Availability | `vt_get_availability_schedule` |\n| Reference | `vt_list_destinations`, `vt_get_locations`, `vt_get_exchange_rates` |\n| Health | `vt_healthcheck` — is this connector working? Reports whether VIATOR_API_KEY resolved, whether Viator accepted it, and what to fix. Start here when another tool fails: an empty result can mean \"no products\" or \"never authenticated\". |\n\n## Response shape\n\nEvery read tool — all ten of them — takes `view: \"compact\" | \"full\"`, and\n**`compact` is the default**, so the smaller payload is what you get without\nasking for it. Pass `view: \"full\"` for Viator's untouched record.\n\nWhat `compact` *does* differs by tool, because only two of them have a field\nprojection written against Viator's documented shapes:\n\n- `vt_search_products` and `vt_search_freetext` project each ProductSummary down\n  to its product code, title, from-price and currency, rating, review count,\n  duration, confirmation type, flags, booking URL and cover image — and nothing\n  else. (`vt_search_freetext` projects only its PRODUCTS block; its attraction\n  and destination results are media-stripped instead.) If Viator's shape drifts,\n  the projection falls back to the raw response rather than emitting an empty\n  one.\n- The other eight — `vt_get_product`, `vt_list_product_tags`,\n  `vt_search_attractions`, `vt_get_attraction`, `vt_get_availability_schedule`,\n  `vt_list_destinations`, `vt_get_locations` and `vt_get_exchange_rates` — strip\n  image and avatar URLs and do nothing else. Every other field comes back as\n  Viator sent it.\n\n`vt_healthcheck` takes no `view`: it reports a verdict it assembles itself, not\na Viator payload, and a rung that cannot change anything is worse than no\nparameter.\n\n(This replaced an opt-in `compact: true` flag. Passing `compact` now does\nnothing — zod drops the unknown key and you get the compact rung regardless,\nwhich is what the flag used to ask for.)\n\n## Notes\n\n- Prices from `vt_search_products`/`vt_search_freetext` are in the requested `currency`;\n  prices from `vt_get_availability_schedule` are in the **supplier's** currency.\n- Viator rate-limits per endpoint on a rolling 10s window; the server caches identical\n  reads (`VIATOR_CACHE_TTL`, default 60s) and retries once honoring `Retry-After`.\n- Booking URLs (`productUrl`, `attractionUrl`) must be used verbatim for affiliate\n  attribution; pass `campaign_value` to tag them.\n\nFile v2.1.7:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"viator-mcp\",\n  \"version\": \"2.1.7\",\n  \"publishedAt\": 1791380496707\n}\n\nFile v2.1.7:skill-card.md\n\n## Description:\n\nHelps agents search Viator tours and activities, compare product details and pricing, and check availability without making bookings.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nTravel planners and agents use this skill to find Viator experiences, compare product details and prices, and check availability before directing travelers to Viator to book.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing the third-party connector requires trusting its package or source.\n\nMitigation: Verify the publisher and review the package or source before installing.\n\nRisk: The Viator Partner API key is placed in MCP environment configuration.\n\nMitigation: Keep the key in a protected configuration and do not commit it to a repository.\n\nRisk: Availability prices use the supplier's currency and may differ from search prices.\n\nMitigation: Check currencies and current availability before quoting a price or sending a traveler to Viator to book.\n\n## Reference(s):\n\n- [Viator MCP on ClawHub](https://clawhub.ai/chrischall/skills/viator-mcp)\n- [Viator MCP npm package](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- [Viator Partner Resources](https://partnerresources.viator.com/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Guidance]\n\n**Output Format:** [Markdown]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-only tour recommendations, product details, prices, availability and links to book on Viator.]\n\n## Skill Version(s):\n\n2.1.7 (source: server-resolved release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.1.6: 3 files, 3833 bytes\n\nFiles: skill-card.md (1889b), SKILL.md (5400b), _meta.json (129b)\n\nFile v2.1.6:SKILL.md\n\n---\nname: viator-mcp\ndescription: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).\n---\n\n# viator-mcp\n\nMCP server for the **Viator Partner API** (v2, Basic Access affiliate tier) — search the\nViator catalog of 300k+ tours, activities and experiences, get product details, availability\nschedules and pricing, browse attractions and destinations, all over stdio. Read-only: this\ntier cannot make bookings; every product result carries a `productUrl` for booking on viator.com.\n\n- **npm:** [npmjs.com/package/@chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- **Source:** [github.com/chrischall/viator-mcp](https://github.com/chrischall/viator-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}\n```\n\nGet a key by signing up as a Viator affiliate at\n[partnerresources.viator.com](https://partnerresources.viator.com/) — the Basic Access tier is free.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build\n```\n\nThen point `.mcp.json` at `dist/index.js` with `VIATOR_API_KEY` in `env`.\n\n## Workflow\n\n1. **Find the destination id** — `vt_search_freetext` with `search_types: [\"DESTINATIONS\"]`\n   (or `vt_list_destinations` for the full taxonomy).\n2. **Search products** — `vt_search_products` with the destination id plus filters\n   (price, dates, rating, duration, tags via `vt_list_product_tags`, flags like\n   `FREE_CANCELLATION`). Results are already slim while browsing — see\n   [Response shape](#response-shape).\n3. **Drill in** — `vt_get_product` for full details; `vt_get_availability_schedule` for\n   seasons/start times/pricing (supplier currency — convert with `vt_get_exchange_rates`).\n4. **Attractions** — `vt_search_attractions` / `vt_get_attraction` for landmark-centric\n   browsing; each attraction lists its mapped product codes.\n\n## Tools\n\n| Area | Tools |\n| --- | --- |\n| Products | `vt_search_products`, `vt_get_product`, `vt_list_product_tags` |\n| Search | `vt_search_freetext` |\n| Attractions | `vt_search_attractions`, `vt_get_attraction` |\n| Availability | `vt_get_availability_schedule` |\n| Reference | `vt_list_destinations`, `vt_get_locations`, `vt_get_exchange_rates` |\n| Health | `vt_healthcheck` — is this connector working? Reports whether VIATOR_API_KEY resolved, whether Viator accepted it, and what to fix. Start here when another tool fails: an empty result can mean \"no products\" or \"never authenticated\". |\n\n## Response shape\n\nEvery read tool — all ten of them — takes `view: \"compact\" | \"full\"`, and\n**`compact` is the default**, so the smaller payload is what you get without\nasking for it. Pass `view: \"full\"` for Viator's untouched record.\n\nWhat `compact` *does* differs by tool, because only two of them have a field\nprojection written against Viator's documented shapes:\n\n- `vt_search_products` and `vt_search_freetext` project each ProductSummary down\n  to its product code, title, from-price and currency, rating, review count,\n  duration, confirmation type, flags, booking URL and cover image — and nothing\n  else. (`vt_search_freetext` projects only its PRODUCTS block; its attraction\n  and destination results are media-stripped instead.) If Viator's shape drifts,\n  the projection falls back to the raw response rather than emitting an empty\n  one.\n- The other eight — `vt_get_product`, `vt_list_product_tags`,\n  `vt_search_attractions`, `vt_get_attraction`, `vt_get_availability_schedule`,\n  `vt_list_destinations`, `vt_get_locations` and `vt_get_exchange_rates` — strip\n  image and avatar URLs and do nothing else. Every other field comes back as\n  Viator sent it.\n\n`vt_healthcheck` takes no `view`: it reports a verdict it assembles itself, not\na Viator payload, and a rung that cannot change anything is worse than no\nparameter.\n\n(This replaced an opt-in `compact: true` flag. Passing `compact` now does\nnothing — zod drops the unknown key and you get the compact rung regardless,\nwhich is what the flag used to ask for.)\n\n## Notes\n\n- Prices from `vt_search_products`/`vt_search_freetext` are in the requested `currency`;\n  prices from `vt_get_availability_schedule` are in the **supplier's** currency.\n- Viator rate-limits per endpoint on a rolling 10s window; the server caches identical\n  reads (`VIATOR_CACHE_TTL`, default 60s) and retries once honoring `Retry-After`.\n- Booking URLs (`productUrl`, `attractionUrl`) must be used verbatim for affiliate\n  attribution; pass `campaign_value` to tag them.\n\nFile v2.1.6:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"viator-mcp\",\n  \"version\": \"2.1.6\",\n  \"publishedAt\": 1791168710510\n}\n\nFile v2.1.6:skill-card.md\n\n## Description:\n\nHelps agents search Viator tours, attractions, pricing, and availability without making bookings.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nTravel planners and their agents use this skill to find Viator experiences, compare product details and availability, browse attractions, and check prices. Bookings take place through Viator product links outside the skill.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing an untrusted connector package or exposing a Viator API key.\n\nMitigation: Confirm you trust the referenced package before installation and use a Viator Partner API key intended for this connector.\n\nRisk: Treating search results as confirmed bookings or supplier-currency prices as converted prices.\n\nMitigation: Book only through Viator product URLs and clearly label prices; convert supplier-currency availability quotes when needed.\n\n## Reference(s):\n\n- [ClawHub viator-mcp release](https://clawhub.ai/chrischall/skills/viator-mcp)\n- [viator-mcp npm package](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- [Viator Partner Resources](https://partnerresources.viator.com/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Guidance]\n\n**Output Format:** [Markdown]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Tour and attraction details may include prices, availability, and product URLs; booking is not supported.]\n\n## Skill Version(s):\n\n2.1.6 (source: server-resolved release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.1.5: 3 files, 3733 bytes\n\nFiles: skill-card.md (1665b), SKILL.md (5400b), _meta.json (129b)\n\nFile v2.1.5:SKILL.md\n\n---\nname: viator-mcp\ndescription: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).\n---\n\n# viator-mcp\n\nMCP server for the **Viator Partner API** (v2, Basic Access affiliate tier) — search the\nViator catalog of 300k+ tours, activities and experiences, get product details, availability\nschedules and pricing, browse attractions and destinations, all over stdio. Read-only: this\ntier cannot make bookings; every product result carries a `productUrl` for booking on viator.com.\n\n- **npm:** [npmjs.com/package/@chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- **Source:** [github.com/chrischall/viator-mcp](https://github.com/chrischall/viator-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}\n```\n\nGet a key by signing up as a Viator affiliate at\n[partnerresources.viator.com](https://partnerresources.viator.com/) — the Basic Access tier is free.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build\n```\n\nThen point `.mcp.json` at `dist/index.js` with `VIATOR_API_KEY` in `env`.\n\n## Workflow\n\n1. **Find the destination id** — `vt_search_freetext` with `search_types: [\"DESTINATIONS\"]`\n   (or `vt_list_destinations` for the full taxonomy).\n2. **Search products** — `vt_search_products` with the destination id plus filters\n   (price, dates, rating, duration, tags via `vt_list_product_tags`, flags like\n   `FREE_CANCELLATION`). Results are already slim while browsing — see\n   [Response shape](#response-shape).\n3. **Drill in** — `vt_get_product` for full details; `vt_get_availability_schedule` for\n   seasons/start times/pricing (supplier currency — convert with `vt_get_exchange_rates`).\n4. **Attractions** — `vt_search_attractions` / `vt_get_attraction` for landmark-centric\n   browsing; each attraction lists its mapped product codes.\n\n## Tools\n\n| Area | Tools |\n| --- | --- |\n| Products | `vt_search_products`, `vt_get_product`, `vt_list_product_tags` |\n| Search | `vt_search_freetext` |\n| Attractions | `vt_search_attractions`, `vt_get_attraction` |\n| Availability | `vt_get_availability_schedule` |\n| Reference | `vt_list_destinations`, `vt_get_locations`, `vt_get_exchange_rates` |\n| Health | `vt_healthcheck` — is this connector working? Reports whether VIATOR_API_KEY resolved, whether Viator accepted it, and what to fix. Start here when another tool fails: an empty result can mean \"no products\" or \"never authenticated\". |\n\n## Response shape\n\nEvery read tool — all ten of them — takes `view: \"compact\" | \"full\"`, and\n**`compact` is the default**, so the smaller payload is what you get without\nasking for it. Pass `view: \"full\"` for Viator's untouched record.\n\nWhat `compact` *does* differs by tool, because only two of them have a field\nprojection written against Viator's documented shapes:\n\n- `vt_search_products` and `vt_search_freetext` project each ProductSummary down\n  to its product code, title, from-price and currency, rating, review count,\n  duration, confirmation type, flags, booking URL and cover image — and nothing\n  else. (`vt_search_freetext` projects only its PRODUCTS block; its attraction\n  and destination results are media-stripped instead.) If Viator's shape drifts,\n  the projection falls back to the raw response rather than emitting an empty\n  one.\n- The other eight — `vt_get_product`, `vt_list_product_tags`,\n  `vt_search_attractions`, `vt_get_attraction`, `vt_get_availability_schedule`,\n  `vt_list_destinations`, `vt_get_locations` and `vt_get_exchange_rates` — strip\n  image and avatar URLs and do nothing else. Every other field comes back as\n  Viator sent it.\n\n`vt_healthcheck` takes no `view`: it reports a verdict it assembles itself, not\na Viator payload, and a rung that cannot change anything is worse than no\nparameter.\n\n(This replaced an opt-in `compact: true` flag. Passing `compact` now does\nnothing — zod drops the unknown key and you get the compact rung regardless,\nwhich is what the flag used to ask for.)\n\n## Notes\n\n- Prices from `vt_search_products`/`vt_search_freetext` are in the requested `currency`;\n  prices from `vt_get_availability_schedule` are in the **supplier's** currency.\n- Viator rate-limits per endpoint on a rolling 10s window; the server caches identical\n  reads (`VIATOR_CACHE_TTL`, default 60s) and retries once honoring `Retry-After`.\n- Booking URLs (`productUrl`, `attractionUrl`) must be used verbatim for affiliate\n  attribution; pass `campaign_value` to tag them.\n\nFile v2.1.5:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"viator-mcp\",\n  \"version\": \"2.1.5\",\n  \"publishedAt\": 1790991974030\n}\n\nFile v2.1.5:skill-card.md\n\n## Description:\n\nSearch Viator tours, activities, attractions, prices, and availability without booking or paying for trips.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nTravel planners and agents use this skill to find tours and attractions, check product details, prices, and availability, and share booking links for travelers to use themselves.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing an external package requires trusting its publisher.\n\nMitigation: Verify that you trust the @chrischall/viator-mcp package before installing it.\n\nRisk: A Viator Partner API key is stored in MCP configuration.\n\nMitigation: Protect the configuration and avoid sharing or publishing the API key.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/chrischall/skills/viator-mcp)\n- [Viator MCP npm package](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- [Viator Partner Resources](https://partnerresources.viator.com/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Guidance]\n\n**Output Format:** [Markdown]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-only travel search results with product links; no booking or payment.]\n\n## Skill Version(s):\n\n2.1.5 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.1.4: 3 files, 3767 bytes\n\nFiles: skill-card.md (1765b), SKILL.md (5400b), _meta.json (129b)\n\nFile v2.1.4:SKILL.md\n\n---\nname: viator-mcp\ndescription: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).\n---\n\n# viator-mcp\n\nMCP server for the **Viator Partner API** (v2, Basic Access affiliate tier) — search the\nViator catalog of 300k+ tours, activities and experiences, get product details, availability\nschedules and pricing, browse attractions and destinations, all over stdio. Read-only: this\ntier cannot make bookings; every product result carries a `productUrl` for booking on viator.com.\n\n- **npm:** [npmjs.com/package/@chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- **Source:** [github.com/chrischall/viator-mcp](https://github.com/chrischall/viator-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}\n```\n\nGet a key by signing up as a Viator affiliate at\n[partnerresources.viator.com](https://partnerresources.viator.com/) — the Basic Access tier is free.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build\n```\n\nThen point `.mcp.json` at `dist/index.js` with `VIATOR_API_KEY` in `env`.\n\n## Workflow\n\n1. **Find the destination id** — `vt_search_freetext` with `search_types: [\"DESTINATIONS\"]`\n   (or `vt_list_destinations` for the full taxonomy).\n2. **Search products** — `vt_search_products` with the destination id plus filters\n   (price, dates, rating, duration, tags via `vt_list_product_tags`, flags like\n   `FREE_CANCELLATION`). Results are already slim while browsing — see\n   [Response shape](#response-shape).\n3. **Drill in** — `vt_get_product` for full details; `vt_get_availability_schedule` for\n   seasons/start times/pricing (supplier currency — convert with `vt_get_exchange_rates`).\n4. **Attractions** — `vt_search_attractions` / `vt_get_attraction` for landmark-centric\n   browsing; each attraction lists its mapped product codes.\n\n## Tools\n\n| Area | Tools |\n| --- | --- |\n| Products | `vt_search_products`, `vt_get_product`, `vt_list_product_tags` |\n| Search | `vt_search_freetext` |\n| Attractions | `vt_search_attractions`, `vt_get_attraction` |\n| Availability | `vt_get_availability_schedule` |\n| Reference | `vt_list_destinations`, `vt_get_locations`, `vt_get_exchange_rates` |\n| Health | `vt_healthcheck` — is this connector working? Reports whether VIATOR_API_KEY resolved, whether Viator accepted it, and what to fix. Start here when another tool fails: an empty result can mean \"no products\" or \"never authenticated\". |\n\n## Response shape\n\nEvery read tool — all ten of them — takes `view: \"compact\" | \"full\"`, and\n**`compact` is the default**, so the smaller payload is what you get without\nasking for it. Pass `view: \"full\"` for Viator's untouched record.\n\nWhat `compact` *does* differs by tool, because only two of them have a field\nprojection written against Viator's documented shapes:\n\n- `vt_search_products` and `vt_search_freetext` project each ProductSummary down\n  to its product code, title, from-price and currency, rating, review count,\n  duration, confirmation type, flags, booking URL and cover image — and nothing\n  else. (`vt_search_freetext` projects only its PRODUCTS block; its attraction\n  and destination results are media-stripped instead.) If Viator's shape drifts,\n  the projection falls back to the raw response rather than emitting an empty\n  one.\n- The other eight — `vt_get_product`, `vt_list_product_tags`,\n  `vt_search_attractions`, `vt_get_attraction`, `vt_get_availability_schedule`,\n  `vt_list_destinations`, `vt_get_locations` and `vt_get_exchange_rates` — strip\n  image and avatar URLs and do nothing else. Every other field comes back as\n  Viator sent it.\n\n`vt_healthcheck` takes no `view`: it reports a verdict it assembles itself, not\na Viator payload, and a rung that cannot change anything is worse than no\nparameter.\n\n(This replaced an opt-in `compact: true` flag. Passing `compact` now does\nnothing — zod drops the unknown key and you get the compact rung regardless,\nwhich is what the flag used to ask for.)\n\n## Notes\n\n- Prices from `vt_search_products`/`vt_search_freetext` are in the requested `currency`;\n  prices from `vt_get_availability_schedule` are in the **supplier's** currency.\n- Viator rate-limits per endpoint on a rolling 10s window; the server caches identical\n  reads (`VIATOR_CACHE_TTL`, default 60s) and retries once honoring `Retry-After`.\n- Booking URLs (`productUrl`, `attractionUrl`) must be used verbatim for affiliate\n  attribution; pass `campaign_value` to tag them.\n\nFile v2.1.4:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"viator-mcp\",\n  \"version\": \"2.1.4\",\n  \"publishedAt\": 1790787501421\n}\n\nFile v2.1.4:skill-card.md\n\n## Description:\n\nHelps agents search Viator tours and attractions and check product details, prices, and availability without making bookings.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nTravel planners and their agents use this skill to find Viator activities, compare details and availability, and obtain links for booking externally.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Running the referenced npm package and storing a Viator Partner API key in MCP configuration.\n\nMitigation: Install only if you trust the package and protect the API key in your MCP configuration.\n\nRisk: Search queries are sent to Viator and bookings occur through external Viator links.\n\nMitigation: Avoid including sensitive details in searches and review the destination link before booking.\n\n## Reference(s):\n\n- [ClawHub release](https://clawhub.ai/chrischall/skills/viator-mcp)\n- [viator-mcp npm package](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- [Viator Partner resources](https://partnerresources.viator.com/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Guidance]\n\n**Output Format:** [Markdown]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Tour and attraction details, prices, availability, and external booking links; no in-skill booking.]\n\n## Skill Version(s):\n\n2.1.4 (source: server-resolved release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.1.3: 3 files, 3915 bytes\n\nFiles: skill-card.md (2034b), SKILL.md (5400b), _meta.json (129b)\n\nFile v2.1.3:SKILL.md\n\n---\nname: viator-mcp\ndescription: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).\n---\n\n# viator-mcp\n\nMCP server for the **Viator Partner API** (v2, Basic Access affiliate tier) — search the\nViator catalog of 300k+ tours, activities and experiences, get product details, availability\nschedules and pricing, browse attractions and destinations, all over stdio. Read-only: this\ntier cannot make bookings; every product result carries a `productUrl` for booking on viator.com.\n\n- **npm:** [npmjs.com/package/@chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- **Source:** [github.com/chrischall/viator-mcp](https://github.com/chrischall/viator-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}\n```\n\nGet a key by signing up as a Viator affiliate at\n[partnerresources.viator.com](https://partnerresources.viator.com/) — the Basic Access tier is free.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build\n```\n\nThen point `.mcp.json` at `dist/index.js` with `VIATOR_API_KEY` in `env`.\n\n## Workflow\n\n1. **Find the destination id** — `vt_search_freetext` with `search_types: [\"DESTINATIONS\"]`\n   (or `vt_list_destinations` for the full taxonomy).\n2. **Search products** — `vt_search_products` with the destination id plus filters\n   (price, dates, rating, duration, tags via `vt_list_product_tags`, flags like\n   `FREE_CANCELLATION`). Results are already slim while browsing — see\n   [Response shape](#response-shape).\n3. **Drill in** — `vt_get_product` for full details; `vt_get_availability_schedule` for\n   seasons/start times/pricing (supplier currency — convert with `vt_get_exchange_rates`).\n4. **Attractions** — `vt_search_attractions` / `vt_get_attraction` for landmark-centric\n   browsing; each attraction lists its mapped product codes.\n\n## Tools\n\n| Area | Tools |\n| --- | --- |\n| Products | `vt_search_products`, `vt_get_product`, `vt_list_product_tags` |\n| Search | `vt_search_freetext` |\n| Attractions | `vt_search_attractions`, `vt_get_attraction` |\n| Availability | `vt_get_availability_schedule` |\n| Reference | `vt_list_destinations`, `vt_get_locations`, `vt_get_exchange_rates` |\n| Health | `vt_healthcheck` — is this connector working? Reports whether VIATOR_API_KEY resolved, whether Viator accepted it, and what to fix. Start here when another tool fails: an empty result can mean \"no products\" or \"never authenticated\". |\n\n## Response shape\n\nEvery read tool — all ten of them — takes `view: \"compact\" | \"full\"`, and\n**`compact` is the default**, so the smaller payload is what you get without\nasking for it. Pass `view: \"full\"` for Viator's untouched record.\n\nWhat `compact` *does* differs by tool, because only two of them have a field\nprojection written against Viator's documented shapes:\n\n- `vt_search_products` and `vt_search_freetext` project each ProductSummary down\n  to its product code, title, from-price and currency, rating, review count,\n  duration, confirmation type, flags, booking URL and cover image — and nothing\n  else. (`vt_search_freetext` projects only its PRODUCTS block; its attraction\n  and destination results are media-stripped instead.) If Viator's shape drifts,\n  the projection falls back to the raw response rather than emitting an empty\n  one.\n- The other eight — `vt_get_product`, `vt_list_product_tags`,\n  `vt_search_attractions`, `vt_get_attraction`, `vt_get_availability_schedule`,\n  `vt_list_destinations`, `vt_get_locations` and `vt_get_exchange_rates` — strip\n  image and avatar URLs and do nothing else. Every other field comes back as\n  Viator sent it.\n\n`vt_healthcheck` takes no `view`: it reports a verdict it assembles itself, not\na Viator payload, and a rung that cannot change anything is worse than no\nparameter.\n\n(This replaced an opt-in `compact: true` flag. Passing `compact` now does\nnothing — zod drops the unknown key and you get the compact rung regardless,\nwhich is what the flag used to ask for.)\n\n## Notes\n\n- Prices from `vt_search_products`/`vt_search_freetext` are in the requested `currency`;\n  prices from `vt_get_availability_schedule` are in the **supplier's** currency.\n- Viator rate-limits per endpoint on a rolling 10s window; the server caches identical\n  reads (`VIATOR_CACHE_TTL`, default 60s) and retries once honoring `Retry-After`.\n- Booking URLs (`productUrl`, `attractionUrl`) must be used verbatim for affiliate\n  attribution; pass `campaign_value` to tag them.\n\nFile v2.1.3:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"viator-mcp\",\n  \"version\": \"2.1.3\",\n  \"publishedAt\": 1790351752286\n}\n\nFile v2.1.3:skill-card.md\n\n## Description:\n\nHelps agents search Viator tours and attractions, inspect product details and availability, and compare prices without making bookings.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nTravel planners and other users can find tours, activities, attractions, and availability by destination, then follow product links to book on Viator. Developers can configure the required Viator Partner API access.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing a third-party package and exposing a Viator Partner API key can compromise credentials if the setup is not trusted.\n\nMitigation: Install only when the package is intended for use, prefer project-level configuration, and treat VIATOR_API_KEY as a secret.\n\nRisk: Availability and prices may change or appear in the supplier's currency rather than the requested currency.\n\nMitigation: Check availability and currency before sharing prices, convert supplier-currency amounts where needed, and confirm details on Viator before booking.\n\n## Reference(s):\n\n- [ClawHub viator-mcp release](https://clawhub.ai/chrischall/skills/viator-mcp)\n- [viator-mcp npm package](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- [Viator Partner Resources](https://partnerresources.viator.com/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Configuration guidance]\n\n**Output Format:** [Markdown responses with product links; JSON for setup examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-only search and lookup; booking occurs on Viator.]\n\n## Skill Version(s):\n\n2.1.3 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.1.2: 3 files, 3973 bytes\n\nFiles: skill-card.md (2232b), SKILL.md (5400b), _meta.json (129b)\n\nFile v2.1.2:SKILL.md\n\n---\nname: viator-mcp\ndescription: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).\n---\n\n# viator-mcp\n\nMCP server for the **Viator Partner API** (v2, Basic Access affiliate tier) — search the\nViator catalog of 300k+ tours, activities and experiences, get product details, availability\nschedules and pricing, browse attractions and destinations, all over stdio. Read-only: this\ntier cannot make bookings; every product result carries a `productUrl` for booking on viator.com.\n\n- **npm:** [npmjs.com/package/@chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- **Source:** [github.com/chrischall/viator-mcp](https://github.com/chrischall/viator-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}\n```\n\nGet a key by signing up as a Viator affiliate at\n[partnerresources.viator.com](https://partnerresources.viator.com/) — the Basic Access tier is free.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build\n```\n\nThen point `.mcp.json` at `dist/index.js` with `VIATOR_API_KEY` in `env`.\n\n## Workflow\n\n1. **Find the destination id** — `vt_search_freetext` with `search_types: [\"DESTINATIONS\"]`\n   (or `vt_list_destinations` for the full taxonomy).\n2. **Search products** — `vt_search_products` with the destination id plus filters\n   (price, dates, rating, duration, tags via `vt_list_product_tags`, flags like\n   `FREE_CANCELLATION`). Results are already slim while browsing — see\n   [Response shape](#response-shape).\n3. **Drill in** — `vt_get_product` for full details; `vt_get_availability_schedule` for\n   seasons/start times/pricing (supplier currency — convert with `vt_get_exchange_rates`).\n4. **Attractions** — `vt_search_attractions` / `vt_get_attraction` for landmark-centric\n   browsing; each attraction lists its mapped product codes.\n\n## Tools\n\n| Area | Tools |\n| --- | --- |\n| Products | `vt_search_products`, `vt_get_product`, `vt_list_product_tags` |\n| Search | `vt_search_freetext` |\n| Attractions | `vt_search_attractions`, `vt_get_attraction` |\n| Availability | `vt_get_availability_schedule` |\n| Reference | `vt_list_destinations`, `vt_get_locations`, `vt_get_exchange_rates` |\n| Health | `vt_healthcheck` — is this connector working? Reports whether VIATOR_API_KEY resolved, whether Viator accepted it, and what to fix. Start here when another tool fails: an empty result can mean \"no products\" or \"never authenticated\". |\n\n## Response shape\n\nEvery read tool — all ten of them — takes `view: \"compact\" | \"full\"`, and\n**`compact` is the default**, so the smaller payload is what you get without\nasking for it. Pass `view: \"full\"` for Viator's untouched record.\n\nWhat `compact` *does* differs by tool, because only two of them have a field\nprojection written against Viator's documented shapes:\n\n- `vt_search_products` and `vt_search_freetext` project each ProductSummary down\n  to its product code, title, from-price and currency, rating, review count,\n  duration, confirmation type, flags, booking URL and cover image — and nothing\n  else. (`vt_search_freetext` projects only its PRODUCTS block; its attraction\n  and destination results are media-stripped instead.) If Viator's shape drifts,\n  the projection falls back to the raw response rather than emitting an empty\n  one.\n- The other eight — `vt_get_product`, `vt_list_product_tags`,\n  `vt_search_attractions`, `vt_get_attraction`, `vt_get_availability_schedule`,\n  `vt_list_destinations`, `vt_get_locations` and `vt_get_exchange_rates` — strip\n  image and avatar URLs and do nothing else. Every other field comes back as\n  Viator sent it.\n\n`vt_healthcheck` takes no `view`: it reports a verdict it assembles itself, not\na Viator payload, and a rung that cannot change anything is worse than no\nparameter.\n\n(This replaced an opt-in `compact: true` flag. Passing `compact` now does\nnothing — zod drops the unknown key and you get the compact rung regardless,\nwhich is what the flag used to ask for.)\n\n## Notes\n\n- Prices from `vt_search_products`/`vt_search_freetext` are in the requested `currency`;\n  prices from `vt_get_availability_schedule` are in the **supplier's** currency.\n- Viator rate-limits per endpoint on a rolling 10s window; the server caches identical\n  reads (`VIATOR_CACHE_TTL`, default 60s) and retries once honoring `Retry-After`.\n- Booking URLs (`productUrl`, `attractionUrl`) must be used verbatim for affiliate\n  attribution; pass `campaign_value` to tag them.\n\nFile v2.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"viator-mcp\",\n  \"version\": \"2.1.2\",\n  \"publishedAt\": 1790199688726\n}\n\nFile v2.1.2:skill-card.md\n\n## Description:\n\nSearches Viator tours, activities, attractions, availability, pricing, and supplier-currency exchange rates through a read-only MCP connector.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to configure and use a Viator MCP server for read-only travel discovery, including tour search, product details, availability, pricing, attractions, destinations, and exchange rates.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill registers and uses a third-party Viator MCP connector that sends travel search queries to Viator.\n\nMitigation: Install only when that connector is intended for the agent, and verify the external @chrischall/viator-mcp package or source before relying on it.\n\nRisk: The connector requires a VIATOR_API_KEY for Viator Partner API access.\n\nMitigation: Keep VIATOR_API_KEY out of committed project files and provide it through the MCP server environment.\n\nRisk: Search results, prices, availability, and booking links come from an external travel API and may change.\n\nMitigation: Treat returned travel information as current external API data and use Viator product URLs for booking and affiliate attribution.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/chrischall/skills/viator-mcp)\n- [npm package @chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- [Viator Partner Resources](https://partnerresources.viator.com/)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Configuration, Shell commands]\n\n**Output Format:** [Markdown with JSON and bash code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guidance centers on read-only MCP tool use and handling external Viator API responses.]\n\n## Skill Version(s):\n\n2.1.2 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.1.1: 3 files, 3919 bytes\n\nFiles: skill-card.md (2146b), SKILL.md (5400b), _meta.json (129b)\n\nFile v2.1.1:SKILL.md\n\n---\nname: viator-mcp\ndescription: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).\n---\n\n# viator-mcp\n\nMCP server for the **Viator Partner API** (v2, Basic Access affiliate tier) — search the\nViator catalog of 300k+ tours, activities and experiences, get product details, availability\nschedules and pricing, browse attractions and destinations, all over stdio. Read-only: this\ntier cannot make bookings; every product result carries a `productUrl` for booking on viator.com.\n\n- **npm:** [npmjs.com/package/@chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- **Source:** [github.com/chrischall/viator-mcp](https://github.com/chrischall/viator-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}\n```\n\nGet a key by signing up as a Viator affiliate at\n[partnerresources.viator.com](https://partnerresources.viator.com/) — the Basic Access tier is free.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build\n```\n\nThen point `.mcp.json` at `dist/index.js` with `VIATOR_API_KEY` in `env`.\n\n## Workflow\n\n1. **Find the destination id** — `vt_search_freetext` with `search_types: [\"DESTINATIONS\"]`\n   (or `vt_list_destinations` for the full taxonomy).\n2. **Search products** — `vt_search_products` with the destination id plus filters\n   (price, dates, rating, duration, tags via `vt_list_product_tags`, flags like\n   `FREE_CANCELLATION`). Results are already slim while browsing — see\n   [Response shape](#response-shape).\n3. **Drill in** — `vt_get_product` for full details; `vt_get_availability_schedule` for\n   seasons/start times/pricing (supplier currency — convert with `vt_get_exchange_rates`).\n4. **Attractions** — `vt_search_attractions` / `vt_get_attraction` for landmark-centric\n   browsing; each attraction lists its mapped product codes.\n\n## Tools\n\n| Area | Tools |\n| --- | --- |\n| Products | `vt_search_products`, `vt_get_product`, `vt_list_product_tags` |\n| Search | `vt_search_freetext` |\n| Attractions | `vt_search_attractions`, `vt_get_attraction` |\n| Availability | `vt_get_availability_schedule` |\n| Reference | `vt_list_destinations`, `vt_get_locations`, `vt_get_exchange_rates` |\n| Health | `vt_healthcheck` — is this connector working? Reports whether VIATOR_API_KEY resolved, whether Viator accepted it, and what to fix. Start here when another tool fails: an empty result can mean \"no products\" or \"never authenticated\". |\n\n## Response shape\n\nEvery read tool — all ten of them — takes `view: \"compact\" | \"full\"`, and\n**`compact` is the default**, so the smaller payload is what you get without\nasking for it. Pass `view: \"full\"` for Viator's untouched record.\n\nWhat `compact` *does* differs by tool, because only two of them have a field\nprojection written against Viator's documented shapes:\n\n- `vt_search_products` and `vt_search_freetext` project each ProductSummary down\n  to its product code, title, from-price and currency, rating, review count,\n  duration, confirmation type, flags, booking URL and cover image — and nothing\n  else. (`vt_search_freetext` projects only its PRODUCTS block; its attraction\n  and destination results are media-stripped instead.) If Viator's shape drifts,\n  the projection falls back to the raw response rather than emitting an empty\n  one.\n- The other eight — `vt_get_product`, `vt_list_product_tags`,\n  `vt_search_attractions`, `vt_get_attraction`, `vt_get_availability_schedule`,\n  `vt_list_destinations`, `vt_get_locations` and `vt_get_exchange_rates` — strip\n  image and avatar URLs and do nothing else. Every other field comes back as\n  Viator sent it.\n\n`vt_healthcheck` takes no `view`: it reports a verdict it assembles itself, not\na Viator payload, and a rung that cannot change anything is worse than no\nparameter.\n\n(This replaced an opt-in `compact: true` flag. Passing `compact` now does\nnothing — zod drops the unknown key and you get the compact rung regardless,\nwhich is what the flag used to ask for.)\n\n## Notes\n\n- Prices from `vt_search_products`/`vt_search_freetext` are in the requested `currency`;\n  prices from `vt_get_availability_schedule` are in the **supplier's** currency.\n- Viator rate-limits per endpoint on a rolling 10s window; the server caches identical\n  reads (`VIATOR_CACHE_TTL`, default 60s) and retries once honoring `Retry-After`.\n- Booking URLs (`productUrl`, `attractionUrl`) must be used verbatim for affiliate\n  attribution; pass `campaign_value` to tag them.\n\nFile v2.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"viator-mcp\",\n  \"version\": \"2.1.1\",\n  \"publishedAt\": 1790178106009\n}\n\nFile v2.1.1:skill-card.md\n\n## Description:\n\nSearch Viator tours, activities, attractions, availability, pricing, and supplier-currency exchange data through the Viator MCP server.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to configure and use a read-only Viator MCP server for travel activity discovery, product details, availability, pricing, attractions, destinations, and exchange rates.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill delegates runtime behavior to the external @chrischall/viator-mcp npm package.\n\nMitigation: Confirm that the package or its source repository is trusted before installing or registering the MCP server.\n\nRisk: The Viator Partner API key is required for use.\n\nMitigation: Store the API key only in the intended MCP environment configuration and avoid placing it in prompts, logs, or shared files.\n\nRisk: Product and attraction links take users to Viator for booking or purchase.\n\nMitigation: Treat returned booking links as external purchase destinations and review Viator details before acting.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/chrischall/skills/viator-mcp)\n- [npm package @chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- [Viator Partner Resources](https://partnerresources.viator.com/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON configuration examples and MCP tool results.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-only travel search workflow; booking links route users to Viator for purchases.]\n\n## Skill Version(s):\n\n2.1.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.1.0: 3 files, 4011 bytes\n\nFiles: skill-card.md (2382b), SKILL.md (5400b), _meta.json (129b)\n\nFile v2.1.0:SKILL.md\n\n---\nname: viator-mcp\ndescription: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).\n---\n\n# viator-mcp\n\nMCP server for the **Viator Partner API** (v2, Basic Access affiliate tier) — search the\nViator catalog of 300k+ tours, activities and experiences, get product details, availability\nschedules and pricing, browse attractions and destinations, all over stdio. Read-only: this\ntier cannot make bookings; every product result carries a `productUrl` for booking on viator.com.\n\n- **npm:** [npmjs.com/package/@chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- **Source:** [github.com/chrischall/viator-mcp](https://github.com/chrischall/viator-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}\n```\n\nGet a key by signing up as a Viator affiliate at\n[partnerresources.viator.com](https://partnerresources.viator.com/) — the Basic Access tier is free.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build\n```\n\nThen point `.mcp.json` at `dist/index.js` with `VIATOR_API_KEY` in `env`.\n\n## Workflow\n\n1. **Find the destination id** — `vt_search_freetext` with `search_types: [\"DESTINATIONS\"]`\n   (or `vt_list_destinations` for the full taxonomy).\n2. **Search products** — `vt_search_products` with the destination id plus filters\n   (price, dates, rating, duration, tags via `vt_list_product_tags`, flags like\n   `FREE_CANCELLATION`). Results are already slim while browsing — see\n   [Response shape](#response-shape).\n3. **Drill in** — `vt_get_product` for full details; `vt_get_availability_schedule` for\n   seasons/start times/pricing (supplier currency — convert with `vt_get_exchange_rates`).\n4. **Attractions** — `vt_search_attractions` / `vt_get_attraction` for landmark-centric\n   browsing; each attraction lists its mapped product codes.\n\n## Tools\n\n| Area | Tools |\n| --- | --- |\n| Products | `vt_search_products`, `vt_get_product`, `vt_list_product_tags` |\n| Search | `vt_search_freetext` |\n| Attractions | `vt_search_attractions`, `vt_get_attraction` |\n| Availability | `vt_get_availability_schedule` |\n| Reference | `vt_list_destinations`, `vt_get_locations`, `vt_get_exchange_rates` |\n| Health | `vt_healthcheck` — is this connector working? Reports whether VIATOR_API_KEY resolved, whether Viator accepted it, and what to fix. Start here when another tool fails: an empty result can mean \"no products\" or \"never authenticated\". |\n\n## Response shape\n\nEvery read tool — all ten of them — takes `view: \"compact\" | \"full\"`, and\n**`compact` is the default**, so the smaller payload is what you get without\nasking for it. Pass `view: \"full\"` for Viator's untouched record.\n\nWhat `compact` *does* differs by tool, because only two of them have a field\nprojection written against Viator's documented shapes:\n\n- `vt_search_products` and `vt_search_freetext` project each ProductSummary down\n  to its product code, title, from-price and currency, rating, review count,\n  duration, confirmation type, flags, booking URL and cover image — and nothing\n  else. (`vt_search_freetext` projects only its PRODUCTS block; its attraction\n  and destination results are media-stripped instead.) If Viator's shape drifts,\n  the projection falls back to the raw response rather than emitting an empty\n  one.\n- The other eight — `vt_get_product`, `vt_list_product_tags`,\n  `vt_search_attractions`, `vt_get_attraction`, `vt_get_availability_schedule`,\n  `vt_list_destinations`, `vt_get_locations` and `vt_get_exchange_rates` — strip\n  image and avatar URLs and do nothing else. Every other field comes back as\n  Viator sent it.\n\n`vt_healthcheck` takes no `view`: it reports a verdict it assembles itself, not\na Viator payload, and a rung that cannot change anything is worse than no\nparameter.\n\n(This replaced an opt-in `compact: true` flag. Passing `compact` now does\nnothing — zod drops the unknown key and you get the compact rung regardless,\nwhich is what the flag used to ask for.)\n\n## Notes\n\n- Prices from `vt_search_products`/`vt_search_freetext` are in the requested `currency`;\n  prices from `vt_get_availability_schedule` are in the **supplier's** currency.\n- Viator rate-limits per endpoint on a rolling 10s window; the server caches identical\n  reads (`VIATOR_CACHE_TTL`, default 60s) and retries once honoring `Retry-After`.\n- Booking URLs (`productUrl`, `attractionUrl`) must be used verbatim for affiliate\n  attribution; pass `campaign_value` to tag them.\n\nFile v2.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"viator-mcp\",\n  \"version\": \"2.1.0\",\n  \"publishedAt\": 1789872822894\n}\n\nFile v2.1.0:skill-card.md\n\n## Description:\n\nSearch Viator tours, activities, attractions, availability, pricing, product details, destinations, and currency data through a read-only MCP connector.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users, travel planners, and developers use this skill to search Viator tours, activities, attractions, product details, pricing, and availability from an agent workflow. It supports discovery and comparison, while booking details should be verified on Viator before purchase.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requires a Viator Partner API key in MCP configuration.\n\nMitigation: Install only after trusting the @chrischall/viator-mcp package, and keep VIATOR_API_KEY in local configuration or environment storage appropriate for secrets.\n\nRisk: Travel product prices, availability, and booking terms can change after search results are returned.\n\nMitigation: Verify product details, pricing, availability, cancellation terms, and booking conditions on Viator before making any purchase.\n\nRisk: Users may confuse search results and booking URLs with completed booking actions.\n\nMitigation: Treat this as a read-only Viator search helper; complete any booking directly through Viator using the returned product URL.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/chrischall/skills/viator-mcp)\n- [npm package: @chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- [Viator Partner Resources](https://partnerresources.viator.com/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON configuration snippets and Viator search result data.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-only search and reference output; compact responses are described as the default artifact behavior.]\n\n## Skill Version(s):\n\n2.1.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.0.0: 3 files, 4085 bytes\n\nFiles: skill-card.md (2568b), SKILL.md (5400b), _meta.json (129b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: viator-mcp\ndescription: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).\n---\n\n# viator-mcp\n\nMCP server for the **Viator Partner API** (v2, Basic Access affiliate tier) — search the\nViator catalog of 300k+ tours, activities and experiences, get product details, availability\nschedules and pricing, browse attractions and destinations, all over stdio. Read-only: this\ntier cannot make bookings; every product result carries a `productUrl` for booking on viator.com.\n\n- **npm:** [npmjs.com/package/@chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- **Source:** [github.com/chrischall/viator-mcp](https://github.com/chrischall/viator-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}\n```\n\nGet a key by signing up as a Viator affiliate at\n[partnerresources.viator.com](https://partnerresources.viator.com/) — the Basic Access tier is free.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build\n```\n\nThen point `.mcp.json` at `dist/index.js` with `VIATOR_API_KEY` in `env`.\n\n## Workflow\n\n1. **Find the destination id** — `vt_search_freetext` with `search_types: [\"DESTINATIONS\"]`\n   (or `vt_list_destinations` for the full taxonomy).\n2. **Search products** — `vt_search_products` with the destination id plus filters\n   (price, dates, rating, duration, tags via `vt_list_product_tags`, flags like\n   `FREE_CANCELLATION`). Results are already slim while browsing — see\n   [Response shape](#response-shape).\n3. **Drill in** — `vt_get_product` for full details; `vt_get_availability_schedule` for\n   seasons/start times/pricing (supplier currency — convert with `vt_get_exchange_rates`).\n4. **Attractions** — `vt_search_attractions` / `vt_get_attraction` for landmark-centric\n   browsing; each attraction lists its mapped product codes.\n\n## Tools\n\n| Area | Tools |\n| --- | --- |\n| Products | `vt_search_products`, `vt_get_product`, `vt_list_product_tags` |\n| Search | `vt_search_freetext` |\n| Attractions | `vt_search_attractions`, `vt_get_attraction` |\n| Availability | `vt_get_availability_schedule` |\n| Reference | `vt_list_destinations`, `vt_get_locations`, `vt_get_exchange_rates` |\n| Health | `vt_healthcheck` — is this connector working? Reports whether VIATOR_API_KEY resolved, whether Viator accepted it, and what to fix. Start here when another tool fails: an empty result can mean \"no products\" or \"never authenticated\". |\n\n## Response shape\n\nEvery read tool — all ten of them — takes `view: \"compact\" | \"full\"`, and\n**`compact` is the default**, so the smaller payload is what you get without\nasking for it. Pass `view: \"full\"` for Viator's untouched record.\n\nWhat `compact` *does* differs by tool, because only two of them have a field\nprojection written against Viator's documented shapes:\n\n- `vt_search_products` and `vt_search_freetext` project each ProductSummary down\n  to its product code, title, from-price and currency, rating, review count,\n  duration, confirmation type, flags, booking URL and cover image — and nothing\n  else. (`vt_search_freetext` projects only its PRODUCTS block; its attraction\n  and destination results are media-stripped instead.) If Viator's shape drifts,\n  the projection falls back to the raw response rather than emitting an empty\n  one.\n- The other eight — `vt_get_product`, `vt_list_product_tags`,\n  `vt_search_attractions`, `vt_get_attraction`, `vt_get_availability_schedule`,\n  `vt_list_destinations`, `vt_get_locations` and `vt_get_exchange_rates` — strip\n  image and avatar URLs and do nothing else. Every other field comes back as\n  Viator sent it.\n\n`vt_healthcheck` takes no `view`: it reports a verdict it assembles itself, not\na Viator payload, and a rung that cannot change anything is worse than no\nparameter.\n\n(This replaced an opt-in `compact: true` flag. Passing `compact` now does\nnothing — zod drops the unknown key and you get the compact rung regardless,\nwhich is what the flag used to ask for.)\n\n## Notes\n\n- Prices from `vt_search_products`/`vt_search_freetext` are in the requested `currency`;\n  prices from `vt_get_availability_schedule` are in the **supplier's** currency.\n- Viator rate-limits per endpoint on a rolling 10s window; the server caches identical\n  reads (`VIATOR_CACHE_TTL`, default 60s) and retries once honoring `Retry-After`.\n- Booking URLs (`productUrl`, `attractionUrl`) must be used verbatim for affiliate\n  attribution; pass `campaign_value` to tag them.\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"viator-mcp\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1789816767486\n}\n\nFile v2.0.0:skill-card.md\n\n## Description:\n\nSearch Viator tours, activities, attractions, availability, pricing, destinations, and exchange rates through a read-only MCP connector backed by the Viator Partner API.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and external users use this skill to configure and operate a Viator MCP server for travel discovery workflows, including finding tours, checking availability and pricing, browsing attractions, and converting supplier-currency prices. The skill is read-only and directs booking activity to Viator product links.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill depends on an external npm package and a Viator MCP server installation.\n\nMitigation: Confirm the package source and publisher before installation, and install only the expected @chrischall/viator-mcp package.\n\nRisk: The Viator Partner API key is required for operation and could be exposed if placed in the wrong configuration scope.\n\nMitigation: Store VIATOR_API_KEY only in the intended MCP configuration and avoid committing it to source control or sharing it in prompts.\n\nRisk: The connector is read-only; booking and affiliate attribution occur through external Viator product URLs.\n\nMitigation: Use returned booking URLs verbatim for any booking flow and review the external Viator page before taking user-facing booking action.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/chrischall/skills/viator-mcp)\n- [npm package @chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- [Project source link](https://github.com/chrischall/viator-mcp)\n- [Viator Partner Resources](https://partnerresources.viator.com/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown with JSON configuration snippets, shell commands, and concise travel-search guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces read-only MCP setup and usage guidance; Viator booking actions happen outside the skill through returned product URLs.]\n\n## Skill Version(s):\n\n2.0.0 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.","readmeExcerpt":"Skill: viator-mcp Owner: chrischall Summary: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tou","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}"},{"language":"bash","snippet":"git clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build"},{"language":"json","snippet":"{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}"},{"language":"bash","snippet":"git clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build"},{"language":"json","snippet":"{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}"},{"language":"bash","snippet":"git clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: viator-mcp\ndescription: Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or \"things to do\" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like \"things to do in Rome\", \"find a food tour in Paris\", \"is this tour available in September\", \"Viator\", \"book an excursion\" (search only — no booking), or \"skip-the-line Colosseum tickets\". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).\n---\n\n# viator-mcp\n\nMCP server for the **Viator Partner API** (v2, Basic Access affiliate tier) — search the\nViator catalog of 300k+ tours, activities and experiences, get product details, availability\nschedules and pricing, browse attractions and destinations, all over stdio. Read-only: this\ntier cannot make bookings; every product result carries a `productUrl` for booking on viator.com.\n\n- **npm:** [npmjs.com/package/@chrischall/viator-mcp](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- **Source:** [github.com/chrischall/viator-mcp](https://github.com/chrischall/viator-mcp)\n\n## Setup\n\n### Option A — npx (recommended)\n\nAdd to `.mcp.json` in your project or `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"viator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@chrischall/viator-mcp\"],\n      \"env\": {\n        \"VIATOR_API_KEY\": \"your-viator-partner-api-key\"\n      }\n    }\n  }\n}\n```\n\nGet a key by signing up as a Viator affiliate at\n[partnerresources.viator.com](https://partnerresources.viator.com/) — the Basic Access tier is free.\n\n### Option B — from source\n\n```bash\ngit clone https://github.com/chrischall/viator-mcp\ncd viator-mcp\nnpm install && npm run build\n```\n\nThen point `.mcp.json` at `dist/index.js` with `VIATOR_API_KEY` in `env`.\n\n## Workflow\n\n1. **Find the destination id** — `vt_search_freetext` with `search_types: [\"DESTINATIONS\"]`\n   (or `vt_list_destinations` for the full taxonomy).\n2. **Search products** — `vt_search_products` with the destination id plus filters\n   (price, dates, rating, duration, tags via `vt_list_product_tags`, flags like\n   `FREE_CANCELLATION`). Results are already slim while browsing — see\n   [Response shape](#response-shape).\n3. **Drill in** — `vt_get_product` for full details; `vt_get_availability_schedule` for\n   seasons/start times/pricing (supplier currency — convert with `vt_get_exchange_rates`).\n4. **Attractions** — `vt_search_attractions` / `vt_get_attraction` for landmark-centric\n   browsing; each attraction lists its mapped product codes.\n\n## Tools\n\n| Area | Tools |\n| --- | --- |\n| Products | `vt_search_products`, `vt_get_product`, `vt_list_product_tags` |\n| Search | `vt_search_freetext` |\n| Attractions | `vt_search_attractions`, `vt_get_attraction` |\n| Availability | `vt_get_availa"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"viator-mcp\",\n  \"version\": \"2.1.8\",\n  \"publishedAt\": 1791588441898\n}"},{"path":"skill-card.md","content":"## Description:\n\nHelps agents search Viator tours and attractions, check product details and availability, and convert supplier-currency prices without making bookings.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nTravel-planning agents and their users can discover Viator experiences, compare details and prices, and check availability before visiting Viator to book.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requires a third-party MCP package and a Viator Partner API key.\n\nMitigation: Verify that you trust the package before installation and use a key you are comfortable placing in MCP environment configuration.\n\nRisk: Tour details and prices are retrieved from Viator, and bookings are not performed by this skill.\n\nMitigation: Confirm current availability and pricing with Viator before booking through the provided product link.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/chrischall/skills/viator-mcp)\n- [viator-mcp npm package](https://www.npmjs.com/package/@chrischall/viator-mcp)\n- [Viator Partner resources](https://partnerresources.viator.com/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Guidance]\n\n**Output Format:** [Markdown]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Search and availability information may include prices and booking links; the skill does not make bookings.]\n\n## Skill Version(s):\n\n2.1.8 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1200,"uniquenessScore":43,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T04:46:57.633Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T04:46:57.633Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:44:42.359Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}