Skip to main content
Glama

Explore homes

open_explorer

Open the published vacation-home browser in ChatGPT. Search by destination, guests and amenities, inspect photos and save homes to the conversation shortlist. Resolve genuinely ambiguous destinations before searching: ask one short location question when the conversation does not establish which place is intended. Never infer the destination country from the user's timezone, language or Chucho's origins. Do not ask for dates or budget just to browse. For informal regions or geographic constraints such as islands, use get_filters to resolve supported regions/localities before displaying homes; a country-wide search can show mainland homes and is not an island search. Keep every displayed card within the requested geography, not only the final recommendation. Use accommodationType=vacation_rental when the traveler specifically wants a self-contained rental rather than a hotel; do not equate an establishment's room count with the size or facilities of an individual unit. For a small place, favor suitable unit layouts over oversized properties and refresh the selected home's facts before recommending it. For a trip's mood, experience or visual preferences, pass the traveler's description as semantic, preserving their meaning and language. Keep destination, guests, bedrooms, pool and supported amenities in their structured filters. q is a literal name/location/text filter: do not duplicate the semantic description into q. Only advertised amenity keys belong in amenities; details without a key, such as pool heating, belong in semantic preferences or requirements according to the traveler's intent. Copy experiential preferences verbatim from semantic into semanticPreferences. Ordinary desired qualities are preferences, not automatically essential requirements. Interpret the full request in context; ask if the distinction would materially change the result. Copy only essential experiential requirements into semanticRequirements as exact case-sensitive substrings of semantic, retaining punctuation and every scope/relationship qualifier. Never rewrite, capitalize or translate those spans. Preserve all essential requirements in every refinement. An empty or inconclusive result does not authorize dropping semanticRequirements, switching to a looser amenity tag, or showing unverified alternatives as matches. When no candidate supports an essential, explain that the search did not establish a match. If returned evidence identifies useful alternatives and the traveler has not ruled them out, show them with render_properties in the same turn, clearly label them as alternatives and explicitly explain the unmet or unconfirmed requirement. Do not ask permission merely to show those alternatives. Do not suggest an alternative is suitable for a safety, access or other need the evidence does not establish. Do not infer proximity or a view from a name alone. If no useful alternative is supported, ask whether the traveler wants to broaden the search. Respect 'near' rather than silently narrowing to one city: use get_stay_areas and search_nearby_properties for nearby catalog discovery. For descriptive matching, resolve nearby locality keys first, then use search_properties with semantic and the same requirements in those localities; nearby search alone cannot verify experiential fit. Never invent coordinates or a radius. Use reassessPropertyIds with semantic to reassess known homes against the current needs. Read the returned evidence, coverage and limitations: similarity alone does not prove a fact, and source-based claims remain attributed. With preferences only, offer the best supported candidates and identify their trade-offs; do not claim that every preference is confirmed. With essentials, recommend only homes with support for every essential. When showing alternatives, the final text must say that no matching home was confirmed and state how the displayed alternatives differ from the essential, even if the cards show those facts. Use explore_nearby when available to inspect surroundings that matter to the choice, using a returned propertyId or exact locality key. Distinguish locality-center distances from distances to a home; missing home pins cannot prove home proximity. Incomplete comparison coverage means no supported match among the assessed candidates, not that the entire destination has no suitable homes. Do not infer availability from matching. If semantic search is unavailable, explain the failure; do not silently substitute a keyword search or relax requirements. Use English or neutral Latin American Spanish (tú).

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "open_explorer"
  }
}

Input Schema

NameRequiredDescriptionDefault
qNoSearch public property names, locations and approved introduction text.
cityNoSpecific destination locality, not a nearby radius. Resolve ambiguous names before choosing a country; use the area tools for nearby discovery.
pageNo
poolNo
placeNoPlace key from the live filter catalog.
boundsNoMap viewport as south,west,north,east in degrees; keeps homes whose public area center is inside it. West greater than east crosses the antimeridian.
guestsNoTotal occupancy, adults plus children. Rentals: minimum sleeping capacity. Boutique hotels: everyone in one room for a one-room quote, priced as adults, with occupancy unconfirmed until that quote succeeds.
localeNoen
regionNoPublished region name. Resolve informal areas such as south of France with get_filters before searching; an invented region label can return no homes.
arrivalNo
countryNoDestination country established by the traveler or unambiguous trip context. Ask before choosing a country for an ambiguous place name.
featureNoCollection key from the filter catalog.
childrenNoHow many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.
currencyNoPreferred ISO 4217 currency, e.g. USD, EUR or NOK. Rough nightly estimates use approximate conversions (USD by default) when a fresh rate is supported; otherwise retain the host currency. Dated quotes depend on host support: always inspect the returned currency. May be supplied without dates for browsing.
semanticNoRank indexed, eligible homes by text and photo similarity. Does not establish hard facts; no lexical fallback when unavailable.
amenitiesNoComma-separated keys from: air-conditioning, wifi, workspace, parking, pets, kitchen, washer, step-free. Every requested key must be explicitly present. Other details (for example pool heating) belong in semantic preferences or requirements, not invented keys.
childAgesNoEach child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.
countriesNoExplicit union of ISO 3166-1 alpha-2 country/territory codes, e.g. [CR, PA]. A home must match one selected country; combines with geographicArea, country and every other filter using AND. Use available codes from get_filters; never silently substitute a narrower country for an area.
departureNo
quoteModeNoOptional price/availability enrichment. exact uses supplied dates and guests; estimate requires estimateWindowStart, estimateWindowEnd, estimateNights and guests for a clearly labeled sample within supplied flexible bounds. Search does not wait for every host or filter unknown homes out.
relatedToNoPublished property ID. Find other homes from its organization, same locality first, then region/country and other locations. Excludes the source property. Additional filters still combine with AND.
minBedroomsNo
minBathroomsNo
organizationNoExact organization slug returned on a property or in get_filters. Restricts results to that organization, across destinations.
estimateNightsNoSample-stay nights, required. Only with quoteMode:estimate.
geographicAreaNoExact geographic area key from get_filters(kind:geography), including continents and subregions. Americas includes North/Central/South America and the Caribbean. north-america includes Northern America, Central America and Caribbean; northern-america is the narrower UN M49 subregion. Filters by public ISO country/territory code; unknown locations never match. Combines with all other filters using AND.
accommodationTypeNoFilter by reviewed accommodation type. Hotel results represent one establishment; guest count requires a quote for one suitable room, never total hotel capacity.
estimateWindowEndNoLatest sample departure (YYYY-MM-DD), paired with estimateWindowStart. Window must fit estimateNights (required), at most 150 days.
estimateWindowStartNoEarliest sample arrival (YYYY-MM-DD), paired with estimateWindowEnd. Only with quoteMode:estimate. Preserve the traveler's flexible month or date range.
reassessPropertyIdsNoUp to four previously discussed public property IDs to reassess against this semantic request alongside fresh matches. Use when refining or comparing earlier suggestions. This reserves comparison slots only: current factual filters, indexed source ownership and every essential requirement still apply. It does not keep an old recommendation or establish fit. Omit for a new search without earlier candidates to reassess.
semanticPreferencesNoIndividual experiential preferences, each copied verbatim from semantic. Interpret the traveler in context: separate requested preferences without adding needs. Keep related words together when they describe one room, view or relationship. These are questions to assess, not property facts; omit for factual-only searches.
semanticRequirementsNoEssential trip requirements, each copied verbatim from semantic with all relationship and provenance qualifiers. Every one must have source-backed support before a home is returned. Preserve these from the conversation; ordinary preferences belong in semanticPreferences. Omit when no essential experiential requirements were stated. Interpret semanticRequirements as conditions the accommodation or its setting must satisfy. Preserve essential support for the traveler's primary activity and access needs, including when expressed indirectly. Preserve the traveler's complete context in semantic. When the traveler states an explicit offering condition together with their own plans, circumstances or reasons, copy the complete offering condition as the essential; do not create an additional standalone proof obligation for the traveler's plan or circumstance. Keep any context necessary to understand the condition, its scope and relationships. Do not broaden a specific access requirement into proof of every aspect of the trip, and do not drop an actual offering condition because it is motivated by a traveler's circumstances. When a circumstance leaves the required accommodation or access condition ambiguous, ask one short clarifying question before searching; do not submit the circumstance itself as a property-proof requirement. If the offering condition itself is ambiguous, clarify it in the real conversation instead of inventing a stricter condition.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / currency / description
      Added value: +"Preferred ISO 4217 currency, e.g. USD, EUR or NOK. Rough nightly estimates use approximate conversions (USD by default) when a fresh rate is supported; otherwise retain the host currency. Dated quotes depend on host support: always inspect the returned currency. May be supplied without dates for browsing."
    • removedInput schema / properties / currency / enum
      Removed value: -[
      -  "USD",
      -  "EUR",
      -  "GBP",
      -  "CRC",
      -  "MXN",
      -  "COP",
      -  "PEN",
      -  "BRL",
      -  "AUD",
      -  "NZD"
      -]
    • addedInput schema / properties / currency / pattern
      Added value: +"^[A-Z]{3}$"
  2. Changed1 schema field changed
    • changedInput schema / properties / currency / enum
      Previous value: -[
      -  "USD",
      -  "EUR",
      -  "GBP",
      -  "CRC",
      -  "MXN",
      -  "COP",
      -  "PEN",
      -  "BRL",
      -  "AUD"
      -]New value: +[
      +  "USD",
      +  "EUR",
      +  "GBP",
      +  "CRC",
      +  "MXN",
      +  "COP",
      +  "PEN",
      +  "BRL",
      +  "AUD",
      +  "NZD"
      +]
  3. Changed3 schema fields changed
    • addedInput schema / properties / childAges
      Added value: +{
      +  "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      +  "items": {
      +    "maximum": 17,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  "maxItems": 199,
      +  "type": "array"
      +}
    • addedInput schema / properties / children
      Added value: +{
      +  "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      +  "maximum": 199,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedInput schema / properties / guests / description
      Previous value: -"Rental minimum sleeping capacity; for boutique hotels, actual adults for a one-room quote, with occupancy unconfirmed until that quote succeeds."New value: +"Total occupancy, adults plus children. Rentals: minimum sleeping capacity. Boutique hotels: everyone in one room for a one-room quote, priced as adults, with occupancy unconfirmed until that quote succeeds."
  4. Changed4 schema fields changed
    • changedInput schema / properties / amenities / description
      Previous value: -"Comma-separated amenity keys; every requested amenity must be explicitly present."New value: +"Comma-separated keys from: air-conditioning, wifi, workspace, parking, pets, kitchen, washer, step-free. Every requested key must be explicitly present. Other details (for example pool heating) belong in semantic preferences or requirements, not invented keys."
    • addedInput schema / properties / city / description
      Added value: +"Specific destination locality, not a nearby radius. Resolve ambiguous names before choosing a country; use the area tools for nearby discovery."
    • addedInput schema / properties / country / description
      Added value: +"Destination country established by the traveler or unambiguous trip context. Ask before choosing a country for an ambiguous place name."
    • addedInput schema / properties / region / description
      Added value: +"Published region name. Resolve informal areas such as south of France with get_filters before searching; an invented region label can return no homes."
  5. Changed4 schema fields changed
    • addedInput schema / properties / accommodationType
      Added value: +{
      +  "default": "",
      +  "description": "Filter by reviewed accommodation type. Hotel results represent one establishment; guest count requires a quote for one suitable room, never total hotel capacity.",
      +  "enum": [
      +    "",
      +    "vacation_rental",
      +    "boutique_hotel"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / countries
      Added value: +{
      +  "default": [],
      +  "description": "Explicit union of ISO 3166-1 alpha-2 country/territory codes, e.g. [CR, PA]. A home must match one selected country; combines with geographicArea, country and every other filter using AND. Use available codes from get_filters; never silently substitute a narrower country for an area.",
      +  "items": {
      +    "pattern": "^[A-Z]{2}$",
      +    "type": "string"
      +  },
      +  "maxItems": 249,
      +  "type": "array"
      +}
    • addedInput schema / properties / geographicArea
      Added value: +{
      +  "default": "",
      +  "description": "Exact geographic area key from get_filters(kind:geography), including continents and subregions. Americas includes North/Central/South America and the Caribbean. north-america includes Northern America, Central America and Caribbean; northern-america is the narrower UN M49 subregion. Filters by public ISO country/territory code; unknown locations never match. Combines with all other filters using AND.",
      +  "enum": [
      +    "",
      +    "africa",
      +    "northern-africa",
      +    "sub-saharan-africa",
      +    "eastern-africa",
      +    "middle-africa",
      +    "southern-africa",
      +    "western-africa",
      +    "americas",
      +    "latin-america-and-the-caribbean",
      +    "caribbean",
      +    "central-america",
      +    "south-america",
      +    "northern-america",
      +    "asia",
      +    "central-asia",
      +    "eastern-asia",
      +    "south-eastern-asia",
      +    "southern-asia",
      +    "western-asia",
      +    "europe",
      +    "eastern-europe",
      +    "northern-europe",
      +    "southern-europe",
      +    "western-europe",
      +    "oceania",
      +    "australia-and-new-zealand",
      +    "melanesia",
      +    "micronesia",
      +    "polynesia",
      +    "north-america"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / guests / description
      Previous value: -"Minimum sleeping capacity; required actual party size when requesting quote enrichment."New value: +"Rental minimum sleeping capacity; for boutique hotels, actual adults for a one-room quote, with occupancy unconfirmed until that quote succeeds."
  6. Changed4 schema fields changed
    • addedInput schema / properties / reassessPropertyIds
      Added value: +{
      +  "description": "Up to four previously discussed public property IDs to reassess against this semantic request alongside fresh matches. Use when refining or comparing earlier suggestions. This reserves comparison slots only: current factual filters, indexed source ownership and every essential requirement still apply. It does not keep an old recommendation or establish fit. Omit for a new search without earlier candidates to reassess.",
      +  "items": {
      +    "maxLength": 160,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / semantic
      Added value: +{
      +  "description": "Rank indexed, eligible homes by text and photo similarity. Does not establish hard facts; no lexical fallback when unavailable.",
      +  "maxLength": 4000,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / semanticPreferences
      Added value: +{
      +  "description": "Individual experiential preferences, each copied verbatim from semantic. Interpret the traveler in context: separate requested preferences without adding needs. Keep related words together when they describe one room, view or relationship. These are questions to assess, not property facts; omit for factual-only searches.",
      +  "items": {
      +    "maxLength": 350,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 8,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / semanticRequirements
      Added value: +{
      +  "description": "Essential trip requirements, each copied verbatim from semantic with all relationship and provenance qualifiers. Every one must have source-backed support before a home is returned. Preserve these from the conversation; ordinary preferences belong in semanticPreferences. Omit when no essential experiential requirements were stated. Interpret semanticRequirements as conditions the accommodation or its setting must satisfy. Preserve essential support for the traveler's primary activity and access needs, including when expressed indirectly. Preserve the traveler's complete context in semantic. When the traveler states an explicit offering condition together with their own plans, circumstances or reasons, copy the complete offering condition as the essential; do not create an additional standalone proof obligation for the traveler's plan or circumstance. Keep any context necessary to understand the condition, its scope and relationships. Do not broaden a specific access requirement into proof of every aspect of the trip, and do not drop an actual offering condition because it is motivated by a traveler's circumstances. When a circumstance leaves the required accommodation or access condition ambiguous, ask one short clarifying question before searching; do not submit the circumstance itself as a property-proof requirement. If the offering condition itself is ambiguous, clarify it in the real conversation instead of inventing a stricter condition.",
      +  "items": {
      +    "maxLength": 350,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 8,
      +  "minItems": 1,
      +  "type": "array"
      +}
  7. Changed1 schema field changed
    • changedInput schema / properties / currency / enum
      Previous value: -[
      -  "USD",
      -  "EUR",
      -  "GBP",
      -  "CRC",
      -  "MXN",
      -  "COP",
      -  "PEN",
      -  "BRL"
      -]New value: +[
      +  "USD",
      +  "EUR",
      +  "GBP",
      +  "CRC",
      +  "MXN",
      +  "COP",
      +  "PEN",
      +  "BRL",
      +  "AUD"
      +]
  8. Changed5 schema fields changed
    • changedInput schema / properties / estimateNights / description
      Previous value: -"Sample-stay nights, default 7. Only with quoteMode:estimate."New value: +"Sample-stay nights, required. Only with quoteMode:estimate."
    • addedInput schema / properties / estimateWindowEnd
      Added value: +{
      +  "description": "Latest sample departure (YYYY-MM-DD), paired with estimateWindowStart. Window must fit estimateNights (required), at most 150 days.",
      +  "format": "date",
      +  "pattern": "^(?:(?:\\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])))$",
      +  "type": "string"
      +}
    • addedInput schema / properties / estimateWindowStart
      Added value: +{
      +  "description": "Earliest sample arrival (YYYY-MM-DD), paired with estimateWindowEnd. Only with quoteMode:estimate. Preserve the traveler's flexible month or date range.",
      +  "format": "date",
      +  "pattern": "^(?:(?:\\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])))$",
      +  "type": "string"
      +}
    • changedInput schema / properties / guests / description
      Previous value: -"Minimum sleeping capacity."New value: +"Minimum sleeping capacity; required actual party size when requesting quote enrichment."
    • changedInput schema / properties / quoteMode / description
      Previous value: -"Optional price/availability enrichment. exact uses supplied dates and guests; estimate uses a clearly labeled future sample stay. Search does not wait for every host or filter unknown homes out."New value: +"Optional price/availability enrichment. exact uses supplied dates and guests; estimate requires estimateWindowStart, estimateWindowEnd, estimateNights and guests for a clearly labeled sample within supplied flexible bounds. Search does not wait for every host or filter unknown homes out."
  9. Changed5 schema fields changed
    • addedInput schema / properties / arrival
      Added value: +{
      +  "format": "date",
      +  "pattern": "^(?:(?:\\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])))$",
      +  "type": "string"
      +}
    • addedInput schema / properties / currency
      Added value: +{
      +  "enum": [
      +    "USD",
      +    "EUR",
      +    "GBP",
      +    "CRC",
      +    "MXN",
      +    "COP",
      +    "PEN",
      +    "BRL"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / departure
      Added value: +{
      +  "format": "date",
      +  "pattern": "^(?:(?:\\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])))$",
      +  "type": "string"
      +}
    • addedInput schema / properties / estimateNights
      Added value: +{
      +  "description": "Sample-stay nights, default 7. Only with quoteMode:estimate.",
      +  "maximum": 30,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / quoteMode
      Added value: +{
      +  "description": "Optional price/availability enrichment. exact uses supplied dates and guests; estimate uses a clearly labeled future sample stay. Search does not wait for every host or filter unknown homes out.",
      +  "enum": [
      +    "exact",
      +    "estimate"
      +  ],
      +  "type": "string"
      +}
  10. Changed2 schema fields changed
    • addedInput schema / properties / organization
      Added value: +{
      +  "default": "",
      +  "description": "Exact organization slug returned on a property or in get_filters. Restricts results to that organization, across destinations.",
      +  "maxLength": 160,
      +  "type": "string"
      +}
    • addedInput schema / properties / relatedTo
      Added value: +{
      +  "default": "",
      +  "description": "Published property ID. Find other homes from its organization, same locality first, then region/country and other locations. Excludes the source property. Additional filters still combine with AND.",
      +  "maxLength": 160,
      +  "type": "string"
      +}
  11. Changed1 schema field changed
    • addedInput schema / properties / bounds
      Added value: +{
      +  "default": "",
      +  "description": "Map viewport as south,west,north,east in degrees; keeps homes whose public area center is inside it. West greater than east crosses the antimeridian.",
      +  "maxLength": 80,
      +  "pattern": "^$|^-?\\d{1,3}(\\.\\d{1,6})?(,-?\\d{1,3}(\\.\\d{1,6})?){3}$",
      +  "type": "string"
      +}
  12. Added

TDQS

A4.2/5.0
Behavior4/5

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

Goes well beyond the annotations: it discloses that an empty result does not authorize relaxing requirements, that semantic search has no lexical fallback, that similarity is not proof of a fact, and how incomplete comparison coverage should be reported. The 'save homes to the shortlist' behavior is consistent with readOnlyHint=false. It stops short of describing what the returned cards/evidence actually contain or pagination behavior.

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

Conciseness2/5

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

Front-loaded purpose is fine, but the body is a dense, unstructured wall of policy with repeated restatements about semanticRequirements, verbatim copying, and alternatives that could be consolidated into a few rules. Every rule is arguably relevant, yet the length and lack of grouping make it hard for an agent to parse deterministically.

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?

Given 32 parameters and no output schema, the description covers decision policy, failure handling, and evidence interpretation thoroughly. The main gap is return-value shape — what the browser surfaces (cards, coverage metadata, pagination) — which an agent must discover empirically.

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

Parameters5/5

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

Adds substantial meaning on top of a 78%-covered schema: it routes the traveler's words into the right parameter (structured filters for destination/guests/bedrooms/pool/amenities, semantic for mood, q as a literal text filter, semanticPreferences vs semanticRequirements, verbatim case-sensitive substrings). It also explains accommodationType=vacation_rental selection and that room count is not unit size.

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

Purpose4/5

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

Opens with a specific verb and resource: 'Open the published vacation-home browser' plus what can be done inside it (search by destination/guests/amenities, inspect photos, save to shortlist). It names related helpers (get_filters, render_properties, search_nearby_properties) but never states plainly how this differs from the sibling search_properties, since most of the text is search policy that could apply to either.

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

Usage Guidelines5/5

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

Explicit when-to-use and when-not rules throughout: ask one short location question for ambiguous destinations, never infer country from timezone/language, do not ask for dates or budget just to browse, use get_filters for informal regions, use get_stay_areas/search_nearby_properties for 'near', use reassessPropertyIds for known homes. Alternatives and preconditions are named rather than implied.

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