1stay
Server Details
Hotel booking MCP server. Search, book, and manage reservations across 250K+ properties worldwide.
- Status
- Healthy
- 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 target clearly distinct actions: search, book, cancel, lookup, and get. The only potential confusion is lookup_booking versus get_booking, since both can involve a confirmation number, but detailed descriptions clarify that one returns a summary/token and the other returns full booking details.
All tool names follow a consistent verb_noun lowercase snake_case pattern: book_hotel, cancel_booking, get_booking, get_hotel_details, lookup_booking, resend_confirmation, search_hotels, search_tools. The naming is predictable and makes the tool set easy to navigate.
Eight tools is well-scoped for a hotel booking server. Each tool covers a necessary part of the booking lifecycle without redundancy or unnecessary expansion, and the count is comfortably within the ideal 3-15 range.
The booking lifecycle is well covered: search, details, book, lookup, get, cancel, and resend confirmation. The only notable gap is the lack of a modify/update booking operation, but this can be worked around by cancelling and rebooking, and the server explicitly scopes its first release to single-room bookings.
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 | |
| 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?
Beyond the annotations, the description reveals important behavioral details: no guest identity or payment fields are accepted, payment is collected on a secure checkout page, the guest pays the hotel directly, loyalty points apply automatically, and the displayed total includes taxes and fees. This is substantial additional context.
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 and return value, then efficiently covers constraints, payment behavior, and rate-code validity. Every sentence adds useful information without 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?
The description covers the booking flow, payment responsibility, checkout URL, fee/tax behavior, and rate-code expiration. An output schema exists, so detailed return fields are not needed here. This is complete enough for an agent to understand how and when to call the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful value by explaining the provenance and expiry of rate_code, and by clarifying that no guest identity or payment parameters are accepted. This goes beyond the schema, justifying a 4.
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: 'Book exactly one hotel room.' It also clarifies the operation's scope and what it returns ('Returns a secure checkout URL'), distinguishing the tool from booking-related siblings like cancel_booking, lookup_booking, and get_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 clearly establishes the booking context and prerequisites, especially that a rate_code must come from get_hotel_details and expires in about 15 minutes. It notes the current release does not support multi-room bookings, but it does not explicitly enumerate when to prefer one sibling over another. Nevertheless, the usage context is clear.
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. Do not say the reservation was cancelled unless a later verified booking-status lookup reports status 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?
Beyond annotations, the description discloses critical behaviors: input verification, no refund/penalty estimates, short-lived cancellation URL, and the fact that the action is not a cancellation but a preparation step. It also mandates the guest's manual confirmation step and cautions against asserting cancellation prematurely. These details go well beyond the sparse annotation hints and align with them—no contradiction.
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 about 100 words and contains no filler; every sentence earns its place, including the refund-policy disclaimer and the cancellation-status caveat. It front-loads the core purpose before caveats, but it is slightly longer than strictly necessary. A concise tool name and title could allow for a tighter statement, yet the detail is justified by the multi-step nature.
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 that an output schema exists, the description need not explain return values, but it still summarizes the key outputs (policy classification, deadline, cancellation_url) as context. It covers prerequisites, the external completion flow, and the follow-up verification requirement, leaving no major operational gap for an agent to misuse the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents all three parameters with 100% coverage, so the baseline is 3. The description adds a small nuance by saying it 'verifies' these fields, implying they must match the reservation, but it provides no additional format, source, or validation semantics. It neither detects nor corrects parameter ambiguity, so it stays at the baseline.
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 then clarifies it verifies guest inputs and returns policy classification, deadline, and a cancellation URL. This sharply distinguishes it from sibling lookup tools like get_booking and lookup_booking, and the explicit 'Calling this tool never cancels the reservation' removes any ambiguity.
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 conveys clear context: use this tool to start a cancellation flow that the guest completes externally. It also warns not to claim cancellation until a later verified status lookup confirms it, implicitly steering the agent to a status tool afterward. However, it never names sibling alternatives or states when not to use this tool, so it falls short of an explicit when/when-not comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bookingGet BookingARead-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 declare readOnlyHint=true and destructiveHint=false, and the description adds rich behavioral context beyond that: the exclusive use of hotel confirmation numbers, the refusal to disclose internal IDs, the requirement for a verification token for anonymous access, and the guarantee that no data is returned without a valid token. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured and front-loaded: the core purpose is stated in the first sentence, followed by the key constraint and the return summary, then the auth context in a compact second paragraph. Every sentence earns its place without redundancy or 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?
The description covers what the tool returns, how it is uniquely identified, the authentication model, and the scope restrictions. Since an output schema exists, the return-value details do not need to be spelled out. The description is complete enough for an agent to select and invoke this tool 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?
The input schema already describes both parameters fully (100% coverage), so the baseline is 3. The description adds meaning by explaining that the verification_token must be booking-scoped and issued by lookup_booking, and clarifies that developer API-key-authenticated access bypasses the token requirement. This pushes it to a 4.
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 reservation') and a specific resource ('by the hotel confirmation number'), and explicitly notes that internal Stayker booking IDs are never accepted. This distinguishes the tool's purpose from alternatives like lookup_booking and gives an agent immediate clarity on what it can and cannot do.
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 when-to-use guidance: use this tool with the guest's hotel confirmation number. It also gives a when-not-to-use: internal booking IDs are never accepted. It further explains the prerequisite flow for anonymous access via lookup_booking and scopes developer access to their own bookings, so the agent knows exactly how to invoke it correctly.
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 (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, so the safety profile is covered. The description adds valuable context beyond that: the guest-pays-hotel-directly payment model, that totals include taxes and an itemized booking fee, loyalty-point eligibility, and interpretive notes on 'run of house' and 'suite' room types — all useful for an agent presenting or acting on the data.
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 short paragraphs, front-loaded with the core purpose and then adding high-value context: payment/fee disclosure and room-type interpretation. Each sentence earns its place; the room-type notes are domain knowledge that prevents misinterpretation of results rather than 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 lookup with full schema coverage, an output schema present, and safety covered by annotations, the description covers the remaining gaps: workflow position (feeds book_hotel), pricing transparency, and result interpretation. Nothing an agent needs to call it correctly 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 every parameter is already documented in the schema, including the accessible flag's behavior and the rooms field's one-room constraint. The description reinforces the 'exactly one room' limitation and notes that rate_codes feed book_hotel, but it does not need to add more — the schema carries the load, making baseline 3 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?
States a specific verb and resource — 'Get rates and room details for exactly one room at a specific hotel' — with an explicit scope constraint that distinguishes it from search_hotels. The closing link to book_hotel ('rate_codes required by book_hotel') positions it in the booking workflow, so an agent can tell exactly what this tool is for and what it is not.
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 on when this fits: it returns rate_codes needed by book_hotel, and the 'exactly one room' constraint tells the agent it is a single-room lookup rather than a multi-room search. It stops short of explicitly naming alternatives or exclusion cases (e.g., 'use search_hotels to find hotels first'), so it is clear but not fully directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_bookingLookup BookingARead-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 establish the read-only and non-destructive nature, so the description adds value by stating that the tool returns the confirmation number and booking summary in conversation, and that an email alone will not resolve a booking. This is useful behavioral context beyond the annotations, without contradicting them.
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 and front-loaded: purpose and return value come first, followed by precise identification requirements. Every sentence contributes useful guidance, and there is no redundant 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 six-parameter read-only lookup with an output schema and annotations, the description covers purpose, output mode, and the necessary parameter combinations. The only notable gap is that it does not explicitly route the agent between this tool and the similar get_booking sibling when a confirmation number is already available.
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?
Although the schema describes each parameter individually, the description contributes a critical constraint the schema does not encode: the user must supply the full name plus either confirmation_number or email together with last_four_card, and email alone is explicitly invalid. This pairing requirement is essential for correct invocation and goes well beyond property-level documentation.
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 resource (reservation) and the operation (look up), and adds the framing 'by verifying the guest's identity,' which helps separate it from simple retrieval siblings like get_booking. It does not explicitly name or contrast sibling tools, so it stops short of the strongest possible differentiation.
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 provides clear invocation context: full name plus either a confirmation number or email with last-four-digits, and explicitly warns that an email alone is not sufficient. It gives an agent concrete criteria for when this tool will succeed, though it does not mention alternatives such as get_booking or resend_confirmation for cases where the confirmation number is already known.
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?
The description discloses key behavioral traits beyond annotations: recovery requests never reveal whether a reservation matched (privacy behavior), the confirmation is sent only to the existing email on the booking record with no recipient override, and email changes are handled externally. This adds meaningful context that annotations (readOnlyHint=false, destructiveHint=false) do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action, then provides the two usage paths, privacy behavior, and recipient constraint in a logical order. Every sentence earns its place; no filler 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?
Given the tool's complexity (two alternative invocation paths, privacy-sensitive behavior, no required parameters), the description covers all essential decision points: how to identify the guest, what happens when no match is found, where the email goes, and where to handle email changes. The output schema exists, so return values need not be described.
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 relationship between parameters: confirmation_number is the primary path, while first_name, last_name, and email are the alternative path when the confirmation number is unknown. It also clarifies that email is used only to find a match, not as a recipient override, which is not fully explicit 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 verb and resource ('Resend a hotel reservation confirmation email') and clearly distinguishes this from siblings like lookup_booking and cancel_booking by explaining the confirmation email's role. It also clarifies the two invocation paths (confirmation number vs. guest details), making the tool's purpose unmistakable.
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 says when to use each parameter path: use the confirmation number from a successful lookup_booking call, or use full name and email when the guest does not know their confirmation number, card last four, or check-in date. It also states the email is sent only to the address on file and points to a URL for email changes, giving clear context and exclusions.
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 (default 25, max 100) | |
| 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 4 (default 4). Use the returned cursor to load more pages. | |
| guests_per_room | No | Guests per room (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 and non-destructive behavior. The description adds useful context beyond annotations: results are nightly rates, guests pay the hotel directly, hotels issue their own confirmation numbers, and loyalty points apply. This helps the agent understand expected behavior without contradicting the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and remains compact. The later sentences about payment, confirmation, and loyalty points are slightly beyond what is needed to invoke the tool, but they are brief and provide useful domain context.
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 100% parameter schema coverage, existing output schema, and annotations indicating a read-only search operation, the description is complete enough for correct invocation. It clearly conveys the one-room limitation, which is the main non-obvious constraint in the current release.
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 fully documents all 12 parameters. The description reinforces the key one-room constraint and location/date focus, but it does not add new parameter-level meaning beyond what the schema already provides.
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 starts with a specific action and resource: 'Search hotels by location and dates for exactly one room.' It also states the return type, 'available properties with nightly rates,' and distinguishes itself from booking/lookup siblings by focusing on search only.
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 provides clear use context: search by location and dates, with a one-room constraint for the current 1Stay release. It does not explicitly name sibling alternatives like book_hotel or get_hotel_details, but the search-vs-booking distinction is strongly implied and easy to infer.
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 establish readOnly=true and destructiveHint=false, so the safety profile is covered. The description adds behavioral detail beyond that: the optional keyword filters by tool category, and omitting it yields the full list. This is enough for an agent to anticipate the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, and no filler. Every clause adds necessary information about behavior or parameter semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple, read-only discovery tool with one optional parameter and an output schema present. The description fully covers selection and invocation needs; nothing important 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 coverage is 100%, and the schema already describes the keyword parameter with examples. The description adds meaning by clarifying the default behavior when the parameter is absent, which is not 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 uses a specific verb and resource: 'List available 1Stay hotel booking tools.' It clearly differentiates this meta-tool from sibling tools like book_hotel, cancel_booking, and search_hotels, which perform operations rather than list them.
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 gives clear context on how to use the optional keyword filter and the default behavior when no keyword is supplied ('absence of a keyword returns all tools'). It doesn't explicitly contrast with sibling alternatives, but the description makes the tool-discovery purpose unambiguous.
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.
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."
3 tool updates
- Changed
book_hotel2 fields changed- changed
Input schema / properties / check_in / descriptionPrevious value: -"Check-in date (YYYY-MM-DD)"New value: +"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06)" - changed
Input schema / properties / check_out / descriptionPrevious value: -"Check-out date (YYYY-MM-DD)"New value: +"Check-out date in YYYY-MM-DD format (e.g. 2026-05-07)"
- Changed
get_hotel_details2 fields changed- changed
Input schema / properties / check_in / descriptionPrevious value: -"Check-in date (YYYY-MM-DD)"New value: +"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06)" - changed
Input schema / properties / check_out / descriptionPrevious value: -"Check-out date (YYYY-MM-DD)"New value: +"Check-out date in YYYY-MM-DD format (e.g. 2026-05-07)"
- Changed
search_hotels6 fields changed- changed
Input schema / properties / check_in / descriptionPrevious value: -"Check-in date (YYYY-MM-DD)"New value: +"Check-in date in YYYY-MM-DD format (e.g. 2026-05-06). Must be today or later." - changed
Input schema / properties / check_out / descriptionPrevious value: -"Check-out date (YYYY-MM-DD)"New value: +"Check-out date in YYYY-MM-DD format (e.g. 2026-05-07). Must be after check_in." - changed
Input schema / properties / latitude / descriptionPrevious value: -"Latitude — skip geocoding if provided with longitude"New value: +"Latitude — must be provided together with longitude" - changed
Input schema / properties / location / descriptionPrevious value: -"City, address, venue, or landmark. Required unless latitude/longitude provided."New value: +"City, address, venue, or landmark (e.g. 'Nashville, TN' or 'Times Square, NYC'). Required for all searches." - changed
Input schema / properties / longitude / descriptionPrevious value: -"Longitude — skip geocoding if provided with latitude"New value: +"Longitude — must be provided together with latitude" - changed
Input schema / requiredPrevious value: -[ - "check_in", - "check_out" -]New value: +[ + "location", + "check_in", + "check_out" +]
Related MCP Connectors
Skiplagged MCP Server for flight search, hotel booking, and travel planning
Book hotels over MCP. Pay over x402. 3M+ properties in 200+ countries, USDC on Base.
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.
Search MCP servers, agent skills and APIs for travel: hotel ID mapping, rates, rooms.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server that searches hotels on Booking.com with 80+ filter options using Playwright browser automation.740 npm1MIT

RollingGo Hotel MCPofficial
AlicenseNot gradedqualityBmaintenanceMCP server for searching, comparing, and booking hotels globally, with live rates and over 2 million properties, powered by DIDA.86MIT- AlicenseAqualityBmaintenanceSearches hotels and vacation rentals with nightly and total rates, ratings, amenities, and detailed property information through natural language in any MCP client.1MIT
- FlicenseAqualityCmaintenanceMCP 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.