BangkokVacay Directory
Search curated Bangkok, Thailand tours, activities, hotels, restaurants, nightlife and services.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"bangkokvacay-directory": {
"url": "https://bangkokvacay-connector.michael-b38.workers.dev/mcp"
}
}
}Remote endpoints
https://bangkokvacay-connector.michael-b38.workers.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢search_listings(q, category, area, price_tier, amenities, ...)
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
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Keywords, e.g. 'rooftop bar', 'temple', 'tasting menu'"
},
"category": {
"type": "string",
"description": "Category name or id from list_categories, e.g. 'Hotels'"
},
"area": {
"type": "string",
"description": "Area/neighborhood, e.g. 'Pathum Wan', 'Sukhumvit', 'Riverside', 'Bang Rak'. See list_filters."
},
"price_tier": {
"type": "string",
"enum": [
"budget",
"moderate",
"upscale",
"luxury"
]
},
"amenities": {
"type": "array",
"items": {
"type": "string",
"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"
]
},
"description": "All must match"
},
"tag": {
"type": "string",
"description": "Exact listing tag, see list_filters"
},
"near_lat": {
"type": "number"
},
"near_lng": {
"type": "number"
},
"near_listing_id": {
"type": "string",
"description": "Rank by distance from this listing"
},
"radius_km": {
"type": "number",
"description": "Max distance (km) when near_* is set"
},
"has_booking_link": {
"type": "boolean",
"description": "Only listings with a booking link"
},
"check_in": {
"type": "string",
"description": "YYYY-MM-DD (hotels)"
},
"check_out": {
"type": "string",
"description": "YYYY-MM-DD"
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 14,
"default": 2
},
"sort": {
"type": "string",
"enum": [
"relevance",
"distance",
"name"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10
},
"page": {
"type": "integer",
"minimum": 1,
"default": 1
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"total": {
"type": "integer"
},
"page": {
"type": "integer"
},
"per_page": {
"type": "integer"
},
"returned": {
"type": "integer"
},
"has_more": {
"type": "boolean"
},
"affiliate_disclosure": {
"type": "string"
},
"data_fetched_at": {
"type": "string"
},
"listings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"url": {
"type": [
"string",
"null"
],
"description": "Listing page on bangkokvacay.com"
},
"category": {
"type": [
"string",
"null"
]
},
"area": {
"type": [
"string",
"null"
]
},
"price_tier": {
"type": [
"string",
"null"
]
},
"amenities": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"description": {
"type": "string",
"description": "Plain text"
},
"address": {
"type": [
"string",
"null"
]
},
"lat": {
"type": [
"number",
"null"
]
},
"lon": {
"type": [
"number",
"null"
]
},
"phone": {
"type": [
"string",
"null"
]
},
"website": {
"type": [
"string",
"null"
]
},
"booking_link": {
"type": [
"string",
"null"
],
"description": "First affiliate booking link, if any"
},
"booking": {
"type": "array",
"items": {
"type": "object",
"properties": {
"provider": {
"type": "string"
},
"label": {
"type": "string"
},
"url": {
"type": "string"
},
"affiliate": {
"type": "boolean"
}
}
}
},
"photos": {
"type": "array",
"items": {
"type": "string"
}
},
"photo_details": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"caption": {
"type": [
"string",
"null"
]
},
"credit": {
"type": "string"
},
"source": {
"type": "string"
}
}
}
},
"distance_km": {
"type": "number"
}
},
"required": [
"id",
"name"
]
}
}
},
"required": [
"status",
"total",
"listings"
]
}🟢get_listing(id, check_in, check_out, adults)
Read-only. Full details for one BangkokVacay listing by id: complete plain-text description, FAQ, hours, up to 10 gallery photos with captions and credits (e.g. 'Photo via Expedia'), listing page URL, and booking links (the path to book with the named provider, not ads). Links marked affiliate:true are affiliate links; BangkokVacay may earn a commission at no extra cost to the user. Returns NOT_FOUND for an unknown id.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Listing id from search_listings"
},
"check_in": {
"type": "string"
},
"check_out": {
"type": "string"
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 14
}
},
"required": [
"id"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"affiliate_disclosure": {
"type": "string"
},
"listing": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"url": {
"type": [
"string",
"null"
],
"description": "Listing page on bangkokvacay.com"
},
"category": {
"type": [
"string",
"null"
]
},
"area": {
"type": [
"string",
"null"
]
},
"price_tier": {
"type": [
"string",
"null"
]
},
"amenities": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"description": {
"type": "string",
"description": "Plain text"
},
"address": {
"type": [
"string",
"null"
]
},
"lat": {
"type": [
"number",
"null"
]
},
"lon": {
"type": [
"number",
"null"
]
},
"phone": {
"type": [
"string",
"null"
]
},
"website": {
"type": [
"string",
"null"
]
},
"booking_link": {
"type": [
"string",
"null"
],
"description": "First affiliate booking link, if any"
},
"booking": {
"type": "array",
"items": {
"type": "object",
"properties": {
"provider": {
"type": "string"
},
"label": {
"type": "string"
},
"url": {
"type": "string"
},
"affiliate": {
"type": "boolean"
}
}
}
},
"photos": {
"type": "array",
"items": {
"type": "string"
}
},
"photo_details": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"caption": {
"type": [
"string",
"null"
]
},
"credit": {
"type": "string"
},
"source": {
"type": "string"
}
}
}
},
"distance_km": {
"type": "number"
}
},
"required": [
"id",
"name"
]
}
},
"required": [
"status",
"listing"
]
}🟢list_categories
Read-only. List the BangkokVacay directory's top-level categories with listing counts.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"total": {
"type": "integer"
},
"categories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": [
"string",
"null"
],
"description": "Category id; null for categories that exist only as listing group names (filter by name instead)"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"listing_count": {
"type": "integer"
}
}
}
}
},
"required": [
"status",
"categories"
]
}🟢list_filters
Read-only. Values usable in search_listings: areas/neighborhoods, price tiers, amenities and tags, each with listing counts, plus notes on how each is derived.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"areas": {
"type": "array"
},
"price_tiers": {
"type": "array"
},
"amenities": {
"type": "array"
},
"tags": {
"type": "array"
}
},
"required": [
"status"
]
}🟢search_tours(q, start_date, end_date, max_price, min_rating, ...)
Read-only. Live search of bookable tours and activities in Bangkok, Thailand from Viator's partner API. Returns title, live starting ('from') price and currency, rating, review count, duration, free-cancellation flag, image and a booking_url. Optional start_date/end_date return only products Viator lists as available on those dates. Default order: keyword relevance when q is given, otherwise traveler rating; 'featured' uses Viator's own default order. booking_url is the Viator booking page and a Viator affiliate link: BangkokVacay may earn a commission if the user books, at no extra cost to them. Viator confirms the final price, availability and cancellation terms before payment.
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Keywords, e.g. 'floating market', 'food tour', 'Ayutthaya'"
},
"start_date": {
"type": "string",
"description": "YYYY-MM-DD"
},
"end_date": {
"type": "string",
"description": "YYYY-MM-DD"
},
"max_price": {
"type": "number"
},
"min_rating": {
"type": "number",
"minimum": 0,
"maximum": 5
},
"free_cancellation": {
"type": "boolean"
},
"sort": {
"type": "string",
"enum": [
"relevance",
"rating",
"price_low",
"price_high",
"featured"
],
"description": "Default: relevance to q when q is given (Viator keyword match), otherwise rating (highest traveler rating first). featured = Viator's own default order."
},
"currency": {
"type": "string",
"enum": [
"USD",
"EUR",
"GBP",
"CAD",
"AUD",
"THB"
],
"default": "USD"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 5
},
"page": {
"type": "integer",
"minimum": 1,
"default": 1
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"total": {
"type": "integer"
},
"prices_checked_at": {
"type": "string"
},
"affiliate_disclosure": {
"type": "string"
},
"tours": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product_code": {
"type": "string"
},
"title": {
"type": "string"
},
"from_price": {
"type": "number"
},
"currency": {
"type": "string"
},
"rating": {
"type": [
"number",
"null"
]
},
"review_count": {
"type": "integer"
},
"booking_url": {
"type": "string"
},
"affiliate": {
"type": "boolean"
}
}
}
}
},
"required": [
"status",
"tours"
]
}Community
Evidence