Skip to main content
Glama

FlyBest Travel — Hotel Booking with Advisor Benefits

Server Details

Travel: live hotel rates with advisor benefits (breakfast, credit, upgrade), booked via a US agency.

Ownership verified
Status
Healthy
Uptime
99.4% over 20 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
flybestorg-cyber/flybest-connector
GitHub Stars
2
Server Listing
org.flybest/travel-hotels

TDQS

A3.8/5.0

Scored across 8 tools

Disambiguation4/5

Each tool has a fairly distinct purpose: search vs. content vs. rates vs. payment link vs. trip management. The main overlap risk is my_trip (single booking detail) vs. my_trips (list of bookings), which differ only by plurality, though the descriptions do clarify their roles.

Naming Consistency3/5

The sabre_* tools follow a loose namespace pattern (sabre_hotel_search, sabre_hotel_content, sabre_hotel_card_link), but the trip-management tools (my_trip, my_trips, cancel_my_trip) lack verbs and are inconsistently styled, and sabre_hotel_rates_coded is an odd suffix. Mixed conventions remain readable but are not predictable.

Tool Count4/5

Eight tools is well-scoped for a hotel booking workflow covering search, detail, rates, payment, history, and cancellation. No redundant or filler tools appear, staying comfortably in the reasonable range.

Completeness4/5

The surface covers the core lifecycle from search through rates and content to payment-link booking, plus listing, viewing, and cancelling trips, which is strong coverage. A gap exists around modifying/amending an existing booking rather than only cancelling it, but that is a manageable limitation.

Available Tools

8 tools
cancel_my_tripCancel my bookingA
DestructiveIdempotent
Inspect

Cancels one of the connected user's own bookings, by the number shown in my_trips. Two steps: the first call with confirm=false returns the current cancellation preview and cancels nothing; a second call with confirm=true within 30 minutes of that preview performs the cancellation. When those terms carry a penalty or are non-refundable, the cancellation also needs accept_penalty=true, which records that the traveller accepted the current charge. Changed or expired terms return a fresh preview for agreement. Missing fee information needs advisor verification and a new preview; a verified penalty does not prevent cancellation after agreement. An unknown result needs booking-status verification before any retry. Not reversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
tripYesnumber from my_trips
confirmYessecond step: cancels when the terms were previewed within the last 30 minutes; otherwise the call returns the preview
accept_penaltyNorecords that the traveller accepted the penalty shown in the preview; required when the terms carry a penalty or are non-refundable

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and idempotentHint=true, but the description goes well beyond them: it discloses the irreversibility ('Not reversible'), the 30-minute preview validity window, the two-step consent model, the penalty-acceptance record, and the required human verification paths. No contradiction with the annotations — the repeated confirm calls are consistent with idempotentHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and the two-step mechanic before the edge cases. Dense but each sentence carries a distinct rule (penalty, expired terms, missing fees, unknown result), though the penalty/fee/verification clauses could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by explaining what a preview call returns and how the sequential flow resolves. For a destructive, stateful, non-reversible operation, the error and verification paths are all covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so trip, confirm, and accept_penalty are already documented in the schema with essentially the same semantics (preview window, penalty acceptance). The description adds only light relational framing (accept_penalty records acceptance of 'the current charge'), so the baseline 3 for high schema coverage is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Cancels one of the connected user's own bookings') and anchors the identifier to a sibling ('the number shown in my_trips'), cleanly separating it from my_trips/my_trip which only list. An agent can pick this tool without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly describes the two-call protocol (confirm=false previews, confirm=true within 30 minutes cancels) and the conditional requirement for accept_penalty when terms carry a penalty or are non-refundable. It also prescribes what to do in failure modes: changed/expired terms return a fresh preview, missing fee information needs advisor verification, and an unknown result needs booking-status verification before retry.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

my_tripShow one of my bookingsA
Read-onlyIdempotent
Inspect

Details of one of the connected user's own bookings, by the number shown in my_trips.

ParametersJSON Schema
NameRequiredDescriptionDefault
tripYesnumber from my_trips

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds only the scoping fact that the booking must belong to the connected user, which is modest added value; nothing is said about errors for unknown numbers or what the returned detail contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the resource and the lookup key front-loaded. Nothing is padded or repeated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with a full annotation safety profile this is nearly adequate, but with no output schema the description never indicates what details the booking detail object contains or how a missing/invalid trip number is surfaced, leaving a small but real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, and the schema already states 'number from my_trips'. The description merely restates that same origin, adding no format, range, or validity detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (one of the connected user's own bookings) and the retrieval key (the number shown in my_trips), which cleanly separates it from the list-style sibling my_trips. It is clear, though the singular-vs-list distinction from my_trips is only implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by the number shown in my_trips' implies the agent must call my_trips first to obtain a valid trip number, which is useful workflow context. However, there is no explicit when-to-use statement, no exclusion of cancel_my_trip or the hotel/currency siblings, and no note about what happens with an invalid number.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

my_tripsList my bookingsA
Read-onlyIdempotent
Inspect

The bookings made through this connection — only the connected user's own. The number printed beside each one identifies it for my_trip and cancel_my_trip.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real context beyond that: the result is scoped to the connected user only and each entry carries an identifier. It does not mention pagination or ordering, keeping it out of 5 territory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the scope constraint and followed by the only other fact an agent needs (the identifying number). No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, no output schema and a trivial read operation, the description covers what the tool returns and how its results feed sibling tools. Only the return ordering/pagination is unaddressed, a minor gap for a zero-arg list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. It correctly avoids inventing filter syntax that does not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific resource (bookings) and a key scope qualifier ('only the connected user's own'), which meaningfully distinguishes it from the other lookup siblings. It never uses an explicit verb like 'list', leaning on the title to supply that, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It routes the agent forward by explaining that each booking's printed number 'identifies it for my_trip and cancel_my_trip', effectively telling the agent this is the source of the IDs the other two tools need. There is no explicit when/when-not phrasing, so it stops at clear context rather than full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sabre_currency_convertConvert currencyA
Read-onlyIdempotent
Inspect

Converts an amount between currencies at the reservation system's banker's selling rate. For estimates only: hotel bookings are made in the rate's own currency. on_date (DDMMMYY) selects a past day's rate.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYese.g. 1780.00
on_dateNoDDMMMYY - the rate in force that day, max 400 days back
via_nationNo2-letter country, to convert through a third currency
to_currencyNo3-letter code; omit for local currency
from_currencyYes3-letter code, e.g. EUR

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds genuinely useful behavior: which rate is applied (banker's selling rate), that results are estimates only, and that on_date selects a historical rate. It stops short of describing rounding, precision, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action and rate type, then the estimate caveat, then the date parameter. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-param, no-output-schema read tool, the description covers the essential agent-facing facts: what conversion rate is used, that output is an estimate, and how historical dates work. Missing only minor details like output precision or failure modes for invalid currency codes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented with format and examples. The description reinforces on_date semantics (DDMMMYY, past day's rate) but adds little beyond what the schema states, including the 400-day limit. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (converts) and resource (amount between currencies) and pins down the exact rate used ('banker's selling rate'). Siblings are hotel/trip tools, so no direct sibling confusion exists, but the description does not need to differentiate against an alternative converter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear usage caveat: 'For estimates only: hotel bookings are made in the rate's own currency', which tells the agent not to treat the result as a bookable amount. It also explains when on_date matters. It does not name alternatives or exclusions, but none are obviously relevant here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sabre_hotel_contentGet hotel detailsA
Read-onlyIdempotent
Inspect

Details for one hotel: address, description, amenities, check-in and check-out times, room count and a gallery of photos by category. No prices; rates come from sabre_hotel_rates_coded.

ParametersJSON Schema
NameRequiredDescriptionDefault
hotel_codeYesSabre hotel code from sabre_hotel_search
image_sizeNothumb | medium (default) | large | original

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuine value beyond that by scoping the payload (content only, no prices) and pointing to the rates tool, though it says nothing about auth requirements, rate limits, or failure modes for invalid hotel codes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The content inventory is front-loaded and the pricing exclusion/routing follows immediately, so the agent gets the scope and the boundary in one pass.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing return values, and it lists the returned fields explicitly. Combined with 100% schema coverage and annotations covering safety, an agent has everything needed to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (hotel_code, image_size) are already documented in the schema. The description mentions a photo gallery by category, which loosely relates to image_size, but adds no format or constraint detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and enumerates exactly what is returned (address, description, amenities, check-in/out times, room count, photo gallery). It also names the sibling it is not (rates come from sabre_hotel_rates_coded), so an agent can distinguish it from sabre_hotel_rates_coded without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence explicitly routes pricing lookups to sabre_hotel_rates_coded, and the schema notes the hotel_code comes from sabre_hotel_search, implying the correct call ordering. It stops short of an explicit when-to-use statement or exclusions for the other siblings, but the alternative is named clearly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sabre_hotel_rates_codedGet hotel ratesB
Read-onlyIdempotent
Inspect

The authoritative rate list for one hotel through the agency's reservation access: returned rates with room and bed type, the stay total in the hotel's currency (total_after_tax is the amount quoted; total_after_tax_excl_fees excludes fees), what is included (breakfast), excluded or unknown mandatory fees where stated, the cancellation deadline and penalty in words, deposit or prepayment terms, and the benefits attached to preferred-partner rates (daily breakfast, property credit where offered, upgrade on arrival subject to availability, early check-in / late check-out). hotel_name and chain_code come from the search result and select the partner rates; a call without either is refused before anything is sent. loyalty_id is the guest's own number with the hotel's loyalty programme (IHG One Rewards, Hilton Honors, World of Hyatt, I Prefer, Marriott Bonvoy): it is sent to the hotel with the search so any member offer the hotel makes this guest can come back (no discount is guaranteed), and a rate found this way carries the number and books only with the same loyalty_id. Hilton Honors, World of Hyatt, IHG One Rewards, I Prefer and Marriott Bonvoy member rates are listed without a number; Marriott Bonvoy member rates come back at some Marriott properties (about 2% under the public rate where measured). Rows marked members-only book only from a search made with the guest's number. rooms=2 prices two rooms and the returned rate_key then covers both. Rooms with different guest arrangements need separate one-room quotes and payment links before booking; the combined rate key cannot be reused. Family rate searches use the actual adults, children and child_ages. A chosen row that reads "Family occupancy verified for this rate" has verified occupancy for the party on its "Requested family for this rate" line; other rows in the list may still be unverified. The selected row's family_quote_token travels unchanged with its own rate_key into the payment-link request. The direct family booking preserves the quoted party. Deposits, prepayment and non-refundable rates follow the normal payment and cancellation consent flow. Unverified occupancy or no suitable family rate needs Jay's help at jay@flybest.org. An adults-only search is an alternative only when the traveller explicitly chooses an adults-first booking: free cancellation and no deposit or prepayment, with children and their charges still pending advisor confirmation. It is not an automatic substitute for a family quote. A comparison uses the same room/product, rate plan, dates, currency, benefits and cancellation/payment terms; the difference between the lists' lowest prices is not a child surcharge. An unchanged matching total does not establish that every child extra is free. Child policy, maximum occupancy and extra-person or extra-bed charges appear only where the rate text states them. An advisor request includes hotel, dates, room/rate preference, adult count and children's ages; sending an e-mail requires the traveller's explicit request. Results start with a note for the traveller about booking in this conversation and end with a short reminder. The traveller can confirm their chosen option in this chat to receive its secure payment page. A membership question appears near the start when the hotel has a known loyalty programme and no number was supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomsNohow many rooms at this property for these dates. Totals cover ALL of them for the whole stay; per_room_total is on each row beside it. adults/children/child_ages then describe EVERY room.
adultsNo
check_inYesYYYY-MM-DD
childrenNonumber of children, sent together with child_ages of the same length (the call is refused otherwise — Sabre answers children-without-ages with 200 and zero rates, which is indistinguishable from sold out. Omitting children means every price returned is an ADULTS-ONLY price.
currencyNo3-letter code for the DISPLAY conversion shown beside each rate (default USD). The hotel's OWN currency is always what is quoted and what gets charged — this only changes the ≈ estimate, e.g. CNY for a client who thinks in RMB. Allowed: USD CNY HKD TWD EUR GBP JPY SGD AUD CAD CHF THB KRW. Anything else is REFUSED, because Sabre answers an unknown code with 200 and ZERO rates (measured 2026-09-12) — indistinguishable from sold out.
max_rowsNorows to return, default 60, up to 400. The cap is ours, not Sabre's, and rows come cheapest-first — so a short answer lost the DEAREST rows. Check `truncated` in the reply before concluding a programme has no suites
check_outYesYYYY-MM-DD
chain_codeYesfrom sabre_hotel_search — drives programme selection
child_agesNoe.g. [10, 8]. Check occupancy.children_honoured in the result: many properties accept and then ignore children, and the total comes back adults-only.
hotel_codeYesSabre hotel code
hotel_nameYesfrom sabre_hotel_search — drives programme selection
loyalty_idNothe guest's own membership number with this hotel's loyalty programme (Marriott Bonvoy, IHG One Rewards, Hilton Honors, World of Hyatt…), as on the card, no chain code. It is sent to the hotel with the search so any member offer the hotel makes this guest can come back (no discount is guaranteed); every rate found this way carries the number into the booking and books only with the same loyalty_id. Hilton Honors, World of Hyatt, IHG One Rewards, I Prefer and Marriott Bonvoy member rates are listed without it, marked members-only (Marriott's at some properties only).
rate_codesNooverride the automatic selection; unloaded codes are dropped rather than silently returning public rates
with_perksNofetch the benefit text (breakfast/credit/upgrade) for the cheapest rows — one extra Sabre call each
perks_top_nNohow many rows per programme (default 5)
room_containsNokeep only rows whose room/plan text contains this, e.g. "suite" or "villa". Applied BEFORE the row cap, so this is how you reach a room type that prices above the cheap rooms
cheapest_firstNofalse sorts dearest first — the other way to surface suites
negotiated_onlyNokeep ONLY programme-negotiated rows and drop the public ones. On a property with several plans per room the public half is what pushes suites out of the window
room_occupanciesNoone entry per room, in room order, when the rooms differ. Without rooms, the number of entries is the room count; with rooms, the two must agree. Mutually exclusive with adults/children/child_ages. Different guest arrangements need separate one-room quotes and payment links before booking; the combined rate key cannot be reused.

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and idempotentHint=true, so safety is covered. The description goes further by disclosing important behavioral traits: calls without hotel_name or chain_code are refused before sending, loyalty_id carries into bookings, members-only rows are restricted, and family_quote_token must travel unchanged. It also documents output structure (rate fields, benefits, cancellation terms) beyond what annotations provide, though it doesn't mention rate limits or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely dense and runs over 300 words in a single paragraph, with no headings or front-loaded summary. While the opening sentence is reasonably direct, critical usage guidance is buried mid-paragraph, making it hard to parse quickly. Many sentences contain multiple clauses and parentheticals that could be streamlined or moved to the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 19 parameters, no output schema, and high schema coverage, the description attempts to cover a lot but does so unevenly. It explains important edge cases (family quotes, loyalty programs, room arrangements) but omits how results are structured, what 'truncated' means in practice, or how to interpret occupancy.children_honoured beyond the schema. The escalation path to Jay is stated, which is useful, but the overall completeness is adequate rather than thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 95%, so the schema already documents nearly all parameters. The description adds contextual meaning: it explains that hotel_name and chain_code select partner rates, that loyalty_id is sent to the hotel and carries into bookings, and that rooms=2 prices two rooms with a combined rate_key. Some parameter mentions (e.g., currency, with_perks) repeat what the schema already says, but the added behavioral context is valuable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description's opening states it returns 'the authoritative rate list for one hotel through the agency's reservation access,' which identifies the resource, but it's immediately buried in a dense enumeration of return fields and behavioral details. The description does not differentiate itself from sabre_hotel_search or explain why an agent would use this tool over sibling hotel tools, leaving the core purpose less clear than it should be.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly covers some tricky edge cases (family vs adults-only searches, separate quotes for different room arrangements, when to escalate to Jay), but it never states when an agent should choose this tool over sabre_hotel_search or sabre_hotel_content. The guidance is embedded in operational detail rather than presented as clear usage conditions.

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.

  1. 1 tool update
    • Changedsabre_hotel_rates_coded1 field changed
      • changedInput schema / properties / loyalty_id / description
        Previous value: -"the guest's own membership number with this hotel's loyalty programme (Marriott Bonvoy, IHG One Rewards, Hilton Honors, World of Hyatt…), as on the card, no chain code. It is sent to the hotel with the search so any member offer the hotel makes this guest can come back (no discount is guaranteed); every rate found this way carries the number into the booking and books only with the same loyalty_id. Hilton Honors, World of Hyatt, IHG One Rewards and I Prefer member rates are listed without it, marked members-only."New value: +"the guest's own membership number with this hotel's loyalty programme (Marriott Bonvoy, IHG One Rewards, Hilton Honors, World of Hyatt…), as on the card, no chain code. It is sent to the hotel with the search so any member offer the hotel makes this guest can come back (no discount is guaranteed); every rate found this way carries the number into the booking and books only with the same loyalty_id. Hilton Honors, World of Hyatt, IHG One Rewards, I Prefer and Marriott Bonvoy member rates are listed without it, marked members-only (Marriott's at some properties only)."
  2. 1 tool update
    • Changedsabre_hotel_card_link2 fields changed
      • changedInput schema / properties / allow_deposit / description
        Previous value: -"permits a deposit rate with the payment timing stated in its live terms to be offered; the page asks the guest for consent"New value: +"no longer needed (2026-10-15): the page shows the live deposit and its timing and the payer's tick authorises it; accepted for compatibility"
      • addedInput schema / properties / allow_nonrefundable / description
        Added value: +"no longer needed (2026-10-15): the page shows the live cancellation terms and the payer's tick authorises them; accepted for compatibility"
  3. 1 tool update
    • Changedsabre_hotel_search3 fields changed
      • changedInput schema / properties / check_in / description
        Previous value: -"YYYY-MM-DD"New value: +"YYYY-MM-DD. Optional: without check_in and check_out the search uses sample dates and its first line names them."
      • changedInput schema / properties / check_out / description
        Previous value: -"YYYY-MM-DD"New value: +"YYYY-MM-DD. Optional; with check_in alone the sample stay is 2 nights."
      • changedInput schema / required
        Previous value: -[
        -  "location",
        -  "check_in",
        -  "check_out"
        -]New value: +[
        +  "location"
        +]
  4. 1 tool update
    • Changedsabre_hotel_card_link1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "hotel_code",
        -  "rate_key",
        -  "check_in",
        -  "check_out",
        -  "given_name",
        -  "surname",
        -  "expected_total",
        -  "currency",
        -  "email"
        -]New value: +[
        +  "hotel_code",
        +  "rate_key",
        +  "check_in",
        +  "check_out",
        +  "given_name",
        +  "surname",
        +  "expected_total",
        +  "currency"
        +]
  5. 1 tool update
    • Changedsabre_hotel_search3 fields changed
      • addedInput schema / properties / latitude
        Added value: +{
        +  "description": "Optional, together with longitude: the centre of the place in decimal degrees, for a place a search by name could not locate. Accepted only where the location text confirms it — within 50 km of a city it names, or inside the country it names; otherwise the call is refused and nothing is searched.",
        +  "type": "number"
        +}
      • changedInput schema / properties / location / description
        Previous value: -"3-letter city/airport code (SBA), or a city name — \"Paris\", \"东京\", or \"City, CC\" for anywhere unusual"New value: +"3-letter city/airport code (SBA), a city name — \"Paris\", \"东京\" — or a neighbourhood, resort or hotel with its city and country: \"Namba, Osaka, Japan\", \"Soma Bay, Egypt\". The city written after a comma is checked against, and searched when the first part is not a place on its own."
      • addedInput schema / properties / longitude
        Added value: +{
        +  "description": "Optional, together with latitude (decimal degrees).",
        +  "type": "number"
        +}
  6. 1 tool update
    • Changedsabre_hotel_rates_coded1 field changed
      • changedInput schema / properties / room_occupancies / description
        Previous value: -"one entry per room, in room order, when the rooms differ. Mutually exclusive with adults/children/child_ages. Different guest arrangements need separate one-room quotes and payment links before booking; the combined rate key cannot be reused."New value: +"one entry per room, in room order, when the rooms differ. Without rooms, the number of entries is the room count; with rooms, the two must agree. Mutually exclusive with adults/children/child_ages. Different guest arrangements need separate one-room quotes and payment links before booking; the combined rate key cannot be reused."
  7. 1 tool update
    • Changedsabre_hotel_card_link1 field changed
      • addedInput schema / properties / adults / description
        Added value: +"Adults per room — the same number used in sabre_hotel_rates_coded for this rate_key (default 1). A rate_key priced for a different party is refused before any link is created."
  8. 1 tool update
    • Changedsabre_hotel_card_link4 fields changed
      • addedInput schema / properties / child_ages / description
        Added value: +"Actual children's ages, matching the selected family quote. adult_pending retains them for advisor confirmation even though only the adults are initially booked."
      • addedInput schema / properties / children / description
        Added value: +"Actual number of children in the party. direct books this occupancy; only explicit adult_pending retains them for advisor follow-up instead of booking them."
      • addedInput schema / properties / family_mode
        Added value: +{
        +  "default": "direct",
        +  "description": "direct: book the actual adults and children from a rate verified for that party. adult_pending: only after the traveller explicitly chooses adults first, use an adults-only free-cancellation key with no deposit or prepayment and keep children/ages for advisor follow-up.",
        +  "enum": [
        +    "direct",
        +    "adult_pending"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / family_quote_token
        Added value: +{
        +  "description": "Opaque family quote proof copied unchanged from the SAME selected rate row as rate_key; tied to its real adults, children and ages. It is not interchangeable across rows or parties.",
        +  "type": "string"
        +}
  9. 2 tool updates
    • Changedsabre_hotel_card_link5 fields changed
      • changedInput schema / properties / allow_deposit / description
        Previous value: -"permits a deposit rate — one whose card is charged now — to be offered; the page asks the guest for consent"New value: +"permits a deposit rate with the payment timing stated in its live terms to be offered; the page asks the guest for consent"
      • changedInput schema / properties / currency / description
        Previous value: -"REQUIRED. The currency of expected_total, copied from the SAME rate row — the hotel's OWN currency, not USD. The commit compares the whole tuple, so a wrong currency refuses the booking AFTER the guest has typed their card."New value: +"REQUIRED. The currency of expected_total, copied from the SAME rate row — the hotel's own currency, not a converted estimate. A changed currency requires a newly selected quote."
      • changedInput schema / properties / expected_deposit / description
        Previous value: -"the deposit figure from the rates row (deposit_amount) as shown to the payer. OPTIONAL since 2026-09-26: the page charges the hotel's own deposit as long as it is within the stay total, and reports what it took — a deposit that moved no longer refuses at the guest's card. Pass it when you have it so the guest sees the difference."New value: +"the deposit figure from the rates row (deposit_amount) as shown to the payer, when known. A changed deposit is displayed on the existing page for fresh agreement before continuing; this input is not consent to a higher charge."
      • changedInput schema / properties / expected_total / description
        Previous value: -"the all-in total of the chosen rate row, e.g. 288.09 - a price rise or changed currency stops the booking; a lower price can book"New value: +"the all-in total of the chosen rate row, e.g. 288.09 - for the same room, dates and currency, changed totals or cancellation terms are displayed on the existing page for the payer to agree again and continue. 80 and 80.00 represent the same amount."
      • changedInput schema / properties / rooms / description
        Previous value: -"Rooms in ONE segment, all for the same guest and the same room type — the way an agent sells two rooms on one PNR. The rate_key comes from sabre_hotel_rates_coded with the same rooms=N: a two-room key and a one-room key are entirely different keys and only the two-room one sells two rooms, and its total is already the whole stay. Rooms sold together share one segment and CANNOT be cancelled individually. Different room types cannot share a sell — for that, book the first room and then mint a second link with add_to_pnr set to the locator it returned. LIVE on production since 2026-09-11 (certified on CERT: one segment carrying NumberOfUnits=2)."New value: +"Rooms in ONE segment, all for the same guest and the same room type and guest arrangement per room. Different arrangements need separate one-room quotes and links. The rate_key comes from sabre_hotel_rates_coded with the same rooms=N: a two-room key and a one-room key are entirely different keys and only the two-room one sells two rooms, and its total is already the whole stay. Rooms sold together share one segment and CANNOT be cancelled individually. Different room types cannot share a sell — for that, book the first room and then mint a second link with add_to_pnr set to the locator it returned. LIVE on production since 2026-09-11 (certified on CERT: one segment carrying NumberOfUnits=2)."
    • Changedsabre_hotel_rates_coded1 field changed
      • changedInput schema / properties / room_occupancies / description
        Previous value: -"one entry per room, in room order, when the rooms differ. Mutually exclusive with adults/children/child_ages."New value: +"one entry per room, in room order, when the rooms differ. Mutually exclusive with adults/children/child_ages. Different guest arrangements need separate one-room quotes and payment links before booking; the combined rate key cannot be reused."
  10. 1 tool update
    • Changedsabre_hotel_card_link1 field changed
      • changedInput schema / properties / expected_total / description
        Previous value: -"the all-in total of the chosen rate row, e.g. 288.09 - a moved rate aborts the booking"New value: +"the all-in total of the chosen rate row, e.g. 288.09 - a price rise or changed currency stops the booking; a lower price can book"
  11. 2 tool updates
    • Changedsabre_hotel_card_link1 field changed
      • changedInput schema / properties / loyalty_id / description
        Previous value: -"the guest's own programme number with the hotel's chain (not an advisor ID), filed on the segment when the room is booked"New value: +"the guest's own programme number with the hotel's chain (not an advisor ID), filed on the segment when the room is booked. A rate_key found by sabre_hotel_rates_coded WITH loyalty_id carries that number into the booking: pass the same number here (a different one is refused before anything is sent; none adopts the searched one), and a row marked members-only books only from a search made with the guest's number."
    • Changedsabre_hotel_rates_coded1 field changed
      • addedInput schema / properties / loyalty_id
        Added value: +{
        +  "description": "the guest's own membership number with this hotel's loyalty programme (Marriott Bonvoy, IHG One Rewards, Hilton Honors, World of Hyatt…), as on the card, no chain code. It is sent to the hotel with the search so any member offer the hotel makes this guest can come back (no discount is guaranteed); every rate found this way carries the number into the booking and books only with the same loyalty_id. Hilton Honors, World of Hyatt, IHG One Rewards and I Prefer member rates are listed without it, marked members-only.",
        +  "type": "string"
        +}

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.