Skip to main content
Glama
chrischall
by chrischall

vt_search_products

Read-only

Search Viator tours, activities, and experiences by destination, tags, price, dates, rating, or duration to get product summaries with pricing and booking links.

Instructions

Search Viator tours, activities and experiences with structured filters (destination, tags, price, dates, rating, duration). Returns product summaries with pricing and booking URLs. Use vt_list_destinations to find destination ids and vt_list_product_tags for tag ids.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sortNoSort key (default: DEFAULT — Viator relevance)
tagsNoTag ids products must match (from vt_list_product_tags)
viewNoResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact (default) projects each result down to its product code, title, from-price and currency, rating, review count, duration, confirmation type, flags, booking URL and cover image, falling back to the media-stripped raw response if Viator's shape drifts; "full" returns Viator's payload untouched.
countNoResults per page (max 50; default 10)
flagsNoProduct flags, e.g. FREE_CANCELLATION, LIKELY_TO_SELL_OUT, PRIVATE_TOUR
orderNoSort direction
startNo1-based index of the first result to return
currencyNoCurrency for request/response prices (default USD)USD
end_dateNoOnly products operating on/before this date (YYYY-MM-DD)
max_ratingNoMaximum average traveler rating (0-5)
min_ratingNoMinimum average traveler rating (0-5)
start_dateNoOnly products operating on/after this date (YYYY-MM-DD)
destinationNoDestination id (from vt_list_destinations), e.g. "732" for Paris
lowest_priceNoMinimum from-price (in currency)
highest_priceNoMaximum from-price (in currency)
campaign_valueNoAffiliate campaign tracking id — appended to the productUrl/attractionUrl/destinationUrl Viator returns
max_duration_minutesNoMaximum product duration in minutes
min_duration_minutesNoMinimum product duration in minutes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv2.1.9
    • addedInput schema / properties / end_date / format
      Added value: +"date"
    • addedInput schema / properties / end_date / pattern
      Added value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    • addedInput schema / properties / highest_price / minimum
      Added value: +0
    • addedInput schema / properties / lowest_price / minimum
      Added value: +0
    • changedInput schema / properties / max_duration_minutes / minimum
      Previous value: --9007199254740991New value: +0
    • changedInput schema / properties / min_duration_minutes / minimum
      Previous value: --9007199254740991New value: +0
    • addedInput schema / properties / start_date / format
      Added value: +"date"
    • addedInput schema / properties / start_date / pattern
      Added value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    • changedInput schema / properties / view / description
      Previous value: -"Response shape: \"compact\" (default) drops fields the response already carries elsewhere; \"full\" returns every field this server understands. compact (default) projects each result down to its product code, title, from-price and currency, rating, review count, duration, confirmation type, flags, booking URL and cover image, falling back to the raw response if Viator's shape drifts; \"full\" returns Viator's payload untouched."New value: +"Response shape: \"compact\" (default) drops fields the response already carries elsewhere; \"full\" returns every field this server understands. compact (default) projects each result down to its product code, title, from-price and currency, rating, review count, duration, confirmation type, flags, booking URL and cover image, falling back to the media-stripped raw response if Viator's shape drifts; \"full\" returns Viator's payload untouched."
  2. Changed1 schema field changedv2.0.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  3. Changed2 schema fields changedv1.2.1
    • removedInput schema / properties / compact
      Removed value: -{
      -  "default": false,
      -  "description": "Return a slim summary per product (code, title, price, rating, URL) instead of full records",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / view
      Added value: +{
      +  "description": "Response shape: \"compact\" (default) drops fields the response already carries elsewhere; \"full\" returns every field this server understands. compact (default) projects each result down to its product code, title, from-price and currency, rating, review count, duration, confirmation type, flags, booking URL and cover image, falling back to the raw response if Viator's shape drifts; \"full\" returns Viator's payload untouched.",
      +  "enum": [
      +    "compact",
      +    "full"
      +  ],
      +  "type": "string"
      +}
  4. First observedv1.0.5

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the return shape ("product summaries with pricing and booking URLs"), which is useful context beyond the annotations, but says nothing about pagination semantics, rate limits, or auth. With annotations doing the heavy lifting, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: what it searches and how, what it returns, and which tools supply the id inputs. Purpose and return value are front-loaded and nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully discloses that results are product summaries with pricing and booking URLs. All 18 parameters are documented in the schema, and the two id-source tools are named. The only gap is pagination behavior for the start/count pair, which is minor given the schema documents both.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across all 18 parameters, including enums for sort/order/view/currency, so the schema fully documents syntax and constraints. The description only restates the filter categories at a high level (destination, tags, price, dates, rating, duration) and adds no semantics the schema lacks. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (Viator tours, activities, experiences) and enumerates the filter dimensions (destination, tags, price, dates, rating, duration). The phrase "structured filters" plus the two named helper tools distinguishes it from the sibling vt_search_freetext without requiring the schema to be opened.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description routes the agent to vt_list_destinations and vt_list_product_tags for required id values, which is genuine prerequisite guidance. However, it never states when to prefer this structured search over vt_search_freetext, nor any conditions under which this tool is the wrong choice. Usage is implied by the filter list rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.