Skip to main content
Glama
chrischall
by chrischall

vt_search_freetext

Read-only

Search Viator's products, attractions, and destinations with free text. Find tours and activities even without a destination ID.

Instructions

Free-text search across Viator products, attractions, and destinations (e.g. "colosseum underground tour"). The fastest way to find things when you don't have a destination id yet.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sortNoProduct sort key
viewNoResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact (default) projects the PRODUCT results down to their product code, title, from-price and currency, rating, review count, duration, confirmation type, flags, booking URL and cover image and strips image/avatar URLs from the attraction and destination results; "full" returns Viator's payload untouched.
countNoResults per page per type (max 50; default 10)
orderNoSort direction
startNo1-based index of the first result (per type)
currencyNoCurrency for request/response prices (default USD)USD
end_dateNoOnly products operating on/before this date (YYYY-MM-DD)
max_priceNoMaximum product from-price (in currency)
min_priceNoMinimum product from-price (in currency)
min_ratingNoMinimum average traveler rating (0-5)
start_dateNoOnly products operating on/after this date (YYYY-MM-DD)
destinationNoRestrict product results to a destination id
search_termYesFree-text search term
search_typesNoWhich result types to return (default: PRODUCTS only)
campaign_valueNoAffiliate campaign tracking id — appended to the productUrl/attractionUrl/destinationUrl Viator returns

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 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 / max_price / minimum
      Added value: +0
    • addedInput schema / properties / min_price / minimum
      Added 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])))$"
  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 slim product summaries 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 the PRODUCT results down to their product code, title, from-price and currency, rating, review count, duration, confirmation type, flags, booking URL and cover image and strips image/avatar URLs from the attraction and destination results; \"full\" returns Viator's payload untouched.",
      +  "enum": [
      +    "compact",
      +    "full"
      +  ],
      +  "type": "string"
      +}
  4. First observedv1.0.5

TDQS

A4/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 safe-read and external-data profile is covered. The description adds that results span three entity types and frames the call as the 'fastest' lookup, but says nothing about pagination per type, result shape, or auth/campaign behavior beyond what annotations provide.

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?

Two sentences, zero waste, with the scope statement front-loaded ahead of the usage hint. The example query is compact and useful.

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?

For a read-only search tool with a fully documented 15-parameter schema and no output schema, the description covers the essential what and when. It could note that results are paginated per entity type, but the schema and count's 'per type' wording largely carry that, leaving only a minor gap.

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% and every one of the 15 parameters is documented in the schema, so the schema carries the semantics. The description only illustrates the search_term with an example and adds nothing about sort, view, date, price, or type filters — the baseline 3 for full coverage 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), the resource span (products, attractions, destinations), and the modality (free-text) with a concrete example query. The clause 'when you don't have a destination id yet' implicitly distinguishes it from the destination-scoped siblings like vt_search_products and vt_search_attractions.

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

Usage Guidelines4/5

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

Gives clear when-to-use context: use this as the fastest entry point before a destination id is known. It stops short of naming the alternative tools (vt_search_products, vt_search_attractions) or stating explicit exclusions, so it is strong but not fully routing.

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