Skip to main content
Glama

Search VailVacay listings

search_listings
Read-onlyIdempotent

Search VailVacay's curated directory of Vail, Colorado businesses (hotels and lodging, restaurants, bars and après-ski, activities, ski shops, shopping, services and spas). Read-only. Filters: keyword, category, area/neighborhood, price tier, amenities (e.g. ski_in_ski_out, walk_to_lifts, hot_tub, pool, pet_friendly), tag, and distance from a lat/lng or from another listing. Returns compact plain-text listings (description shortened; use get_listing for the full text, hours and FAQ) with the listing page URL, address, phone, website, up to 2 credited photos, and booking links. Booking links are the path to book with the named provider (Expedia for hotels, plus Viator/Klook where the listing has one), not ads; those marked affiliate:true are affiliate links, and VailVacay may earn a commission if the user books, at no extra cost to them. Results are not ranked by commission. Pass check_in/check_out to get date-specific Expedia hotel links (live rates are shown on Expedia, not in this result).

Input Schema

NameRequiredDescriptionDefault
qNoKeywords, e.g. 'steak', 'ski rental', 'hot tub condo'
tagNoExact listing tag, see list_filters
areaNoArea/neighborhood, e.g. 'Vail Village', 'Lionshead', 'Golden Peak', 'Cascade Village'. See list_filters.
pageNo
sortNo
limitNo
adultsNo
categoryNoCategory name or id from list_categories, e.g. 'Hotels'
check_inNoYYYY-MM-DD (hotels)
near_latNo
near_lngNo
amenitiesNoAll must match
check_outNoYYYY-MM-DD
radius_kmNoMax distance (km) when near_* is set
price_tierNo
near_listing_idNoRank by distance from this listing
has_booking_linkNoOnly listings with a booking link

Output Schema

NameRequiredDescriptionDefault
pageNo
totalYes
statusYes
has_moreNo
listingsYes
per_pageNo
returnedNo
data_fetched_atNo
affiliate_disclosureNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed22 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / adults
      Added value: +{
      +  "default": 2,
      +  "maximum": 14,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / amenities
      Added value: +{
      +  "description": "All must match",
      +  "items": {
      +    "enum": [
      +      "ski_in_ski_out",
      +      "walk_to_lifts",
      +      "pool",
      +      "hot_tub",
      +      "spa",
      +      "fitness_center",
      +      "pet_friendly",
      +      "parking",
      +      "shuttle",
      +      "family_friendly",
      +      "breakfast",
      +      "kitchen",
      +      "rooftop",
      +      "river_view",
      +      "outdoor_seating",
      +      "apres_ski",
      +      "live_music",
      +      "free_entry",
      +      "michelin",
      +      "wheelchair_accessible"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / area
      Added value: +{
      +  "description": "Area/neighborhood, e.g. 'Vail Village', 'Lionshead', 'Golden Peak', 'Cascade Village'. See list_filters.",
      +  "type": "string"
      +}
    • changedInput schema / properties / category / description
      Previous value: -"Category name filter, e.g. 'Restaurants'"New value: +"Category name or id from list_categories, e.g. 'Hotels'"
    • addedInput schema / properties / check_in
      Added value: +{
      +  "description": "YYYY-MM-DD (hotels)",
      +  "type": "string"
      +}
    • addedInput schema / properties / check_out
      Added value: +{
      +  "description": "YYYY-MM-DD",
      +  "type": "string"
      +}
    • addedInput schema / properties / has_booking_link
      Added value: +{
      +  "description": "Only listings with a booking link",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / limit / description
      Removed value: -"Max results (1-50)"
    • addedInput schema / properties / limit / maximum
      Added value: +50
    • addedInput schema / properties / limit / minimum
      Added value: +1
    • addedInput schema / properties / near_lat
      Added value: +{
      +  "type": "number"
      +}
    • addedInput schema / properties / near_listing_id
      Added value: +{
      +  "description": "Rank by distance from this listing",
      +  "type": "string"
      +}
    • addedInput schema / properties / near_lng
      Added value: +{
      +  "type": "number"
      +}
    • removedInput schema / properties / page / description
      Removed value: -"Page number"
    • addedInput schema / properties / page / minimum
      Added value: +1
    • addedInput schema / properties / price_tier
      Added value: +{
      +  "enum": [
      +    "budget",
      +    "moderate",
      +    "upscale",
      +    "luxury"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / q / description
      Previous value: -"Keyword search, e.g. 'steak' or 'ski rental'"New value: +"Keywords, e.g. 'steak', 'ski rental', 'hot tub condo'"
    • addedInput schema / properties / radius_km
      Added value: +{
      +  "description": "Max distance (km) when near_* is set",
      +  "type": "number"
      +}
    • addedInput schema / properties / sort
      Added value: +{
      +  "enum": [
      +    "relevance",
      +    "distance",
      +    "name"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / tag
      Added value: +{
      +  "description": "Exact listing tag, see list_filters",
      +  "type": "string"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "affiliate_disclosure": {
      +      "type": "string"
      +    },
      +    "data_fetched_at": {
      +      "type": "string"
      +    },
      +    "has_more": {
      +      "type": "boolean"
      +    },
      +    "listings": {
      +      "items": {
      +        "properties": {
      +          "address": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "amenities": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "area": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "booking": {
      +            "items": {
      +              "properties": {
      +                "affiliate": {
      +                  "type": "boolean"
      +                },
      +                "label": {
      +                  "type": "string"
      +                },
      +                "provider": {
      +                  "type": "string"
      +                },
      +                "url": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "booking_link": {
      +            "description": "First affiliate booking link, if any",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "category": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "description": {
      +            "description": "Plain text",
      +            "type": "string"
      +          },
      +          "distance_km": {
      +            "type": "number"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "lat": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "lon": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "phone": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "photo_details": {
      +            "items": {
      +              "properties": {
      +                "caption": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "credit": {
      +                  "type": "string"
      +                },
      +                "source": {
      +                  "type": "string"
      +                },
      +                "url": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "photos": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "price_tier": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "tags": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "url": {
      +            "description": "Listing page on vailvacay.com",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "website": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "page": {
      +      "type": "integer"
      +    },
      +    "per_page": {
      +      "type": "integer"
      +    },
      +    "returned": {
      +      "type": "integer"
      +    },
      +    "status": {
      +      "type": "string"
      +    },
      +    "total": {
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "total",
      +    "listings"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent safety, but the description adds substantial behavior beyond them: booking links are direct provider paths rather than ads, affiliate:true items carry a commission disclosure at no extra cost, results are explicitly not ranked by commission, live rates appear only on Expedia, and results are compact plain-text. These are decision-relevant traits an agent could not infer from structured fields.

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

Conciseness4/5

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

Front-loaded with scope, then filters, then result shape and booking disclosure — a sensible order with little filler. The single long sentence on booking links/affiliate status is dense but every clause is decision-relevant, so only mild tightening is possible.

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

Completeness5/5

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

For a 17-parameter, zero-required search tool with an output schema, the description covers scope, filter surface, result payload (compact text, URL, address, phone, website, photos, booking links), and the affiliate/ranking caveat that an agent must relay to users. Nothing material is missing.

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

Parameters4/5

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

With schema coverage at 59% across 17 params, the description compensates by enumerating the filter families (keyword, category, area, price tier, amenities with concrete examples, tag, distance from lat/lng or another listing) and clarifies that check_in/check_out drive date-specific Expedia links. It adds real meaning for the date params and near_listing_id, though it does not explain sort/limit/adults or pagination behavior.

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 and resource ('Search VailVacay's curated directory of Vail, Colorado businesses') and enumerates the covered categories, so the agent knows exactly what corpus this searches. It also distinguishes itself from get_listing ('use get_listing for the full text, hours and FAQ') and points to list_filters/list_categories, making it separable from siblings without opening a schema.

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?

Clear routing context: use get_listing when full description, hours and FAQ are needed, and pass check_in/check_out to get date-specific hotel links. It does not, however, state when to prefer this over search_tours or any exclusion on when this tool is inappropriate, so it stops short of full when/when-not guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources