Skip to main content
Glama

Search BangkokVacay listings

search_listings
Read-onlyIdempotent

Search BangkokVacay's curated directory of Bangkok, Thailand businesses (hotels, restaurants, bars, activities, attractions, shops and services). Read-only. Filters: keyword, category, area/neighborhood, price tier, amenities (e.g. pool, spa, river_view, rooftop, michelin), 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 BangkokVacay 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. 'rooftop bar', 'temple', 'tasting menu'
tagNoExact listing tag, see list_filters
areaNoArea/neighborhood, e.g. 'Pathum Wan', 'Sukhumvit', 'Riverside', 'Bang Rak'. 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. 'Pathum Wan', 'Sukhumvit', 'Riverside', 'Bang Rak'. 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. 'temple' or 'rooftop'"New value: +"Keywords, e.g. 'rooftop bar', 'temple', 'tasting menu'"
    • 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 bangkokvacay.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?

Beyond the readOnly/idempotent annotations, it discloses genuinely useful behavior: booking links are provider paths, not ads; affiliate:true marks commission links; BangkokVacay may earn a commission at no extra cost; results are not commission-ranked; and live rates appear on Expedia, not in the result. This is exactly the kind of non-obvious context an agent needs.

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 purpose and filters before the return-format and booking-link disclosures. The affiliate/commission explanation runs a bit long, but each sentence carries decision-relevant information, so waste is minimal.

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-param search tool, the description covers purpose, filter surface, return shape, sibling routing, and the booking/affiliate caveats. With an output schema present it needn't detail return fields, yet it still summarizes them usefully, leaving no gap that would cause a mis-call.

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 59% schema coverage across 17 params, the description compensates by naming the filter dimensions (keyword, category, area, price tier, amenities with examples, tag, distance from lat/lng or another listing) and the check_in/check_out date-link behavior. It leaves page/sort/limit/adults/has_booking_link semantics to the schema, which is acceptable but not exhaustive.

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 a well-scoped resource (BangkokVacay's curated Bangkok business directory), enumerating the covered verticals. It also names the sibling relationship, pointing to get_listing for full text, so an agent can distinguish it from adjacent tools without opening schemas.

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?

Clearly frames when to use it (directory search across multiple filter dimensions) and when to escalate to get_listing for full text, hours and FAQ. It doesn't explicitly contrast with search_tours or explain when list_filters/list_categories should precede it, so it stops short of full when/when-not coverage.

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