{"openapi":"3.1.0","info":{"title":"Viator (BYOK) API","version":"0.1.0","description":"Viator (BYOK) lets an AI assistant read your own Viator data through the Viator API with a key you supply (Viator Partner API key). Read-only: 10 tools (list_destinations, search_destinations, search_products, get_product, list_product_tags, search_attractions, get_attraction, get_availability_schedule, check_availability, list_product_reviews). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-viator.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-viator/docs"},"termsOfService":"https://connectorbay.com/byok-viator/terms"},"servers":[{"url":"https://byok-viator.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-viator/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_destinations":{"post":{"operationId":"list_destinations","summary":"List all Viator destinations (countries, regions, cities) with id, name, type, parent, time zone, currency, airport code","description":"List all Viator destinations (countries, regions, cities) with id, name, type, parent, time zone, currency, airport codes and coordinates. Use the id in product searches. Use for \"What is the Viator destination id for Lisbon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_destinationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_destinations":{"post":{"operationId":"search_destinations","summary":"Search Viator destinations by a free-text name and get id, name, parent destination and URL. Use for \"Find Viator destin","description":"Search Viator destinations by a free-text name and get id, name, parent destination and URL. Use for \"Find Viator destinations matching 'Kyoto'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search_term":{"description":"Text to look for, for example a city name.","maxLength":100,"title":"Search Term","type":"string"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":"USD","description":"Three-letter currency code for prices, for example USD, EUR, GBP, AUD, CAD.","title":"Currency"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 50).","title":"Count"}},"required":["search_term"],"title":"search_destinationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_products":{"post":{"operationId":"search_products","summary":"Search bookable tours and activities in a destination with title, rating, review count, duration and from-price. Free to","description":"Search bookable tours and activities in a destination with title, rating, review count, duration and from-price. Free to call; nothing is booked. Use for \"What are the best-rated tours in Lisbon under 100 euro\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"destination":{"description":"Viator destination id as text, from list_destinations or search_destinations, for example '98'.","maxLength":12,"title":"Destination","type":"string"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":"USD","description":"Three-letter currency code for prices, for example USD, EUR, GBP, AUD, CAD.","title":"Currency"},"sort":{"anyOf":[{"enum":["DEFAULT","PRICE","TRAVELER_RATING","ITINERARY_DURATION","DATE_ADDED"],"type":"string"},{"type":"null"}],"default":"DEFAULT","description":"Order: DEFAULT, PRICE, TRAVELER_RATING, ITINERARY_DURATION or DATE_ADDED.","title":"Sort"},"order":{"anyOf":[{"enum":["ASCENDING","DESCENDING"],"type":"string"},{"type":"null"}],"default":null,"description":"ASCENDING or DESCENDING; leave out with DEFAULT sort. TRAVELER_RATING needs DESCENDING.","title":"Order"},"lowest_price":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Only products with a from-price at or above this amount.","title":"Lowest Price"},"highest_price":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Only products with a from-price at or below this amount.","title":"Highest Price"},"start":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Position of the first result, starting at 1 (for paging).","title":"Start"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 50).","title":"Count"}},"required":["destination"],"title":"search_productsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_product":{"post":{"operationId":"get_product","summary":"Get one Viator product: status, title, ticket type, age bands and pricing basis, images and logistics. Description field","description":"Get one Viator product: status, title, ticket type, age bands and pricing basis, images and logistics. Description fields depend on the product type. Use for \"Show details of Viator product 5010SYDNEY\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"product_code":{"description":"Viator product code, for example '5010SYDNEY' (from a search).","maxLength":40,"title":"Product Code","type":"string"}},"required":["product_code"],"title":"get_productArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_product_tags":{"post":{"operationId":"list_product_tags","summary":"List the Viator product category tags (ids and parent ids) used to filter and describe products. Use for \"What product t","description":"List the Viator product category tags (ids and parent ids) used to filter and describe products. Use for \"What product tags does Viator use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_product_tagsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_attractions":{"post":{"operationId":"search_attractions","summary":"List attractions of a destination with name, product count, review summary and URL. Use for \"What attractions does Viato","description":"List attractions of a destination with name, product count, review summary and URL. Use for \"What attractions does Viator list for destination 98\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"destination_id":{"description":"Viator destination id, for example 98.","minimum":1,"title":"Destination Id","type":"integer"},"start":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Position of the first result, starting at 1 (for paging).","title":"Start"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 50).","title":"Count"}},"required":["destination_id"],"title":"search_attractionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_attraction":{"post":{"operationId":"get_attraction","summary":"Get one attraction: name, address, coordinates, opening hours, linked product codes and review summary. Use for \"Tell me","description":"Get one attraction: name, address, coordinates, opening hours, linked product codes and review summary. Use for \"Tell me about Viator attraction 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"attraction_id":{"description":"Viator attraction id from search_attractions.","minimum":1,"title":"Attraction Id","type":"integer"}},"required":["attraction_id"],"title":"get_attractionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_availability_schedule":{"post":{"operationId":"get_availability_schedule","summary":"Get a product's seasonal availability and pricing schedule per option, with from-price and currency. Use for \"When is pr","description":"Get a product's seasonal availability and pricing schedule per option, with from-price and currency. Use for \"When is product 5010SYDNEY available and what does it cost\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"product_code":{"description":"Viator product code, for example '5010SYDNEY' (from a search).","maxLength":40,"title":"Product Code","type":"string"}},"required":["product_code"],"title":"get_availability_scheduleArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/check_availability":{"post":{"operationId":"check_availability","summary":"Check live availability and price of a product on one date for a group (full-access affiliate keys only). Free; it does ","description":"Check live availability and price of a product on one date for a group (full-access affiliate keys only). Free; it does not hold or book. Use for \"Is product 5010SYDNEY available on 12 December for two adults\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"product_code":{"description":"Viator product code.","maxLength":40,"title":"Product Code","type":"string"},"travel_date":{"description":"Travel date, YYYY-MM-DD.","maxLength":10,"title":"Travel Date","type":"string"},"adults":{"description":"Number of adult travelers.","maximum":30,"minimum":1,"title":"Adults","type":"integer"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":"USD","description":"Three-letter currency code for prices, for example USD, EUR, GBP, AUD, CAD.","title":"Currency"}},"required":["product_code","travel_date","adults"],"title":"check_availabilityArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_product_reviews":{"post":{"operationId":"list_product_reviews","summary":"List traveler reviews of a product with rating, title, text, date and provider (full-access affiliate keys only). Use fo","description":"List traveler reviews of a product with rating, title, text, date and provider (full-access affiliate keys only). Use for \"What do travelers say about product 5010SYDNEY\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"product_code":{"description":"Viator product code.","maxLength":40,"title":"Product Code","type":"string"},"start":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Position of the first result, starting at 1 (for paging).","title":"Start"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 50).","title":"Count"},"provider":{"anyOf":[{"enum":["ALL","VIATOR","TRIPADVISOR"],"type":"string"},{"type":"null"}],"default":"ALL","description":"Review source: ALL, VIATOR or TRIPADVISOR.","title":"Provider"}},"required":["product_code"],"title":"list_product_reviewsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}