connect AI agents to search curated tours and activities by destination, dates, and preferences, and pull full details for any experience.
OpenCode is an open-source agent for the terminal. Remote MCP servers go in its config file and sign in through OAuth.
This guide connects Viator MCP to OpenCode through MewCP, so OpenCode can use Viator MCP's 2 tools, like get_experience_details and search_experiences.
Viator MCP needs no credentials, but every call still runs through MewCP: scoped, checked and logged like any other.
More apps
Connect AI agents to real-time Indian commerce data to search products, compare prices and availability, check inventory, and get delivery ETAs across Blinkit, Zepto, Swiggy Instamart, BigBasket, Amazon, Flipkart, and other platforms.
Brek helps AI agents find and compare hotels using live availability, public booking prices, and private wholesale rates. Retrieve property details, compare room offers, and evaluate amenities, breakfast options, refundability, taxes, and cancellation policies before continuing to booking on Brek.
Read-only product search across independent stores, with product details and merchant links. Streamable HTTP; no sign-in or API key.
Transaction-complete hotel booking over MCP — 300K+ properties, real hotel confirmation numbers, loyalty points, secure checkout. Hotels are merchant of record. Builders set their own booking fee via Stripe Connect.
Other clients
Viator MCP works the same way in every client below. Pick yours for its own guide.
Free to start.
Scope access to the exact Viator MCP tools and accounts you allow, work and personal side by side. Anything outside that scope is refused at call time, even when the model asks for it.
Each call is logged: what ran, on which account, and whether it worked. Failures come back structured, so the agent knows whether to retry instead of guessing.
Every app sits behind one secure MCP URL, and there is no server for you to deploy or keep running. Add an integration in the dashboard and it is live on the next call, with no config to change and no new credentials to wire up. Tools load only when a task needs them, so your agent stays fast and focused however many apps you connect.
Edit ~/.config/opencode/opencode.json, or opencode.json in your project root.
Start a new chat and ask: "List the tools you can use from MewCP." You should see your connected apps.
Retrieves enriched information for a specific Viator experience, including detailed descriptions, highlights, imagery, pricing, duration, key features, and the click-out URL.It also returns what is included and excluded in the price, high-level itinerary metadata, bookable experience options, traveler age bands and booking constraints, start/end locations and traveler pickup, additional information such as requirements and restrictions, available language guides, associated destinations, the operating time zone, the operator, every image for the experience with its available dimension variants and captions, and the cancellation policy covering the refund terms, weather and minimum-traveler cancellation conditions, and how much is refundable depending on how far in advance the booking is cancelled.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. get_experience_details only returns high-level itinerary metadata. Full itinerary content, including the sequence of stops and activities, detailed descriptions, and location information, is available through get_experience_itinerary. Clients should call that tool on demand when the traveler asks for more detail about what happens during the experience.
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?”