Viator MCP server icon

Viator

by Viator

Productivity2 toolsNo Auth Required

Viator's experiences connector exposes 2 read-only tools with no sign-in — search tours and activities, then pull details on one. Its real surface is an MCP Apps widget the directory listing never shows. Verified live 2026-08-18.

Verified connector

Listed by Anthropic as a partner connector in its Connectors Directory.

Connection checked by Agentman on .

Anthropic states this reflects the level of review a connector received, not a security audit.

Connect Viator via MCP

https://exp-app-mcp.prod.ep.viator.com/mcp

Works in any MCP-compatible client. In Agentman Studio it is one click — no config file to edit.

Viator Tools & Capabilities (2)

get_experience_detailsRead-only

Retrieves enriched information for a specific Viator experience, including detailed descriptions, highlights, imagery, pricing, duration, key features, and the click-out URL.The model should call this tool only when the user clearly refers to a specific experience—either by selecting it in the UI or by asking follow-up questions such as “Tell me more about…”;if multiple experiences were shown, the model must resolve ambiguity by asking which one the user means. This tool is intended for deepening experience understanding rather than search, and should only be invoked with a code previously returned by search_experiences.

search_experiencesRead-only

Retrieves a curated list of Viator experiences based on a free-text search of what the user wants (destination, activity type, and preferences), plus trip dates and optional refiners (budget, duration, etc.). The model must supply a non-blank searchTerm as natural language describing where and what the user is looking for (e.g. "walking tours in Paris, France", "kid friendly food experiences in Rome"). Dates, prices, duration limits, and currency belong in their dedicated parameters—not inside searchTerm. The model must provide searchTerm and dates before calling this tool. The model may re-issue a refined searchExperiences call whenever the user adds, removes, or adjusts refinement criteria (e.g., kid-friendly, price range, shorter duration) to narrow or improve the results. If the tool returns zero results, the model must proactively guide the user toward a successful refinement. It should review the parameters used in the failed request and recommend the most appropriate based on the proposed logic:" If > 1 categories applied, suggest removing some categories. Eg: “It looks like those categories combined are too restrictive. Would you like to narrow it down?” If the query requests a specific feature (eg private tour), suggest removing this constraint. Eg: “Private tours may be limited in this area, would you like to consider group options too?” If duration (avg from/to) > XX, suggest trying a shorter duration. If duration (avg from/to) < XX, suggest trying a longer duration. If price constraint was applied, suggest widening (or removing) price limits. Else, suggest broaden location search. Eg: “Nothing matches in central Siena, should we try Tuscany or nearby towns?”

Read from the server on 2026-08-18, including each tool's own safety annotations.

Limits

  • No booking, no payment, no availability hold. Both tools are read-only. Every result carries a click-out URL to viator.com, and that is where the journey continues.
  • Two tools is the whole surface. There is no browse-by-destination tool, no category listing and no lookup by product name. The only way to a code is through a search.
  • The docs say endDate is optional; the live schema requires it. Following the documentation literally produces a rejected call. Send both dates.
  • No prompts capability. prompts/list returns -32601, method not found. This is absence, not an empty list.
  • resources/templates/list returns an empty array. The one resources capability the server declares is populated by a concrete resource only; there is no URI template to expand.
  • The MCP App is invisible in the directory listing. Anthropic's entry sets has_mcp_app: true and carries no resource field. Nothing in the listing tells you the widget exists at ui://mcp/experiences, what MIME type it uses or what its CSP permits.
  • Widget rendering depends on your client. The resource uses the Claude MCP Apps profile text/html;profile=mcp-app. A client that does not implement MCP Apps gets no widget, and the server's own instruction to keep replies to one sentence means you may see very little text either.
  • The CSP allowlist is a declaration, not an enforcement guarantee. _meta.ui.csp states which hosts the widget asks to reach. Enforcement is the host client's responsibility, and nothing in it constitutes a security audit of the bundled code.
  • The resource description instructs the model. It tells the model not to restate results, to ask only for refinements and to answer in a single sentence. Anyone evaluating this connector should read that as server-authored behaviour shaping, not as neutral metadata.
  • Rate limits exist but are unpublished. Viator's docs describe limits as generous and give no figure, no window and no quota. The stated failure mode is an error asking you to retry after a number of seconds. We observed no 429 and did not test the limit.
  • High-volume use requires contacting Viator. The documentation asks integrations with unusually high call volumes to reach out before going live. It names no threshold.
  • sessionId is mandatory on both tools and is your client's responsibility. Nothing generates it for you at the protocol layer. A client that omits it, or that mints a new one per call, breaks the search-to-detail join.
  • Errors arrive inside HTTP 200. Viator's docs state that most errors come back as MCP errors with isError set and a human-readable message. A client checking HTTP status alone will read failures as successes.
  • language on get_experience_details is deprecated. Its own schema says not to send it. Use locale.
  • Detail pricing is conditional on currency. Omit the currency and the pricing fields are not returned at all, per the schema.
  • limit caps at 10, defaults to 5. The schema also states it must not be used to interpret user intent.
  • Not listed for Claude Desktop or Claude Code. The directory's works_with names claude and claude-api only, while publishing a Claude Code install command.
  • We called no tool. Our probe was initialize, tools/list, prompts/list, resources/list, resources/templates/list and one resources/read. Every behavioural claim above comes from the schemas, the resource, Viator's documentation or the directory.

Frequently asked questions

Does the Viator MCP server need an account or an API key?

No. We opened an anonymous handshake against the endpoint on 2026-08-18 and the server returned both tool definitions and its resource listing without a credential and without an authentication challenge. Anthropic's directory records the connector as no-auth. The docs live on Viator's partner-API host but describe no key, no header and no partner onboarding step for this server.

Can you book a tour through the Viator MCP server?

No. Both tools are annotated readOnlyHint true and destructiveHint false, and neither schema accepts a traveller name, a party size, a payment reference or a booking instruction. What you get instead is a click-out URL on every result. The connector shortlists experiences and hands you a link; the transaction happens on viator.com.

Why must every Viator tool call carry a sessionId?

Because Viator ties both tools together with conversation state your client has to keep. Each schema marks sessionId mandatory and describes it as a UUID for the current conversation, reused until the user opens a new chat. The search response echoes it back, and get_experience_details expects the same value so the detail lookup joins the search that produced it.

Why can't I ask Viator about a hotel, a flight or a refund?

Because Viator's own documentation rules those out. Its MCP tool contract lists four cases where the model should not invoke the tool: logistics questions such as visas, weather and transport; hotel, restaurant or flight recommendations; Viator booking support such as refunds and cancellations; and a query naming a landmark rather than a destination. The connector covers bookable experiences only.

What does the Viator MCP App widget actually do?

It renders the search results as an interactive list the user can click. The server publishes it as one resource at ui://mcp/experiences with the MIME type text/html;profile=mcp-app, and search_experiences points at it through _meta.ui.resourceUri. We read the resource on 2026-08-18 and it returned roughly 870 KB of self-contained HTML with no external script.

Which domains can the Viator widget talk to?

Only Viator's, plus two CDNs. The resource's own _meta declares a CSP allowlist: connectDomains is https://*.viator.com alone, and resourceDomains adds https://cache.vtrcdn.com and https://*.tripadvisor.com. So the widget can make network calls to Viator hosts only, and can load images and assets from Viator or Tripadvisor CDNs. Nothing else is permitted.

Does the Viator MCP server offer prompts?

No, and the distinction matters. The server does not declare a prompts capability in its initialize response, and prompts/list returns JSON-RPC error -32601, method not found. That is absence, not an empty list. Anthropic's directory also records zero prompt names, so listing and server agree. Resources are the only non-tool surface here.

What happens when a Viator search returns nothing?

The server tells the model how to recover rather than returning a bare empty list. Both the live tool description and Viator's documentation prescribe the same ladder: drop a restrictive feature such as private tours, widen or remove price limits, adjust the duration, and failing all that broaden the location. The stated aim is a refinement suggestion, never a dead end.

Is there a rate limit on the Viator MCP server?

Yes, but Viator publishes no number. Its documentation states that limits exist, calls them generous, and says most integrations will not notice them. On breach the server returns a message asking you to retry after a stated number of seconds, and Viator recommends exponential backoff. High-volume users are told to contact the team before going live.

Sources

Use in Agentman

Connect once and your agents call these tools on their own — on a schedule, in a workflow, with nobody at the keyboard.

Open in Agentman Studio

Server Info

Category
Productivity
Developer
Viator
Tools
2
Domain
exp-app-mcp.prod.ep.viator.com

Using Claude Desktop or another MCP client? Setup docs — the connection URL above works anywhere.