1stay
Server Details
Hotel booking MCP server. Search, book, and manage reservations across 250K+ properties worldwide.
- Status
- Healthy
- Uptime
- 100.0% over 54 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- STAYKER-COM/1Stay-mcp
- GitHub Stars
- 3
- Server Listing
- 1Stay Hotel Booking
TDQS
Scored across 8 tools
Most tools map cleanly to distinct operations, but get_booking and lookup_booking both read booking information and could easily be confused by an agent. Cancel and resend also share verification-like behavior, though the descriptions help clarify the boundaries.
All tool names follow a verb_noun snake_case pattern, which is predictable and readable. The main inconsistency is lookup_booking sitting alongside get_booking, plus the more compound get_hotel_details, but overall the convention is consistent.
Eight tools is well-scoped for a hotel booking server, covering search, details, booking, lookup, cancellation, resend, and tool discovery. Each tool has a clear role and none feel redundant or missing from a sizing standpoint.
The toolset covers the core hotel booking lifecycle: search, rate details, book, retrieve, verify, cancel-prepare, and resend confirmation. The main gaps are lack of booking modification and the fact that cancellation is only prepared via URL rather than executed through the API, but these are workable limitations.
Available Tools
8 toolsbook_hotelBook HotelAIdempotentInspect
Book exactly one hotel room. The first 1Stay release does not support multi-room searches or reservations. Returns a secure checkout URL. This tool accepts no guest identity or payment fields. Name, email, phone, and payment details are collected on the secure checkout page.
Guest pays the hotel directly. Their credit card statement shows the hotel name, not 1Stay. Hotel's own confirmation number. Loyalty points apply automatically. The displayed total includes taxes and any applicable, itemized 1Stay Booking Fee.
Requires a rate_code from get_hotel_details, valid approximately 15 minutes. Expired codes are rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| guests | Yes | Number of guests, 1-10 | |
| check_in | Yes | Check-in date in YYYY-MM-DD format (e.g. 2026-05-06) | |
| hotel_id | Yes | Hotel ID from search or details | |
| check_out | Yes | Check-out date in YYYY-MM-DD format (e.g. 2026-05-07) | |
| rate_code | Yes | Valid, unexpired rate code for the selected hotel, dates, and room | |
| external_reference_id | No | Caller-defined unique reference ID for idempotency and retrieval |
Output Schema
| Name | Required | Description |
|---|---|---|
| taxes | No | |
| nights | No | |
| status | Yes | |
| message | Yes | |
| check_in | No | |
| currency | No | |
| subtotal | No | |
| check_out | No | |
| rate_plan | No | |
| room_type | No | |
| hotel_name | No | |
| booking_fee | No | |
| booking_type | No | |
| checkout_url | No | |
| idempotency_hit | No | |
| avg_nightly_rate | No | |
| total_with_taxes | No | |
| expires_in_minutes | No | |
| cancellation_policy | No | |
| confirmation_number | No | |
| booking_fee_currency | No | |
| external_reference_id | No | |
| reward_points_eligible | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by explaining that no guest identity or payment fields are accepted, that payment is collected on a secure checkout page, that the guest pays the hotel directly, and that the total includes taxes and any itemized booking fee. It also discloses rate-code expiry behavior holistically and confirms the hotel's own confirmation number is used.
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 organized into three short paragraphs with the core purpose and primary limitation front-loaded. Every sentence adds a distinct operational fact, and while some fragments are terse, none are filler or redundant.
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 booking tool with six parameters, an output schema, and a complex payment flow, the description covers all essential behavioral and operational aspects: what to pass, what happens after booking, what the user sees on the statement, and what prerequisites apply. The output schema can handle return-value details, and sibling tools like cancel_booking and get_booking cover downstream workflows.
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?
Since schema coverage is 100%, the schema already documents each parameter's meaning. The description adds valuable context for rate_code by explaining where it comes from, that it is valid only about 15 minutes, and that expired codes are rejected, which is not fully captured in 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?
The description states a specific action and resource: 'Book exactly one hotel room.' It also differentiates the tool from siblings by noting the first release does not support multi-room searches/reservations, making it clear this is the reservation-creation tool and not search_hotels, get_hotel_details, or cancel_booking.
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 explicitly names the prerequisite tool and parameter: 'Requires a rate_code from get_hotel_details, valid approximately 15 minutes.' It also gives a clear condition for when not to use it (multi-room requests are unsupported), though it does not explicitly compare against every sibling alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_bookingCancel BookingAIdempotentInspect
Prepare a hotel cancellation for completion on a secure 1Stay page. Verifies the guest's first name, last name, and hotel confirmation number, then returns the hotel policy classification and any cancellation deadline recorded with the reservation, plus a short-lived cancellation_url. 1Stay does not estimate a refund, credit, penalty, or hotel charge. Calling this tool never cancels the reservation. The guest must review the terms and select Cancel reservation on the secure page. A later verified booking-status lookup reporting status cancelled is the authoritative confirmation that the reservation was cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| last_name | Yes | Guest last name on the reservation | |
| first_name | Yes | Guest first name on the reservation | |
| confirmation_number | Yes | Hotel confirmation number |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| booking | No | |
| message | Yes | |
| cancellation | No | |
| cancellation_url | No | |
| cancellation_url_expires_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-destructive and idempotent behavior, but the description adds valuable context: it returns a short-lived cancellation URL, does not estimate any refund/penalty, and never cancels the reservation directly. It also clarifies that the guest must manually confirm on the secure page. This goes beyond what annotations state, though it could mention rate limits or security specifics.
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 a single, information-dense paragraph of six sentences, each serving a purpose: purpose, verification and output, caveat about no estimates, explicit statement that it never cancels, guest action required, and authoritative confirmation. There is no redundancy, though it could be slightly more scannable with bullet points, but it earns its length.
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 is a preparatory, non-destructive step, and the description covers all necessary context: the verification process, the output (policy, deadline, URL), the non-estimation of charges, the non-cancellation behavior, the required guest action, and how to confirm actual cancellation via a later status lookup. With an output schema present, return values need no further explanation.
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 input schema already covers 100% of the parameter descriptions (first_name, last_name, confirmation_number). The description only re-echoes these fields when saying it 'verifies' them, adding no new semantics or formatting rules. Per the rubric, a baseline of 3 is appropriate when the schema fully documents parameters.
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 a specific verb and resource: 'Prepare a hotel cancellation for completion on a secure 1Stay page.' It clearly distinguishes the tool from siblings like book_hotel or lookup_booking by focusing on cancellation preparation, and it explicitly states it never actually cancels, which avoids confusion with a cancellation-confirmation tool.
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 clear context for when this tool should be used: to initiate a cancellation flow by generating a cancellation URL. It implicitly contrasts with a 'booking-status lookup' as the authoritative confirmation step, guiding the agent to use lookup tools for final status. However, it does not explicitly name a sibling tool as an alternative, which would strengthen the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bookingView Booking DetailsARead-onlyInspect
Look up a reservation exclusively by the hotel confirmation number shown in the guest's confirmation email. Internal Stayker booking IDs are never accepted or disclosed by MCP. Returns full booking details including hotel, dates, guest info, rate, and status.
Anonymous access requires a verification_token issued by lookup_booking and scoped to a single booking. Without a valid token, no booking data is returned. Developers authenticated with their own API key do not need a token; their access is scoped to their own bookings.
| Name | Required | Description | Default |
|---|---|---|---|
| verification_token | No | Booking-scoped verification token required for anonymous access. Developer API key-authenticated access does not require it. | |
| confirmation_number | Yes | Hotel confirmation number shown in the guest's confirmation email |
Output Schema
| Name | Required | Description |
|---|---|---|
| room | No | |
| hotel | No | |
| guests | No | |
| nights | No | |
| status | No | |
| pricing | No | |
| check_in | No | |
| check_out | No | |
| created_at | No | |
| booking_type | Yes | |
| cancellation | No | |
| action_handoff | Yes | |
| available_actions | Yes | |
| confirmation_number | No | |
| reward_points_eligible | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, and the description adds valuable behavioral nuance: internal IDs are never exposed, a missing/invalid token blocks data return, and developer access is scoped to their own bookings. This goes beyond the structured 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?
Three tight sentences with no filler. The most important constraint (external confirmation number only) is front-loaded, and the auth behavior is stated succinctly afterward.
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 two-parameter read-only tool with an output schema, the description covers everything needed to invoke it correctly: identifier format, auth requirements, return summary, and security scope. No important operational detail is missing.
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 already documents both parameters fully, so the baseline is 3. The description adds meaningful context by clarifying that confirmation_number must come from the guest's confirmation email, that internal IDs are never valid, and that verification_token must be issued by lookup_booking and is booking-scoped.
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 identifies the action ('Look up a reservation') and the exact resource/key ('hotel confirmation number'). It also explicitly differentiates the tool from sibling get/lookup tools by stating that internal Stayker booking IDs are never accepted or disclosed.
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?
It states precisely when the tool is usable: only with an external hotel confirmation number, not internal IDs. It also gives a concrete prerequisite for anonymous access, naming lookup_booking as the issuer of the required verification_token, and distinguishes developer API-key access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hotel_detailsHotel DetailsARead-onlyInspect
Get rates and room details for exactly one room at a specific hotel. Returns room types, live rates, amenities, cancellation policies, and rate_codes required by book_hotel.
Guest pays the hotel directly. Displayed totals include taxes and any applicable, itemized 1Stay Booking Fee. Loyalty points eligible.
Room type notes: "Run of house" means the hotel assigns the room at check-in. "Suite" at select-service brands usually means a larger room with a sofa, not a separate bedroom.
| Name | Required | Description | Default |
|---|---|---|---|
| rooms | No | Number of rooms. 1Stay currently supports exactly one room per search and reservation; omit this field or set it to 1. | |
| guests | No | Number of guests, 1-10 (default 2) | |
| check_in | Yes | Check-in date in YYYY-MM-DD format (e.g. 2026-05-06) | |
| hotel_id | Yes | Hotel ID from search results | |
| check_out | Yes | Check-out date in YYYY-MM-DD format (e.g. 2026-05-07) | |
| accessible | No | When true, returns accessible (ADA) room types instead of standard ones. Default false because hotels list many near-identical accessible variants. The response always reports accessible_rooms_available. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stay | No | |
| hotel | Yes | |
| rooms | Yes | |
| message | No | |
| next_step | No | |
| availability_status | No | |
| accessible_rooms_note | No | |
| rate_quote_expires_at | No | |
| rate_quote_ttl_seconds | No | |
| accessible_rooms_available | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds meaningful behavioral context beyond that: the guest pays the hotel directly, displayed totals include taxes and an itemized 1Stay Booking Fee, and loyalty points are eligible. The room-type notes further clarify what results mean, which is valuable for an agent interpreting responses.
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 front-loaded with the core purpose in the first sentence, then adds tightly relevant details about payment, fees, loyalty, and room-type terminology. It is longer than the minimum, but each section adds decision-relevant context without filler.
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 read-only details tool with an output schema and full parameter documentation, the description is complete: it states scope, links the output to the next booking step, explains pricing behavior, and clarifies ambiguous room-type terms. Nothing critical is missing for an agent to invoke it correctly.
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 100%, so all six parameters are already documented in the input schema. The description adds only marginal parameter-level value, mostly restating the one-room constraint already captured in the rooms parameter. Baseline 3 is appropriate.
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 a specific verb and resource: 'Get rates and room details for exactly one room at a specific hotel.' It then enumerates the concrete outputs (room types, live rates, amenities, cancellation policies, rate_codes), which clearly differentiates it from sibling tools like search_hotels and book_hotel.
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 context is clear: this is the detail-lookup step for a specific hotel before booking, reinforced by stating the returned rate_codes are 'required by book_hotel.' It does not explicitly spell out when not to use it or name alternatives, but the workflow implication is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_bookingFind ReservationARead-onlyInspect
Look up a reservation by verifying the guest's identity. Returns the confirmation number and booking summary in conversation.
Requires the guest's full name plus either the hotel confirmation number, or the booking email together with the last 4 digits of the card used to book. An email address alone is not enough. An optional check-in date can narrow repeat stays.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Email address used when booking | ||
| last_name | Yes | Guest last name on the reservation | |
| first_name | Yes | Guest first name on the reservation | |
| check_in_date | No | Optional check-in date (YYYY-MM-DD) to narrow repeat stays | |
| last_four_card | No | Last 4 digits of the card used to book | |
| confirmation_number | No | Hotel confirmation number |
Output Schema
| Name | Required | Description |
|---|---|---|
| hotel | No | |
| status | Yes | |
| check_in | No | |
| check_out | No | |
| guest_name | No | |
| action_handoff | Yes | |
| booking_status | No | |
| available_actions | No | |
| verification_token | Yes | |
| confirmation_number | Yes | |
| verification_token_note | No | |
| confirmation_number_status | No | |
| verification_token_expires_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it verifies identity, requires specific combinations of information, and returns results 'in conversation.' It does not detail failure behavior or privacy handling, but the annotations plus description are strong.
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 compact, front-loaded with the main purpose, and every sentence adds necessary information. It avoids redundancy with the schema and annotations, and the structure flows from purpose to requirements to optional narrowing.
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?
Given the tool's moderate complexity (6 params, 2 required), the description fully covers what an agent needs: required identity verification, acceptable parameter combinations, and the optional narrowing field. The output schema exists, so return values need not be described. No critical gaps remain.
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 100%, so the baseline is 3. The description adds value by explaining the logical relationship between parameters (e.g., email alone is insufficient, last_four_card must accompany email, confirmation_number is an alternative). This goes beyond the schema's individual field descriptions.
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 specific verb ('look up'), a resource ('reservation'), and the key outcome (returns confirmation number and booking summary). It also distinguishes itself from siblings like get_booking by emphasizing identity verification, which is a unique aspect of this tool.
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 explicitly states what is required (full name plus either confirmation number, or email with last 4 digits), what is not enough (email alone), and what is optional (check-in date). This gives clear when-to-use guidance and prevents misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resend_confirmationResend ConfirmationAInspect
Resend a hotel reservation confirmation email. Use either the confirmation number from a successful lookup_booking call, or the guest's full name and email address when they do not know their confirmation number, card last four, or check-in date. The email contains the hotel confirmation number the guest can then use with lookup_booking or cancel_booking. Recovery requests never reveal whether a reservation matched. The confirmation is sent only to the email address already on the booking record; there is no recipient override. Email changes are handled at https://stayker.com/service.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Guest email address. Used only to find a match; confirmation is sent only to the email address already on file. | ||
| last_name | No | Guest last name. Required with first_name and email when the confirmation number is unavailable. | |
| first_name | No | Guest first name. Required with last_name and email when the confirmation number is unavailable. | |
| confirmation_number | No | Hotel confirmation number. Use this after a verified lookup. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, openWorldHint=true, and destructiveHint=false, but the description adds substantial behavioral context: recovery requests never reveal whether a reservation matched, the confirmation is sent only to the already-on-file email with no recipient override, and email changes are handled at a specific URL. These details go beyond the annotations and meaningfully inform the agent about side effects and privacy constraints. No contradiction 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?
The description is a focused paragraph that front-loads the core action, then covers parameter selection and key behavioral notes. It is concise and every sentence contributes useful information. It could be slightly tightened, but it remains well-structured and efficient.
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?
Given 4 optional parameters, the presence of an output schema, and annotations, the description fully covers what an agent needs to invoke the tool correctly: when to use it, how to choose parameters, privacy/security behavior, and where to direct email changes. Nothing essential is missing.
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 100%, so each parameter is already well-documented in the schema. The description restates the choice between confirmation_number and first_name/last_name/email, and adds the nuance that email is used only to find a match and that the confirmation goes to the on-file address. However, this is largely redundant with the schema descriptions, so the description adds marginal value 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?
The description states a specific verb and resource: resend a hotel reservation confirmation email. It distinguishes itself from sibling tools by referencing lookup_booking as the source of a valid confirmation number and positioning itself in the booking workflow. It is immediately clear what this tool does and how it differs from lookup, cancel, or book operations.
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 conditions for parameter usage: use confirmation_number from a successful lookup_booking call, or use first_name, last_name, and email when the guest lacks the confirmation number, card last four, or check-in date. It also notes that the confirmation is sent only to the on-file email and directs email changes to an external URL. While it does not explicitly name when not to use this tool relative to siblings, the guidance is specific and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_hotelsSearch HotelsARead-onlyInspect
Search hotels by location and dates for exactly one room. Returns available properties with nightly rates across major brands, boutique, and independent hotels.
The first 1Stay release supports one room per search and reservation. Guest pays the hotel directly. Hotel's own confirmation number. Loyalty points apply.
| Name | Required | Description | Default |
|---|---|---|---|
| rooms | No | Number of rooms. 1Stay currently supports exactly one room per search and reservation; omit this field or set it to 1. | |
| cursor | No | Pagination cursor from previous search response | |
| radius | No | Search radius in miles, 1-100 (default 25). Applies only when the search resolves to coordinates - explicit latitude/longitude, or a venue, landmark or address that is geocoded. It is ignored for city searches, which resolve to a city code; the response reports which happened in resolution_type. | |
| check_in | Yes | Check-in date in YYYY-MM-DD format (e.g. 2026-05-06). Must be today through 340 days from today. | |
| currency | No | Currency code (default USD) | |
| latitude | No | Latitude — must be provided together with longitude | |
| location | No | City, address, venue, or landmark (e.g. 'Nashville, TN' or 'Times Square, NYC'). Required unless latitude and longitude are both provided. | |
| check_out | Yes | Check-out date in YYYY-MM-DD format (e.g. 2026-05-07). Must be after check_in. | |
| longitude | No | Longitude — must be provided together with latitude | |
| search_id | No | Search ID paired with a pagination cursor from previous results | |
| max_results | No | Max hotels to return, max 6 (default 6). Results are a representative selection across different hotel brands, not a ranking. Use the returned cursor to load more pages. | |
| guests_per_room | No | Guests per room, 1-10 (default 2) |
Output Schema
| Name | Required | Description |
|---|---|---|
| rooms | No | |
| cursor | Yes | |
| results | Yes | |
| check_in | Yes | |
| has_more | Yes | |
| check_out | Yes | |
| search_id | No | |
| total_results | Yes | |
| guests_per_room | No | |
| resolution_type | No | |
| resolved_location | No | |
| conversion_applied | No | |
| requested_currency | No | |
| returned_currencies | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds beyond that: the 1Stay release limits searches/reservations to one room, guests pay the hotel directly, the hotel issues its own confirmation number, and loyalty points apply. This provides useful service-context behavior not present in the 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?
Two short paragraphs, front-loaded with the core search action and outcome, followed by concise service constraints. Every sentence adds value and there is no fluff or redundancy.
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?
An output schema exists, so return values are covered elsewhere. The description plus schema fully address the one-room constraint, payment model, and search scope. It could be slightly more complete by pointing to sibling tools, but that belongs more under usage guidance.
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 100%, so the schema carries the parameter details. The description only restates 'location and dates' and 'exactly one room,' which duplicates what the schema already specifies; it adds no new parameter meaning.
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 names the specific verb 'Search' and resource 'hotels', and adds meaningful scope: by location and dates, for exactly one room, returning nightly rates across major brands. This clearly differentiates it from booking/management siblings like book_hotel and get_booking, so an agent can identify the tool 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the primary use case (finding available hotels) but does not explicitly contrast with alternatives like get_hotel_details or book_hotel, nor state conditions for when not to use the tool. The one-room constraint is present but is more a service limitation than guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_toolsSearch ToolsARead-onlyInspect
List available 1Stay hotel booking tools. An optional keyword filters by search, book, cancel, or details; absence of a keyword returns all tools.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | Optional tool filter keyword, such as book, search, cancel, or details |
Output Schema
| Name | Required | Description |
|---|---|---|
| tools | Yes | |
| total | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the behavior that absence of a keyword returns all tools, which is useful. However, it doesn't disclose details like whether the keyword is case-sensitive or whether it matches partial words, but that's minor given the simple nature of the tool.
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 with no waste. The purpose is front-loaded, and the optional keyword behavior is stated efficiently. Every sentence 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?
For a simple list/discovery tool with one optional parameter and an output schema, the description is complete. It explains the keyword filter and the default behavior. The only minor gap is not specifying the output format, but the output schema likely covers that, and the tool's simplicity reduces the need for more.
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 100%, so the schema already documents the keyword parameter. The description adds the behavior that absence of a keyword returns all tools, which complements the schema. Baseline 3 is appropriate because the schema does the heavy lifting and the description adds minimal extra meaning.
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 lists available 1Stay hotel booking tools and that an optional keyword filters by search, book, cancel, or details. It distinguishes itself from the sibling tools by being a discovery/meta-tool rather than a booking operation, though it doesn't explicitly name a sibling alternative.
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 explains when to use the tool: to list available tools, with an optional keyword to filter. It implies the alternative is browsing all tools without a keyword, but it doesn't explicitly state when not to use it or compare it to a specific sibling. The context is clear enough for an agent to decide.
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.
3 tool updates
- Changed
book_hotel3 fields changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Number of guests"New value: +"Number of guests, 1-10" - changed
Input schema / properties / guests / maximumPrevious value: -9007199254740991New value: +10 - changed
Input schema / properties / guests / minimumPrevious value: --9007199254740991New value: +1
- Changed
get_hotel_details3 fields changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Number of guests (default 2)"New value: +"Number of guests, 1-10 (default 2)" - changed
Input schema / properties / guests / maximumPrevious value: -9007199254740991New value: +10 - changed
Input schema / properties / guests / minimumPrevious value: --9007199254740991New value: +1
- Changed
search_hotels8 fields changed- changed
Input schema / properties / guests_per_room / descriptionPrevious value: -"Guests per room (default 2)"New value: +"Guests per room, 1-10 (default 2)" - changed
Input schema / properties / guests_per_room / maximumPrevious value: -9007199254740991New value: +10 - changed
Input schema / properties / guests_per_room / minimumPrevious value: --9007199254740991New value: +1 - changed
Input schema / properties / max_results / descriptionPrevious value: -"Max hotels to return, max 4 (default 4). Use the returned cursor to load more pages."New value: +"Max hotels to return, max 6 (default 6). Results are a representative selection across different hotel brands, not a ranking. Use the returned cursor to load more pages." - changed
Input schema / properties / max_results / maximumPrevious value: -4New value: +6 - changed
Input schema / properties / radius / descriptionPrevious value: -"Search radius in miles (default 25, max 100)"New value: +"Search radius in miles, 1-100 (default 25). Applies only when the search resolves to coordinates - explicit latitude/longitude, or a venue, landmark or address that is geocoded. It is ignored for city searches, which resolve to a city code; the response reports which happened in resolution_type." - changed
Input schema / properties / radius / maximumPrevious value: -9007199254740991New value: +100 - changed
Input schema / properties / radius / minimumPrevious value: --9007199254740991New value: +1
8 tool updates
- Changed
book_hotel12 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / check_in / descriptionPrevious value: -"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06), no more than 340 days from today"New value: +"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06)" - added
Input schema / properties / guests / maximumAdded value: +9007199254740991 - added
Input schema / properties / guests / minimumAdded value: +-9007199254740991 - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / expires_in_minutes / maximumAdded value: +9007199254740991 - added
Output schema / properties / expires_in_minutes / minimumAdded value: +-9007199254740991 - added
Output schema / properties / external_reference_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / external_reference_id / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / nights / maximumAdded value: +9007199254740991 - added
Output schema / properties / nights / minimumAdded value: +-9007199254740991
- Changed
cancel_booking6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / booking / propertyNamesAdded value: +{ + "type": "string" +} - changed
Output schema / properties / cancellation / anyOfPrevious value: -[ - { - "$ref": "#/properties/booking" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / confirmation_numberRemoved value: -{ - "type": "string" -}
- Changed
get_booking20 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / properties / cancellation / anyOfPrevious value: -[ - { - "$ref": "#/properties/guests/items" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / check_in / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / check_in / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / check_out / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / check_out / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / confirmation_number / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / confirmation_number / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / created_at / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / created_at / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / guests / items / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / nights / maximumAdded value: +9007199254740991 - added
Output schema / properties / nights / minimumAdded value: +-9007199254740991 - removed
Output schema / properties / pricing / $refRemoved value: -"#/properties/guests/items" - added
Output schema / properties / pricing / additionalPropertiesAdded value: +false - added
Output schema / properties / pricing / propertiesAdded value: +{ + "currency": { + "type": "string" + }, + "hotel_fees": { + "type": "number" + }, + "hotel_total": { + "type": "number" + }, + "room_total": { + "type": "number" + }, + "service_fee": { + "type": "number" + }, + "taxes": { + "type": "number" + } +} - added
Output schema / properties / pricing / requiredAdded value: +[ + "room_total", + "taxes", + "hotel_fees", + "hotel_total", + "currency" +] - added
Output schema / properties / pricing / typeAdded value: +"object"
- Changed
get_hotel_details50 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / check_in / descriptionPrevious value: -"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06), no more than 340 days from today"New value: +"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06)" - added
Input schema / properties / guests / maximumAdded value: +9007199254740991 - added
Input schema / properties / guests / minimumAdded value: +-9007199254740991 - removed
Input schema / properties / rooms / constRemoved value: -1 - added
Input schema / properties / rooms / maximumAdded value: +9007199254740991 - added
Input schema / properties / rooms / minimumAdded value: +-9007199254740991 - changed
Input schema / properties / rooms / typePrevious value: -"number"New value: +"integer" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / accessible_rooms_available / maximumAdded value: +9007199254740991 - added
Output schema / properties / accessible_rooms_available / minimumAdded value: +-9007199254740991 - added
Output schema / properties / accessible_rooms_note / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / accessible_rooms_note / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / hotel / properties / addressAdded value: +{ + "additionalProperties": false, + "properties": { + "city": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "line1": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "line2": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "postal_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "line1", + "line2", + "city", + "state", + "postal_code", + "country" + ], + "type": "object" +} - added
Output schema / properties / hotel / properties / amenitiesAdded value: +{ + "items": {}, + "type": "array" +} - added
Output schema / properties / hotel / properties / chain / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / hotel / properties / chain / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / hotel / properties / check_in_time / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / hotel / properties / check_in_time / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / hotel / properties / check_out_time / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / hotel / properties / check_out_time / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / hotel / properties / descriptionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / hotel / properties / name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / hotel / properties / name / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / hotel / properties / photos / items / properties / description / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / hotel / properties / photos / items / properties / description / typeRemoved value: -[ - "string", - "null" -] - changed
Output schema / properties / hotel / requiredPrevious value: -[ - "hotel_id", - "photos" -]New value: +[ + "hotel_id", + "address", + "amenities", + "photos" +] - added
Output schema / properties / rate_quote_expires_at / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rate_quote_expires_at / typeRemoved value: -[ - "string", - "null" -] - changed
Output schema / properties / rate_quote_ttl_seconds / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / rooms / items / properties / bed_type / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / bed_type / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / rooms / items / properties / description / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / description / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / rooms / items / properties / max_occupancy / maximumAdded value: +9007199254740991 - added
Output schema / properties / rooms / items / properties / max_occupancy / minimumAdded value: +-9007199254740991 - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / booking_termsAdded value: +{ + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" +} - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / cancel_by_datetime / $refRemoved value: -"#/properties/hotel/properties/photos/items/properties/description" - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / cancel_by_datetime / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / guarantee_policy / $refRemoved value: -"#/properties/hotel/properties/photos/items/properties/description" - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / guarantee_policy / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / meal_plan / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / meal_plan / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / name / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / refundable / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / refundable / typeRemoved value: -[ - "boolean", - "null" -] - added
Output schema / properties / rooms / items / properties / room_name_confidenceAdded value: +{ + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" +} - added
Output schema / properties / stayAdded value: +{ + "additionalProperties": false, + "properties": { + "check_in": { + "type": "string" + }, + "check_out": { + "type": "string" + }, + "guests": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "nights": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "rooms": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "check_in", + "check_out", + "guests", + "rooms", + "nights" + ], + "type": "object" +}
- Changed
lookup_booking6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / check_in_date / descriptionPrevious value: -"Check-in date (YYYY-MM-DD) — required with last_four_card"New value: +"Optional check-in date (YYYY-MM-DD) to narrow repeat stays" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / confirmation_number / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / confirmation_number / typeRemoved value: -[ - "string", - "null" -]
- Changed
resend_confirmation4 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / email / patternAdded value: +"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
search_hotels35 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / guests_per_room / maximumAdded value: +9007199254740991 - added
Input schema / properties / guests_per_room / minimumAdded value: +-9007199254740991 - changed
Input schema / properties / max_results / descriptionPrevious value: -"Max hotels to return, max 15 (default 4)"New value: +"Max hotels to return, max 4 (default 4). Use the returned cursor to load more pages." - added
Input schema / properties / max_results / maximumAdded value: +4 - added
Input schema / properties / max_results / minimumAdded value: +1 - added
Input schema / properties / radius / maximumAdded value: +9007199254740991 - added
Input schema / properties / radius / minimumAdded value: +-9007199254740991 - removed
Input schema / properties / rooms / constRemoved value: -1 - added
Input schema / properties / rooms / maximumAdded value: +9007199254740991 - added
Input schema / properties / rooms / minimumAdded value: +-9007199254740991 - changed
Input schema / properties / rooms / typePrevious value: -"number"New value: +"integer" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / check_inAdded value: +{ + "type": "string" +} - added
Output schema / properties / check_outAdded value: +{ + "type": "string" +} - removed
Output schema / properties / cursor / $refRemoved value: -"#/properties/results/items/properties/photo" - added
Output schema / properties / cursor / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / guests_per_room / maximumAdded value: +9007199254740991 - added
Output schema / properties / guests_per_room / minimumAdded value: +-9007199254740991 - changed
Output schema / properties / results / items / properties / address / additionalPropertiesPrevious value: -trueNew value: +{} - removed
Output schema / properties / results / items / properties / avg_nightly_rate / $refRemoved value: -"#/properties/results/items/properties/total_stay" - added
Output schema / properties / results / items / properties / avg_nightly_rate / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / items / properties / distance_milesRemoved value: -{ - "type": "number" -} - added
Output schema / properties / results / items / properties / nights / maximumAdded value: +9007199254740991 - added
Output schema / properties / results / items / properties / nights / minimumAdded value: +-9007199254740991 - added
Output schema / properties / results / items / properties / photo / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / items / properties / photo / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / results / items / properties / total_stay / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / items / properties / total_stay / typeRemoved value: -[ - "number", - "null" -] - added
Output schema / properties / rooms / maximumAdded value: +9007199254740991 - added
Output schema / properties / rooms / minimumAdded value: +-9007199254740991 - added
Output schema / properties / total_results / maximumAdded value: +9007199254740991 - added
Output schema / properties / total_results / minimumAdded value: +-9007199254740991 - changed
Output schema / requiredPrevious value: -[ - "results", - "total_results", - "cursor", - "has_more" -]New value: +[ + "results", + "total_results", + "check_in", + "check_out", + "cursor", + "has_more" +]
- Changed
search_tools5 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / total / maximumAdded value: +9007199254740991 - added
Output schema / properties / total / minimumAdded value: +-9007199254740991
8 tool updates
- Changed
book_hotel11 fields changed- changed
Input schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / guests / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / guests / minimumRemoved value: --9007199254740991 - changed
Output schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - removed
Output schema / properties / expires_in_minutes / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / expires_in_minutes / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / external_reference_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / external_reference_id / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / nights / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / nights / minimumRemoved value: --9007199254740991
- Changed
cancel_booking5 fields changed- changed
Input schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - removed
Output schema / properties / booking / propertyNamesRemoved value: -{ - "type": "string" -} - changed
Output schema / properties / cancellation / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "$ref": "#/properties/booking" + }, + { + "type": "null" + } +]
- Changed
get_booking22 fields changed- changed
Input schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - removed
Output schema / properties / cancellation / additionalPropertiesRemoved value: -{} - added
Output schema / properties / cancellation / anyOfAdded value: +[ + { + "$ref": "#/properties/guests/items" + }, + { + "type": "null" + } +] - removed
Output schema / properties / cancellation / propertyNamesRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / cancellation / typeRemoved value: -"object" - removed
Output schema / properties / check_in / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / check_in / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / check_out / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / check_out / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / confirmation_number / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / confirmation_number / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / created_at / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / created_at / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / guests / items / propertyNamesRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / nights / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / nights / minimumRemoved value: --9007199254740991 - added
Output schema / properties / pricing / $refAdded value: +"#/properties/guests/items" - removed
Output schema / properties / pricing / additionalPropertiesRemoved value: -{} - removed
Output schema / properties / pricing / propertyNamesRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / pricing / typeRemoved value: -"object"
- Changed
get_hotel_details42 fields changed- changed
Input schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / guests / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / guests / minimumRemoved value: --9007199254740991 - changed
Output schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - removed
Output schema / properties / accessible_rooms_available / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / accessible_rooms_available / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / accessible_rooms_note / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / accessible_rooms_note / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / hotel / properties / addressRemoved value: -{ - "additionalProperties": false, - "properties": { - "city": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "country": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "line1": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "line2": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "postal_code": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "state": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" -} - removed
Output schema / properties / hotel / properties / amenitiesRemoved value: -{ - "items": {}, - "type": "array" -} - removed
Output schema / properties / hotel / properties / chain / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / hotel / properties / chain / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / hotel / properties / check_in_time / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / hotel / properties / check_in_time / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / hotel / properties / check_out_time / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / hotel / properties / check_out_time / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / hotel / properties / descriptionRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / hotel / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / hotel / properties / name / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / hotel / properties / photos / items / properties / description / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / hotel / properties / photos / items / properties / description / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / rate_quote_expires_at / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / rate_quote_expires_at / typeAdded value: +[ + "string", + "null" +] - changed
Output schema / properties / rate_quote_ttl_seconds / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / bed_type / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / rooms / items / properties / bed_type / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / rooms / items / properties / description / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / rooms / items / properties / description / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / rooms / items / properties / max_occupancy / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / rooms / items / properties / max_occupancy / minimumRemoved value: --9007199254740991 - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / cancel_by_datetime / $refAdded value: +"#/properties/hotel/properties/photos/items/properties/description" - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / cancel_by_datetime / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / guarantee_policy / $refAdded value: +"#/properties/hotel/properties/photos/items/properties/description" - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / guarantee_policy / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / meal_plan / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / meal_plan / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / name / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / refundable / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / refundable / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / stayRemoved value: -{ - "additionalProperties": false, - "properties": { - "check_in": { - "type": "string" - }, - "check_out": { - "type": "string" - }, - "guests": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "nights": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "rooms": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - } - }, - "required": [ - "check_in", - "check_out", - "guests", - "rooms", - "nights" - ], - "type": "object" -}
- Changed
lookup_booking5 fields changed- changed
Input schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - removed
Output schema / properties / confirmation_number / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / confirmation_number / typeAdded value: +[ + "string", + "null" +]
- Changed
resend_confirmation4 fields changed- changed
Input schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / email / patternRemoved value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" - changed
Output schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#"
- Changed
search_hotels27 fields changed- changed
Input schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / guests_per_room / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / guests_per_room / minimumRemoved value: --9007199254740991 - changed
Input schema / properties / max_results / descriptionPrevious value: -"Hotels per page, max 4 (default 4). Use the returned cursor for more."New value: +"Max hotels to return, max 15 (default 4)" - removed
Input schema / properties / max_results / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / max_results / minimumRemoved value: --9007199254740991 - removed
Input schema / properties / radius / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / radius / minimumRemoved value: --9007199254740991 - changed
Output schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - added
Output schema / properties / cursor / $refAdded value: +"#/properties/results/items/properties/photo" - removed
Output schema / properties / cursor / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Output schema / properties / guests_per_room / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / guests_per_room / minimumRemoved value: --9007199254740991 - changed
Output schema / properties / results / items / properties / address / additionalPropertiesPrevious value: -{}New value: +true - added
Output schema / properties / results / items / properties / avg_nightly_rate / $refAdded value: +"#/properties/results/items/properties/total_stay" - removed
Output schema / properties / results / items / properties / avg_nightly_rate / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Output schema / properties / results / items / properties / nights / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / results / items / properties / nights / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / results / items / properties / photo / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / items / properties / photo / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / items / properties / total_stay / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / items / properties / total_stay / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / rooms / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / rooms / minimumRemoved value: --9007199254740991 - removed
Output schema / properties / total_results / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / total_results / minimumRemoved value: --9007199254740991
- Changed
search_tools5 fields changed- changed
Input schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#" - removed
Output schema / properties / total / maximumRemoved value: -9007199254740991 - removed
Output schema / properties / total / minimumRemoved value: --9007199254740991
8 tool updates
- Changed
book_hotel11 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / guests / maximumAdded value: +9007199254740991 - added
Input schema / properties / guests / minimumAdded value: +-9007199254740991 - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / expires_in_minutes / maximumAdded value: +9007199254740991 - added
Output schema / properties / expires_in_minutes / minimumAdded value: +-9007199254740991 - added
Output schema / properties / external_reference_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / external_reference_id / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / nights / maximumAdded value: +9007199254740991 - added
Output schema / properties / nights / minimumAdded value: +-9007199254740991
- Changed
cancel_booking5 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / booking / propertyNamesAdded value: +{ + "type": "string" +} - changed
Output schema / properties / cancellation / anyOfPrevious value: -[ - { - "$ref": "#/properties/booking" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_booking22 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / cancellation / additionalPropertiesAdded value: +{} - removed
Output schema / properties / cancellation / anyOfRemoved value: -[ - { - "$ref": "#/properties/guests/items" - }, - { - "type": "null" - } -] - added
Output schema / properties / cancellation / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / cancellation / typeAdded value: +"object" - added
Output schema / properties / check_in / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / check_in / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / check_out / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / check_out / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / confirmation_number / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / confirmation_number / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / created_at / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / created_at / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / guests / items / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / nights / maximumAdded value: +9007199254740991 - added
Output schema / properties / nights / minimumAdded value: +-9007199254740991 - removed
Output schema / properties / pricing / $refRemoved value: -"#/properties/guests/items" - added
Output schema / properties / pricing / additionalPropertiesAdded value: +{} - added
Output schema / properties / pricing / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / pricing / typeAdded value: +"object"
- Changed
get_hotel_details42 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / guests / maximumAdded value: +9007199254740991 - added
Input schema / properties / guests / minimumAdded value: +-9007199254740991 - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / accessible_rooms_available / maximumAdded value: +9007199254740991 - added
Output schema / properties / accessible_rooms_available / minimumAdded value: +-9007199254740991 - added
Output schema / properties / accessible_rooms_note / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / accessible_rooms_note / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / hotel / properties / addressAdded value: +{ + "additionalProperties": false, + "properties": { + "city": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "line1": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "line2": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "postal_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +} - added
Output schema / properties / hotel / properties / amenitiesAdded value: +{ + "items": {}, + "type": "array" +} - added
Output schema / properties / hotel / properties / chain / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / hotel / properties / chain / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / hotel / properties / check_in_time / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / hotel / properties / check_in_time / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / hotel / properties / check_out_time / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / hotel / properties / check_out_time / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / hotel / properties / descriptionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / hotel / properties / name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / hotel / properties / name / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / hotel / properties / photos / items / properties / description / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / hotel / properties / photos / items / properties / description / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / rate_quote_expires_at / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rate_quote_expires_at / typeRemoved value: -[ - "string", - "null" -] - changed
Output schema / properties / rate_quote_ttl_seconds / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / rooms / items / properties / bed_type / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / bed_type / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / rooms / items / properties / description / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / description / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / rooms / items / properties / max_occupancy / maximumAdded value: +9007199254740991 - added
Output schema / properties / rooms / items / properties / max_occupancy / minimumAdded value: +-9007199254740991 - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / cancel_by_datetime / $refRemoved value: -"#/properties/hotel/properties/photos/items/properties/description" - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / cancel_by_datetime / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / guarantee_policy / $refRemoved value: -"#/properties/hotel/properties/photos/items/properties/description" - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / guarantee_policy / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / meal_plan / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / meal_plan / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / name / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / rooms / items / properties / rate_plans / items / properties / refundable / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rooms / items / properties / rate_plans / items / properties / refundable / typeRemoved value: -[ - "boolean", - "null" -] - added
Output schema / properties / stayAdded value: +{ + "additionalProperties": false, + "properties": { + "check_in": { + "type": "string" + }, + "check_out": { + "type": "string" + }, + "guests": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "nights": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "rooms": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "check_in", + "check_out", + "guests", + "rooms", + "nights" + ], + "type": "object" +}
- Changed
lookup_booking5 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / confirmation_number / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / confirmation_number / typeRemoved value: -[ - "string", - "null" -]
- Changed
resend_confirmation4 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / email / patternAdded value: +"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
search_hotels27 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / guests_per_room / maximumAdded value: +9007199254740991 - added
Input schema / properties / guests_per_room / minimumAdded value: +-9007199254740991 - changed
Input schema / properties / max_results / descriptionPrevious value: -"Max hotels to return, max 15 (default 4)"New value: +"Hotels per page, max 4 (default 4). Use the returned cursor for more." - added
Input schema / properties / max_results / maximumAdded value: +9007199254740991 - added
Input schema / properties / max_results / minimumAdded value: +-9007199254740991 - added
Input schema / properties / radius / maximumAdded value: +9007199254740991 - added
Input schema / properties / radius / minimumAdded value: +-9007199254740991 - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / properties / cursor / $refRemoved value: -"#/properties/results/items/properties/photo" - added
Output schema / properties / cursor / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / guests_per_room / maximumAdded value: +9007199254740991 - added
Output schema / properties / guests_per_room / minimumAdded value: +-9007199254740991 - changed
Output schema / properties / results / items / properties / address / additionalPropertiesPrevious value: -trueNew value: +{} - removed
Output schema / properties / results / items / properties / avg_nightly_rate / $refRemoved value: -"#/properties/results/items/properties/total_stay" - added
Output schema / properties / results / items / properties / avg_nightly_rate / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - added
Output schema / properties / results / items / properties / nights / maximumAdded value: +9007199254740991 - added
Output schema / properties / results / items / properties / nights / minimumAdded value: +-9007199254740991 - added
Output schema / properties / results / items / properties / photo / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / items / properties / photo / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / results / items / properties / total_stay / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / items / properties / total_stay / typeRemoved value: -[ - "number", - "null" -] - added
Output schema / properties / rooms / maximumAdded value: +9007199254740991 - added
Output schema / properties / rooms / minimumAdded value: +-9007199254740991 - added
Output schema / properties / total_results / maximumAdded value: +9007199254740991 - added
Output schema / properties / total_results / minimumAdded value: +-9007199254740991
- Changed
search_tools5 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / total / maximumAdded value: +9007199254740991 - added
Output schema / properties / total / minimumAdded value: +-9007199254740991
1 tool update
- Changed
get_booking2 fields changed- removed
Output schema / properties / cancellation / $refRemoved value: -"#/properties/guests/items" - added
Output schema / properties / cancellation / anyOfAdded value: +[ + { + "$ref": "#/properties/guests/items" + }, + { + "type": "null" + } +]
4 tool updates
- Changed
book_hotel1 field changed- changed
Input schema / properties / check_in / descriptionPrevious value: -"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06)"New value: +"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06), no more than 340 days from today"
- Changed
cancel_booking6 fields changed- removed
Input schema / properties / cancellation_tokenRemoved value: -{ - "description": "Absent for the cancellation-terms preview; present for execution. Single-use and expires in approximately 10 minutes.", - "type": "string" -} - removed
Output schema / properties / cancellation_tokenRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / cancellation_token_expires_atRemoved value: -{ - "type": "string" -} - added
Output schema / properties / cancellation_urlAdded value: +{ + "format": "uri", + "type": "string" +} - added
Output schema / properties / cancellation_url_expires_atAdded value: +{ + "type": "string" +} - changed
Output schema / properties / status / enumPrevious value: -[ - "CONFIRMATION_REQUIRED", - "cancelled" -]New value: +[ + "ACTION_REQUIRED", + "already_cancelled" +]
- Changed
get_hotel_details1 field changed- changed
Input schema / properties / check_in / descriptionPrevious value: -"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06)"New value: +"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06), no more than 340 days from today"
- Changed
search_hotels1 field changed- changed
Input schema / properties / check_in / descriptionPrevious value: -"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06). Must be today or later."New value: +"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06). Must be today through 340 days from today."
6 tool updates
- Changed
book_hotel2 fields changed- removed
Output schema / properties / booking_idRemoved value: -{ - "type": "string" -} - added
Output schema / properties / confirmation_numberAdded value: +{ + "type": "string" +}
- Changed
get_booking3 fields changed- removed
Input schema / properties / booking_idRemoved value: -{ - "description": "Booking ID (e.g. stk_bk_xxxx) or confirmation number", - "type": "string" -} - added
Input schema / properties / confirmation_numberAdded value: +{ + "description": "Hotel confirmation number shown in the guest's confirmation email", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "booking_id" -]New value: +[ + "confirmation_number" +]
- Changed
get_hotel_details3 fields changed- added
Input schema / properties / rooms / constAdded value: +1 - changed
Input schema / properties / rooms / descriptionPrevious value: -"Number of rooms to price (default 1, maximum 5). MCP checkout creates one room per reservation."New value: +"Number of rooms. 1Stay currently supports exactly one room per search and reservation; omit this field or set it to 1." - changed
Input schema / properties / rooms / typePrevious value: -"integer"New value: +"number"
- Changed
lookup_booking3 fields changed- changed
Output schema / properties / confirmation_number / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Output schema / properties / confirmation_number_statusAdded value: +{ + "enum": [ + "available", + "pending" + ], + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "status", - "confirmation_number", - "verification_token", - "verification_token_expires_at", - "action_handoff", - "available_actions" -]New value: +[ + "status", + "confirmation_number", + "verification_token", + "verification_token_expires_at", + "action_handoff" +]
- Changed
resend_confirmation5 fields changed- changed
Input schema / properties / confirmation_number / descriptionPrevious value: -"Hotel confirmation number"New value: +"Hotel confirmation number. Use this after a verified lookup." - added
Input schema / properties / emailAdded value: +{ + "description": "Guest email address. Used only to find a match; confirmation is sent only to the email address already on file.", + "format": "email", + "type": "string" +} - added
Input schema / properties / first_nameAdded value: +{ + "description": "Guest first name. Required with last_name and email when the confirmation number is unavailable.", + "type": "string" +} - added
Input schema / properties / last_nameAdded value: +{ + "description": "Guest last name. Required with first_name and email when the confirmation number is unavailable.", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "confirmation_number" -]
- Changed
search_hotels3 fields changed- added
Input schema / properties / rooms / constAdded value: +1 - changed
Input schema / properties / rooms / descriptionPrevious value: -"Number of rooms to search for (default 1, maximum 5). MCP checkout creates one room per reservation."New value: +"Number of rooms. 1Stay currently supports exactly one room per search and reservation; omit this field or set it to 1." - changed
Input schema / properties / rooms / typePrevious value: -"integer"New value: +"number"
8 tool updates
- Changed
book_hotel3 fields changed- changed
Input schema / properties / external_reference_id / descriptionPrevious value: -"Your unique reference ID for this booking (for idempotency and retrieval)"New value: +"Caller-defined unique reference ID for idempotency and retrieval" - changed
Input schema / properties / rate_code / descriptionPrevious value: -"Rate code from get_hotel_details — you MUST call get_hotel_details first to get a valid rate_code before booking"New value: +"Valid, unexpired rate code for the selected hotel, dates, and room" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "avg_nightly_rate": { + "type": "number" + }, + "booking_fee": { + "type": "number" + }, + "booking_fee_currency": { + "type": "string" + }, + "booking_id": { + "type": "string" + }, + "booking_type": { + "type": "string" + }, + "cancellation_policy": { + "type": "string" + }, + "check_in": { + "type": "string" + }, + "check_out": { + "type": "string" + }, + "checkout_url": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "expires_in_minutes": { + "type": "integer" + }, + "external_reference_id": { + "type": [ + "string", + "null" + ] + }, + "hotel_name": { + "type": "string" + }, + "idempotency_hit": { + "type": "boolean" + }, + "message": { + "type": "string" + }, + "nights": { + "type": "integer" + }, + "rate_plan": { + "type": "string" + }, + "reward_points_eligible": { + "type": "boolean" + }, + "room_type": { + "type": "string" + }, + "status": { + "enum": [ + "ACTION_REQUIRED", + "ALREADY_CONFIRMED" + ], + "type": "string" + }, + "subtotal": { + "type": "number" + }, + "taxes": { + "type": "number" + }, + "total_with_taxes": { + "type": "number" + } + }, + "required": [ + "status", + "message" + ], + "type": "object" +}
- Changed
cancel_booking2 fields changed- changed
Input schema / properties / cancellation_token / descriptionPrevious value: -"Leave empty on the first call to preview the cancellation terms (penalty, refund, deadline) and receive a cancellation_token. Call again with that token to actually cancel. Single-use; expires in ~10 minutes."New value: +"Absent for the cancellation-terms preview; present for execution. Single-use and expires in approximately 10 minutes." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "booking": { + "additionalProperties": {}, + "type": "object" + }, + "cancellation": { + "anyOf": [ + { + "$ref": "#/properties/booking" + }, + { + "type": "null" + } + ] + }, + "cancellation_token": { + "type": "string" + }, + "cancellation_token_expires_at": { + "type": "string" + }, + "confirmation_number": { + "type": "string" + }, + "message": { + "type": "string" + }, + "status": { + "enum": [ + "CONFIRMATION_REQUIRED", + "cancelled" + ], + "type": "string" + } + }, + "required": [ + "status", + "message" + ], + "type": "object" +}
- Changed
get_booking2 fields changed- changed
Input schema / properties / verification_token / descriptionPrevious value: -"Verification token returned by lookup_booking. Required for guest-facing (anonymous) lookups; obtain it by calling lookup_booking first. Not needed when authenticated with your own developer API key."New value: +"Booking-scoped verification token required for anonymous access. Developer API key-authenticated access does not require it." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "action_handoff": { + "type": "string" + }, + "available_actions": { + "additionalProperties": false, + "properties": { + "preview_cancellation": { + "additionalProperties": false, + "properties": { + "arguments": { + "additionalProperties": false, + "properties": { + "confirmation_number": { + "type": "string" + }, + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + } + }, + "required": [ + "confirmation_number" + ], + "type": "object" + }, + "instruction": { + "type": "string" + }, + "tool": { + "const": "cancel_booking", + "type": "string" + } + }, + "required": [ + "tool", + "arguments", + "instruction" + ], + "type": "object" + }, + "resend_confirmation": { + "additionalProperties": false, + "properties": { + "arguments": { + "additionalProperties": false, + "properties": { + "confirmation_number": { + "type": "string" + } + }, + "required": [ + "confirmation_number" + ], + "type": "object" + }, + "instruction": { + "type": "string" + }, + "tool": { + "const": "resend_confirmation", + "type": "string" + } + }, + "required": [ + "tool", + "arguments", + "instruction" + ], + "type": "object" + } + }, + "required": [ + "resend_confirmation", + "preview_cancellation" + ], + "type": "object" + }, + "booking_type": { + "type": "string" + }, + "cancellation": { + "$ref": "#/properties/guests/items" + }, + "check_in": { + "type": [ + "string", + "null" + ] + }, + "check_out": { + "type": [ + "string", + "null" + ] + }, + "confirmation_number": { + "type": [ + "string", + "null" + ] + }, + "created_at": { + "type": [ + "string", + "null" + ] + }, + "guests": { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + }, + "hotel": {}, + "nights": { + "type": "integer" + }, + "pricing": { + "$ref": "#/properties/guests/items" + }, + "reward_points_eligible": { + "type": "boolean" + }, + "room": {}, + "status": { + "type": "string" + } + }, + "required": [ + "reward_points_eligible", + "booking_type", + "action_handoff", + "available_actions" + ], + "type": "object" +}
- Changed
get_hotel_details3 fields changed- changed
Input schema / properties / accessible / descriptionPrevious value: -"Return accessible (ADA) room types instead of standard ones. Omitted by default because hotels list many near-identical accessible variants. The response always reports accessible_rooms_available, so if a guest needs one, call again with accessible: true."New value: +"When true, returns accessible (ADA) room types instead of standard ones. Default false because hotels list many near-identical accessible variants. The response always reports accessible_rooms_available." - changed
Input schema / properties / rooms / descriptionPrevious value: -"Number of rooms (default 1)"New value: +"Number of rooms to price (default 1, maximum 5). MCP checkout creates one room per reservation." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "accessible_rooms_available": { + "type": "integer" + }, + "accessible_rooms_note": { + "type": [ + "string", + "null" + ] + }, + "availability_status": { + "enum": [ + "available", + "unavailable" + ], + "type": "string" + }, + "hotel": { + "additionalProperties": false, + "properties": { + "chain": { + "type": [ + "string", + "null" + ] + }, + "check_in_time": { + "type": [ + "string", + "null" + ] + }, + "check_out_time": { + "type": [ + "string", + "null" + ] + }, + "hotel_id": { + "type": "string" + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "photos": { + "items": { + "additionalProperties": false, + "properties": { + "description": { + "type": [ + "string", + "null" + ] + }, + "thumbnail": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "description" + ], + "type": "object" + }, + "type": "array" + }, + "review": {} + }, + "required": [ + "hotel_id", + "photos" + ], + "type": "object" + }, + "message": { + "type": "string" + }, + "next_step": { + "type": "string" + }, + "rate_quote_expires_at": { + "type": [ + "string", + "null" + ] + }, + "rate_quote_ttl_seconds": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "rooms": { + "items": { + "additionalProperties": false, + "properties": { + "bed_type": { + "type": [ + "string", + "null" + ] + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "max_occupancy": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "rate_plans": { + "items": { + "additionalProperties": false, + "properties": { + "avg_nightly_rate": { + "type": "number" + }, + "booking_fee": { + "type": "number" + }, + "booking_fee_currency": { + "type": "string" + }, + "booking_type": { + "type": "string" + }, + "cancel_by_datetime": { + "$ref": "#/properties/hotel/properties/photos/items/properties/description" + }, + "cancellation_policy": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "guarantee_policy": { + "$ref": "#/properties/hotel/properties/photos/items/properties/description" + }, + "meal_plan": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "nightly_breakdown": { + "items": {}, + "type": "array" + }, + "rate_code": { + "type": "string" + }, + "refundable": { + "type": [ + "boolean", + "null" + ] + }, + "reward_points_eligible": { + "type": "boolean" + }, + "subtotal": { + "type": "number" + }, + "taxes": { + "type": "number" + }, + "total_with_taxes": { + "type": "number" + } + }, + "required": [ + "rate_code", + "total_with_taxes", + "avg_nightly_rate", + "subtotal", + "taxes", + "currency", + "nightly_breakdown", + "cancellation_policy", + "cancel_by_datetime", + "guarantee_policy", + "reward_points_eligible", + "booking_type" + ], + "type": "object" + }, + "type": "array" + }, + "room_id": { + "type": "string" + } + }, + "required": [ + "room_id", + "name", + "rate_plans" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "hotel", + "rooms", + "accessible_rooms_available" + ], + "type": "object" +}
- Changed
lookup_booking1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "action_handoff": { + "type": "string" + }, + "available_actions": { + "additionalProperties": false, + "properties": { + "preview_cancellation": { + "additionalProperties": false, + "properties": { + "arguments": { + "additionalProperties": false, + "properties": { + "confirmation_number": { + "type": "string" + }, + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + } + }, + "required": [ + "confirmation_number" + ], + "type": "object" + }, + "instruction": { + "type": "string" + }, + "tool": { + "const": "cancel_booking", + "type": "string" + } + }, + "required": [ + "tool", + "arguments", + "instruction" + ], + "type": "object" + }, + "resend_confirmation": { + "additionalProperties": false, + "properties": { + "arguments": { + "additionalProperties": false, + "properties": { + "confirmation_number": { + "type": "string" + } + }, + "required": [ + "confirmation_number" + ], + "type": "object" + }, + "instruction": { + "type": "string" + }, + "tool": { + "const": "resend_confirmation", + "type": "string" + } + }, + "required": [ + "tool", + "arguments", + "instruction" + ], + "type": "object" + } + }, + "required": [ + "resend_confirmation", + "preview_cancellation" + ], + "type": "object" + }, + "booking_status": { + "type": "string" + }, + "check_in": { + "type": "string" + }, + "check_out": { + "type": "string" + }, + "confirmation_number": { + "type": "string" + }, + "guest_name": { + "type": "string" + }, + "hotel": { + "type": "string" + }, + "status": { + "type": "string" + }, + "verification_token": { + "type": "string" + }, + "verification_token_expires_at": { + "type": "string" + }, + "verification_token_note": { + "type": "string" + } + }, + "required": [ + "status", + "confirmation_number", + "verification_token", + "verification_token_expires_at", + "action_handoff", + "available_actions" + ], + "type": "object" +}
- Changed
resend_confirmation1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "message": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "required": [ + "status", + "message" + ], + "type": "object" +}
- Changed
search_hotels3 fields changed- changed
Input schema / properties / rooms / descriptionPrevious value: -"Number of rooms (default 1)"New value: +"Number of rooms to search for (default 1, maximum 5). MCP checkout creates one room per reservation." - changed
Input schema / properties / search_id / descriptionPrevious value: -"Search ID from previous results — pass with cursor for next page"New value: +"Search ID paired with a pagination cursor from previous results" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "conversion_applied": { + "type": "boolean" + }, + "cursor": { + "$ref": "#/properties/results/items/properties/photo" + }, + "guests_per_room": { + "type": "integer" + }, + "has_more": { + "type": "boolean" + }, + "requested_currency": { + "type": "string" + }, + "resolution_type": { + "type": "string" + }, + "resolved_location": { + "type": "string" + }, + "results": { + "items": { + "additionalProperties": false, + "properties": { + "address": { + "additionalProperties": true, + "properties": { + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "line1": { + "type": "string" + }, + "postal_code": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "amenities": { + "items": {}, + "type": "array" + }, + "avg_nightly_rate": { + "$ref": "#/properties/results/items/properties/total_stay" + }, + "booking_fee": { + "type": "number" + }, + "booking_fee_currency": { + "type": "string" + }, + "booking_type": { + "type": "string" + }, + "chain": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "distance_miles": { + "type": "number" + }, + "hotel_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nights": { + "type": "integer" + }, + "photo": { + "type": [ + "string", + "null" + ] + }, + "review": {}, + "reward_points_eligible": { + "type": "boolean" + }, + "star_rating": { + "type": "number" + }, + "total_stay": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "hotel_id", + "name", + "photo", + "total_stay", + "avg_nightly_rate", + "nights", + "currency", + "amenities", + "reward_points_eligible", + "booking_type" + ], + "type": "object" + }, + "type": "array" + }, + "returned_currencies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "rooms": { + "type": "integer" + }, + "search_id": { + "type": "string" + }, + "total_results": { + "type": "integer" + } + }, + "required": [ + "results", + "total_results", + "cursor", + "has_more" + ], + "type": "object" +}
- Changed
search_tools2 fields changed- changed
Input schema / properties / keyword / descriptionPrevious value: -"Keyword to filter tools (e.g. 'book', 'search', 'cancel'). Omit to list all tools."New value: +"Optional tool filter keyword, such as book, search, cancel, or details" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "tools": { + "items": { + "additionalProperties": false, + "properties": { + "description": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "total": { + "type": "integer" + } + }, + "required": [ + "tools", + "total" + ], + "type": "object" +}
1 tool update
- Changed
search_hotels1 field changed- removed
Input schema / properties / chain_codeRemoved value: -{ - "description": "Two-letter hotel chain filter. MC=Marriott, HH=Hilton, HI=IHG, YX=Hyatt, BW=Best Western, WY=Wyndham, EL=Choice. Omit for boutique, independent, or unbranded searches.", - "type": "string" -}
1 tool update
- Changed
book_hotel3 fields changed- removed
Input schema / properties / guest_emailRemoved value: -{ - "description": "Guest email for confirmation", - "type": "string" -} - removed
Input schema / properties / guest_nameRemoved value: -{ - "description": "Guest full name", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "hotel_id", - "rate_code", - "check_in", - "check_out", - "guests", - "guest_name", - "guest_email" -]New value: +[ + "hotel_id", + "rate_code", + "check_in", + "check_out", + "guests" +]
1 tool update
- Changed
get_hotel_details1 field changed- added
Input schema / properties / accessibleAdded value: +{ + "description": "Return accessible (ADA) room types instead of standard ones. Omitted by default because hotels list many near-identical accessible variants. The response always reports accessible_rooms_available, so if a guest needs one, call again with accessible: true.", + "type": "boolean" +}
1 tool update
- Changed
search_hotels1 field changed- changed
Input schema / properties / max_results / descriptionPrevious value: -"Max hotels to return, max 4 (default 4)"New value: +"Max hotels to return, max 15 (default 4)"
1 tool update
- Changed
search_hotels1 field changed- changed
Input schema / properties / max_results / descriptionPrevious value: -"Max hotels to return, max 15 (default 10)"New value: +"Max hotels to return, max 4 (default 4)"
4 tool updates
- Changed
cancel_booking1 field changed- added
Input schema / properties / cancellation_tokenAdded value: +{ + "description": "Leave empty on the first call to preview the cancellation terms (penalty, refund, deadline) and receive a cancellation_token. Call again with that token to actually cancel. Single-use; expires in ~10 minutes.", + "type": "string" +}
- Changed
get_booking1 field changed- added
Input schema / properties / verification_tokenAdded value: +{ + "description": "Verification token returned by lookup_booking. Required for guest-facing (anonymous) lookups; obtain it by calling lookup_booking first. Not needed when authenticated with your own developer API key.", + "type": "string" +}
- Changed
resend_confirmation1 field changed- removed
Input schema / properties / updated_emailRemoved value: -{ - "description": "If provided, send confirmation to this email instead of the one on file. Use when guest typo'd their email at booking or can't access the original email.", - "type": "string" -}
- Changed
search_hotels2 fields changed- changed
Input schema / properties / location / descriptionPrevious value: -"City, address, venue, or landmark (e.g. 'Nashville, TN' or 'Times Square, NYC'). Required for all searches."New value: +"City, address, venue, or landmark (e.g. 'Nashville, TN' or 'Times Square, NYC'). Required unless latitude and longitude are both provided." - changed
Input schema / requiredPrevious value: -[ - "location", - "check_in", - "check_out" -]New value: +[ + "check_in", + "check_out" +]
4 tool updates
- Added
lookup_booking - Added
resend_confirmation - Removed
retrieve_booking - Changed
search_hotels1 field changed- changed
Input schema / properties / chain_code / descriptionPrevious value: -"Filter by hotel chain code (e.g. 'MC' for Marriott, 'HH' for Hilton)"New value: +"Two-letter hotel chain filter. MC=Marriott, HH=Hilton, HI=IHG, YX=Hyatt, BW=Best Western, WY=Wyndham, EL=Choice. Omit for boutique, independent, or unbranded searches."
4 tool updates
- Removed
lookup_booking - Removed
resend_confirmation - Added
retrieve_booking - Changed
search_hotels1 field changed- changed
Input schema / properties / chain_code / descriptionPrevious value: -"Two-letter hotel chain filter. MC=Marriott, HH=Hilton, HI=IHG, YX=Hyatt, BW=Best Western, WY=Wyndham, EL=Choice. Omit for boutique, independent, or unbranded searches."New value: +"Filter by hotel chain code (e.g. 'MC' for Marriott, 'HH' for Hilton)"
4 tool updates
- Added
lookup_booking - Added
resend_confirmation - Removed
retrieve_booking - Changed
search_hotels1 field changed- changed
Input schema / properties / chain_code / descriptionPrevious value: -"Filter by hotel chain code (e.g. 'MC' for Marriott, 'HH' for Hilton)"New value: +"Two-letter hotel chain filter. MC=Marriott, HH=Hilton, HI=IHG, YX=Hyatt, BW=Best Western, WY=Wyndham, EL=Choice. Omit for boutique, independent, or unbranded searches."
Related MCP Connectors
Official MCP server for MAQAMI, a hotel and flight booking platform with 3M+ hotels. Search live hotel rates and flights, look up places, airports and hotel details, then prebook and book. Remote Streamable HTTP endpoint, no API key required.
Skiplagged MCP Server for flight search, hotel booking, and travel planning
Official MCP server for MAQAMI, a hotel and flight booking platform with 3M+ hotels.
Real-time Booking.com rates for agents. Three things people do with this server. Scan for rate gaps: price_as_seen_from prices the same room from another market, so an agent can sample a property across countries and compare. Put live search in your app: search a destination or look a property up by name, no internal IDs, room-level rates as flat JSON. Run a 24/7 AI travel agent: add the server, sign in with Google, and schedule it. No ads, no sponsored content. You bring your own RapidAPI key, so every search is billed to your plan and never to anyone else's. Add https://hotels.flightpowers.com/mcp , click Sign in, sign in with Google, and paste your RapidAPI key once on the page that opens. Scripts and clients without a sign-in button send the key as x-rapidapi-key on the same URL.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server that searches hotels on Booking.com with 80+ filter options using Playwright browser automation.2717 npm1MIT

RollingGo Hotel MCPofficial
AlicenseNot gradedqualityCmaintenanceMCP server for searching, comparing, and booking hotels globally, with live rates and over 2 million properties, powered by DIDA.84MIT- AlicenseAqualityAmaintenanceSearches hotels and vacation rentals with nightly and total rates, ratings, amenities, and detailed property information through natural language in any MCP client.198 npm44 PyPI2MIT
- FlicenseAqualityDmaintenanceMCP server for the Rizerve direct booking platform. Enables managing properties, bookings, availability, iCal sync, analytics, and webhooks through AI assistants.191-
Glama MCP Gateway
Add one secure layer between your agents and this server.