Hotel & Vacation Rental MCP - live prices & reviews across Booking, Airbnb, Vrbo & Google Hotels
Server Details
Search hotels & rentals: live prices & reviews across Booking.com, Airbnb, Vrbo & Google Hotels.
- Status
- Healthy
- Uptime
- 99.9% over 68 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- stayingapi/hotel-vacation-rental-mcp
- GitHub Stars
- 0
- Server Listing
- com.stayingapi/hotel-vacation-rental-mcp
TDQS
Scored across 7 tools
Each tool targets a distinct operation: discovery (search_stays), single-listing detail (get_listing), single-listing pricing (get_price), day-by-day availability (check_availability), cross-OTA comparison (compare_prices), reviews (get_reviews), and async job polling (get_job). The main friction is the price/availability cluster — search_stays already embeds prices, and get_price vs check_availability vs compare_prices require reading descriptions carefully to pick correctly. Descriptions do explicitly disambiguate (e.g. totalPrice guidance, known-vs-resolved listings), so it stays workable.
All seven tools follow a clean snake_case verb_noun convention (get_*, search_*, check_*, compare_*), with get_ used consistently for single-resource fetches. No camelCase or stylistic mixing anywhere in the set.
Seven tools is well within the ideal 3-15 range and every tool maps to a distinct step in the search → inspect → price → compare → review workflow. Nothing appears redundant or padded, and get_job exists only because async scraping genuinely needs polling.
The surface covers the full read-only research lifecycle: discovery, detail, pricing, availability, cross-OTA comparison, reviews, plus async job retrieval. Minor gaps remain — there is no location/autocomplete resolver for ambiguous place names (compare_prices leans on Google resolution), and review retrieval is capped at one page per call with no job-based bulk export.
Available Tools
7 toolscheck_availabilityCheck listing availabilityARead-onlyIdempotentInspect
Day-by-day availability for known listing(s) on one platform over a date range.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A listing URL (alternative to listingId). For Vrbo, use the url from search_stays (it carries expediaPropertyId=). | |
| country | No | ISO-3166 alpha-2 country hint (booking) — pass the search result location.country with a bare booking.com slug. | |
| endDate | No | Window end, YYYY-MM-DD. | |
| platform | Yes | The platform the listing belongs to. | |
| listingId | No | A single listing id: the platformListingId from search_stays. For Vrbo this is required — the number in a vrbo.com address is a different id and is rejected. | |
| startDate | No | Window start, YYYY-MM-DD. | |
| listingIds | No | Multiple listing ids (same rule as listingId). Airbnb: ONE listing per call (call once per listing). Vrbo: at most 12 per call; split larger batches. Vrbo answers rentals only (hotel-type listings return no dates). | |
| onlyAvailable | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds the day-by-day granularity and single-platform constraint, but says nothing about rate limits, failure behavior for invalid ids, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every clause (day-by-day, known listings, one platform, date range) constrains the call meaningfully.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, multi-platform tool with no output schema and platform-specific edge cases handled only in the schema, the description is thin: it omits the search-then-check workflow and any notion of what a result looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema itself carries the parameter meaning, including the platform-specific rules for listingIds. The description only echoes 'known listing(s)' and 'one platform', adding no syntax or format detail beyond the schema, matching the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Day-by-day availability') with scope qualifiers (known listing(s), one platform, date range). The word 'known' implicitly routes discovery to search_stays, but it never names that sibling, so differentiation is partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Known listing(s)' implies this runs after a search and not for discovery, which is a useful hint. However, it never states the alternative explicitly (search_stays) nor the prerequisite that listingId/platformListingId must come from a prior search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_pricesCompare prices across OTAsARead-onlyIdempotentInspect
Cross-OTA price comparison for one property. Either let Google resolve it (name / location / googleHotelId), or pass listings=[platform:listingId, …] for listings you already know are the same property and we price each one directly and compare them ourselves. Returns offers + min/median. Fee coverage differs per platform — compare on totalPrice.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | GOOGLE MODE: property name. | |
| adults | No | Number of adults (default 2). | |
| checkIn | No | ||
| checkOut | No | ||
| children | No | Number of children (default 0). | |
| currency | No | ||
| listings | No | DIRECT MODE: 2-6 "platform:listingId" pairs for the same property (e.g. "booking:co/casa-de-alba"). Billed as the sum of the per-platform price legs. Mutually exclusive with name/location/googleHotelId. | |
| location | No | ||
| childAges | No | Ages (0–17) of each child; length must equal `children`. | |
| googleHotelId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive safety, and the description adds valuable behavioral context beyond that: 'Returns offers + min/median' discloses the output shape, and 'Fee coverage differs per platform — compare on totalPrice' warns about a cross-platform inconsistency. It also explains that the tool either resolves via Google or prices provided listings directly, which is a notable operational behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and approximately 60 words. The first sentence is a crisp purpose statement, and the second packs mode guidance, output summary, and a key caveat without redundancy. It is front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 10 parameters, no output schema, and two modes, but the description covers the essential context: purpose, mode selection, return values, and an important fee-cover caveat. It doesn't enumerate every parameter (schema partially does), and it omits details like input validation/error behavior, but for a comparison tool this is a strong, nearly complete description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% schema description coverage, the description compensates by mapping parameters to modes: name/location/googleHotelId are grouped as the Google-resolve path, and listings is explained with format examples ('platform:listingId'). It also clarifies that listings mode is for known-same properties and adds the totalPrice comparison caveat. However, it leaves checkIn/checkOut/currency semantics to the schema (which lacks descriptions for them), so it doesn't fully complete the parameter picture.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Cross-OTA price comparison for one property,' a specific verb+resource statement that clearly distinguishes this from siblings like get_price (single price) and check_availability. It further details two distinct operational modes (Google-resolved vs. direct listings), leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on choosing between the two modes: 'Either let Google resolve it (name / location / googleHotelId), or pass listings=...' and clarifies when direct listings are appropriate ('for listings you already know are the same property'). It also advises on interpreting results ('compare on totalPrice'), but it does not explicitly reference sibling tools or state when to prefer this over get_price/check_availability, so it misses the top bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobCheck an async jobARead-onlyIdempotentInspect
Poll status and fetch results of an async scrape job. Costs 0 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | The job id returned by an async tool call, e.g. job_… |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds 'Costs 0 credits', which is useful operational context. It also explains the polling nature, but does not go into error handling or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every word adds value. There is no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter tool with strong annotations and no output schema. The description covers the purpose and adds cost information, which is sufficient for the tool's complexity. It does not describe return values, but that is not strictly required for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for jobId with a clear description, so the baseline is 3. The description does not add any additional semantic meaning to the parameter beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs 'Poll status and fetch results' and identifies the resource as 'an async scrape job'. This clearly distinguishes it from sibling tools like get_price or search_stays, which are all about stay data rather than job status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after an async job is initiated, and the title 'Check an async job' reinforces this. It does not explicitly state when not to use it or mention alternatives, but the unique purpose among siblings makes the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listingGet listing detailsARead-onlyIdempotentInspect
Full detail (amenities, photos, host, ratings) for one listing; optional live price for dates.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The platform listing id. | |
| adults | No | Number of adults (default 2). | |
| checkIn | No | ||
| country | No | ISO-3166 alpha-2 country hint (booking) — disambiguates a bare booking.com slug. | |
| checkOut | No | ||
| children | No | Number of children (default 0). | |
| currency | No | ||
| platform | Yes | ||
| childAges | No | Ages (0–17) of each child; length must equal `children`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: 'optional live price for dates' indicates date-sensitive pricing behavior, and listing the included fields gives insight into the response content beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence that front-loads the core purpose and lists content. No filler or repetition; every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema, the description is reasonably complete: it names the return categories and the optional live-price feature. It does not explain all parameters or edge cases, but the schema covers many, and annotations provide safety context. Could be more explicit about when pricing is returned, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 56%, and the description adds value by tying date parameters to 'optional live price for dates'. However, it does not explain other undocumented parameters like currency or checkIn/checkOut formats, nor does it clarify the platform enum values. The description partially compensates for schema gaps but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource: fetch full detail for one listing, listing specific content (amenities, photos, host, ratings). It distinguishes from siblings like get_price (price-focused), get_reviews (reviews-only), and search_stays (search) by emphasizing the comprehensive single-listing scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use when you need full details for a specific listing, not for searching. However, it does not explicitly name alternatives or exclusions (e.g., 'for price only, use get_price'). The context signal of sibling tools helps but the description itself does not provide direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_priceGet a price quoteCRead-onlyIdempotentInspect
Price quote for one listing for specific dates + occupancy.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | Number of adults (default 2). | |
| checkIn | No | ||
| country | No | ISO-3166 alpha-2 country hint (booking) — pass the search result location.country with a bare booking.com slug. | |
| checkOut | No | ||
| children | No | Number of children (default 0). | |
| currency | No | ||
| platform | Yes | ||
| childAges | No | Ages (0–17) of each child; length must equal `children`. | |
| listingId | Yes | The listing id: the platformListingId from search_stays (most reliable). Vrbo also accepts a vrbo.com listing code, but it needs a provider-side translation that can be rate limited. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds almost nothing beyond that — no note on quote freshness, expiry, rate limits, or volatility of pricing, which are the behavioral traits that actually matter for a pricing call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single telegraphic fragment with zero padding, so nothing is wasted. However, for a 9-parameter pricing tool the brevity crosses into under-specification rather than tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, two required, no output schema, and only 56% schema coverage, the description is far too thin. An agent cannot tell from it that dates are effectively mandatory for a meaningful quote, nor what the response contains or how pricing is scoped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 56%, leaving checkIn, checkOut, currency, and platform undocumented. The description only vaguely gestures at 'specific dates + occupancy' and supplies no date format, currency convention, or explanation of how occupancy fields interact, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb+resource (price quote) and scopes it to a single listing, with the two dimensions that drive the result (dates and occupancy) named upfront. It is clearly separable from siblings like compare_prices and check_availability, though it never names an alternative directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or alternative routing guidance. An agent must infer that this is the single-listing price lookup versus compare_prices purely from the tool name and the phrase 'for one listing'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reviewsGet listing reviewsBRead-onlyIdempotentInspect
Normalized reviews for one listing on one platform. One call returns one page (up to limit, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| sort | No | ||
| limit | No | ||
| country | No | ISO-3166 alpha-2 country hint (booking) — pass the search result location.country with a bare booking.com slug. | |
| language | No | ISO-639-1 code. | |
| platform | Yes | ||
| listingId | No | ||
| minRating | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent and openWorld, so the description's job is to add pagination semantics — and it does, disclosing that one call returns one page and cap is 100 (a constraint the schema's `limit` does not encode). It stops short of explaining how to advance to the next page, which matters given no cursor/offset parameter exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what is returned and immediately followed by the paging constraint. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with 25% schema coverage and no output schema, the description omits how to identify a listing (url vs listingId vs platform), how to iterate pages, and what a normalized review contains. It answers the paging-size question but leaves most invocation-critical detail to guesswork.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% across 8 params, so the description carries heavy burden, yet it clarifies only the effective limit cap. It never explains the url-vs-listingId relationship, sort enum effects, minRating, or the booking-specific country hint — all of which remain ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Normalized reviews') and narrows scope to 'one listing on one platform', which is more precise than the title. It is clearly distinct from siblings like get_listing or get_price, but never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the tool fetches reviews for a given listing+platform, so an agent can infer it needs an identifier. There is no explicit when-to-use / when-not-to-use guidance, no mention of prerequisites (listingId vs url, country hint for booking), and no routing versus get_listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_staysSearch stays across platformsARead-onlyIdempotentInspect
Discover properties by location, dates, occupancy, and filters across Vrbo, Booking, Airbnb, and Google Hotels; returns normalized listings with embedded prices when dates are supplied.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| limit | No | 1–40 (default 10) results per platform. One call returns one page; search does not paginate. | |
| rooms | No | ||
| adults | No | Number of adults (default 2). | |
| checkIn | No | Check-in date, YYYY-MM-DD. | |
| checkOut | No | Check-out date, YYYY-MM-DD. | |
| children | No | Number of children (default 0). | |
| currency | No | ISO-4217 code (default USD). | |
| location | No | City or address, e.g. "Brighton, United Kingdom". Required. Coordinates are not accepted (free 400). | |
| priceMax | No | ||
| priceMin | No | ||
| amenities | No | Canonical amenity tokens, e.g. "pool". | |
| childAges | No | Ages (0–17) of each child; length must equal `children`. | |
| platforms | No | Subset of airbnb/booking/vrbo/google. | |
| minBedrooms | No | ||
| propertyType | No | hotel/apartment/house/villa/cottage/other. | |
| minGuestRating | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety bar is low. The description still adds real value by describing the return shape (normalized listings across platforms) and the conditional price embedding when dates are given, which matters because no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the primary action comes first and the return-shape qualifier follows after the semicolon.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter, no-output-schema tool, the description covers the search dimensions and explicitly states what comes back, closing the biggest gap. What remains missing is sibling routing and any note that results are per-platform and paginated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 65% schema description coverage across 17 parameters, the schema carries most of the semantics (defaults, enum values, date formats, child-age coupling). The description only names the high-level filter dimensions (location, dates, occupancy, filters) without adding syntax or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Discover) and resource (properties/stays) plus the four upstream platforms it federates over, which is concrete and readable. It does not, however, distinguish itself from siblings like compare_prices, check_availability, or get_listing, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to prefer this over the six sibling tools, nor any exclusions or prerequisites. The only conditional hint is that prices appear when dates are supplied, which is behavioral rather than a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_reviews1 field changed- removed
Input schema / properties / cursorRemoved value: -{ - "type": "string" -}
- Changed
search_stays3 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "type": "string" -} - changed
Input schema / properties / limit / descriptionPrevious value: -"1–40 (default 10)."New value: +"1–40 (default 10) results per platform. One call returns one page; search does not paginate." - changed
Input schema / properties / location / descriptionPrevious value: -"City, address, or \"lat,lng\". Required."New value: +"City or address, e.g. \"Brighton, United Kingdom\". Required. Coordinates are not accepted (free 400)."
2 tool updates
- Changed
check_availability1 field changed- changed
Input schema / properties / listingIds / descriptionPrevious value: -"Multiple listing ids (same rule as listingId). Vrbo: at most 12 per call; split larger batches. Vrbo answers rentals only (hotel-type listings return no dates)."New value: +"Multiple listing ids (same rule as listingId). Airbnb: ONE listing per call (call once per listing). Vrbo: at most 12 per call; split larger batches. Vrbo answers rentals only (hotel-type listings return no dates)."
- Changed
get_price1 field changed- added
Input schema / properties / listingId / descriptionAdded value: +"The listing id: the platformListingId from search_stays (most reliable). Vrbo also accepts a vrbo.com listing code, but it needs a provider-side translation that can be rate limited."
3 tool updates
- Changed
check_availability4 fields changed- added
Input schema / properties / countryAdded value: +{ + "description": "ISO-3166 alpha-2 country hint (booking) — pass the search result location.country with a bare booking.com slug.", + "type": "string" +} - changed
Input schema / properties / listingId / descriptionPrevious value: -"A single listing id."New value: +"A single listing id: the platformListingId from search_stays. For Vrbo this is required — the number in a vrbo.com address is a different id and is rejected." - changed
Input schema / properties / listingIds / descriptionPrevious value: -"Multiple listing ids."New value: +"Multiple listing ids (same rule as listingId). Vrbo: at most 12 per call; split larger batches. Vrbo answers rentals only (hotel-type listings return no dates)." - changed
Input schema / properties / url / descriptionPrevious value: -"A listing URL (alternative to listingId)."New value: +"A listing URL (alternative to listingId). For Vrbo, use the url from search_stays (it carries expediaPropertyId=)."
- Changed
get_price1 field changed- added
Input schema / properties / countryAdded value: +{ + "description": "ISO-3166 alpha-2 country hint (booking) — pass the search result location.country with a bare booking.com slug.", + "type": "string" +}
- Changed
get_reviews1 field changed- added
Input schema / properties / countryAdded value: +{ + "description": "ISO-3166 alpha-2 country hint (booking) — pass the search result location.country with a bare booking.com slug.", + "type": "string" +}
7 tool updates
- First observed
check_availability - First observed
compare_prices - First observed
get_job - First observed
get_listing - First observed
get_price - First observed
get_reviews - First observed
search_stays
Related MCP Connectors
Google Hotels prices for any dates and guests, ratings, amenities and every booking site's price.
Hotel prices, ratings, reviews and amenities from Google Hotels for any city, dates and guests.
Live hotel and flight prices compared across Booking.com, Agoda, Trip.com and Traveloka, in USD.
Search and request stays at independent hotels, B&Bs, guesthouses and vacation rentals, direct.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI assistants to search and compare vacation rentals across Jabama, Jajiga and Otaghak at once, normalizing prices, Jalali/Gregorian dates, amenities, ratings, calendars and full guest reviews into one schema. It runs read-only and locally, providing merged results with direct booking links while withholding host and reviewer identities.616 npm1MIT
- AlicenseAqualityAmaintenanceSearches hotels and vacation rentals with nightly and total rates, ratings, amenities, and detailed property information through natural language in any MCP client.192 npm37 PyPI2MIT
- AlicenseAqualityAmaintenanceVacation rental software. A signed stay offer on the host's own domain. Agents discover a host domain, verify an Ed25519-signed offer (VRP), and send the guest to that domain to book and pay the host. Do not compare hosts or prices. HemmaBo + VRP, 6 runtime tools: 2 HemmaBo tools, 2 host onboarding tools, and 2 VRP verification tools. Not an OTA. Not a marketplace.76280 npm4Apache 2.0
- AlicenseAqualityAmaintenanceEnables MCP clients to search live hotel and vacation-rental listings with the rate each booking site (Booking.com, Expedia, Agoda, Vrbo, Airbnb and others) is charging, and to pull a three-month daily price calendar for a single property. All results come back as JSON using a user-supplied Apify token, with no Google account or local scraping required.31MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.