Skip to main content
Glama

Search BostonVacay listings

search_listings
Read-onlyIdempotent

Search BostonVacay's curated directory of Boston, Massachusetts businesses (hotels, restaurants, attractions, bars and shops). Read-only. Filters: keyword, category, area/neighborhood, price tier, amenities (e.g. pool, spa, pet_friendly, rooftop, family_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 BostonVacay 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. 'seafood', 'freedom trail', 'rooftop bar'
tagNoExact listing tag, see list_filters
areaNoArea/neighborhood, e.g. 'Back Bay', 'Beacon Hill', 'North End', 'Seaport'. 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. 'Back Bay', 'Beacon Hill', 'North End', 'Seaport'. 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. 'seafood' or 'freedom trail'"New value: +"Keywords, e.g. 'seafood', 'freedom trail', 'rooftop bar'"
    • 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 bostonvacay.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.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely non-structured context: booking links are provider links (Expedia/Viator/Klook) rather than ads, affiliate:true links earn commission at no cost to the user, and results are not ranked by commission, plus the caveat that live rates appear on Expedia and not in the result.

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?

Purpose is front-loaded in the first clause and every sentence carries information (filters, return shape, affiliate disclosure, check-in behavior). However, it is delivered as one dense run-on paragraph, which makes the affiliate and return-value content harder to scan than it needs to be.

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 17-parameter search tool with an output schema, the description covers purpose, filtering, the get_listing handoff, return contents and the booking-link business model. Since an output schema exists it need not describe returns in detail, yet it does describe them anyway; only a few filter/pagination parameters go unaddressed.

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?

Schema coverage is a middling 59%, and the description compensates by enumerating the filter dimensions (keyword, category, area, price tier, amenities with examples, tag, distance from lat/lng or another listing) and clarifying semantics the schema lacks, notably that check_in/check_out produce date-specific Expedia hotel links rather than live rates. It leaves sort, page, limit, adults, radius_km and has_booking_link unexplained, so it is not complete.

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?

The description names a specific verb (Search) and resource (BostonVacay's curated directory of Boston businesses), and even enumerates the business types covered. It explicitly distinguishes itself from get_listing for full text/hours/FAQ, so an agent can route without opening either 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?

It gives clear positive conditions (keyword/category/area/price/amenity/distance filtering) and points to alternatives: get_listing for full text and list_filters for valid tags and areas. There is no explicit 'when not to use this' beyond the get_listing handoff, so it falls short of a 5.

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