Skip to main content
Glama

Gondola Award Travel Search

Server Details

Travel award search: compare cash vs points on hotels, flights & cars, cents-per-point, and book.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
gondola-ai/gondola-mcp
GitHub Stars
8
Server Listing
Gondola AI

Available Tools

38 tools
book_hotelA
Destructive
Inspect

Book a hotel room using a rate from get_hotel_rates. Requires guest details and a saved payment method. Use get_payment_methods to find the payment ID. The gondola_rate_id comes from the room rates returned by get_hotel_rates.

ParametersJSON Schema
NameRequiredDescriptionDefault
given_nameNoGuest's first name.
payment_idYesPayment method ID from get_payment_methods.
family_nameNoGuest's last name (minimum 2 characters).
phone_numberNoGuest's phone number with country code (e.g. "+1-555-123-4567").
email_addressNoGuest's email for confirmation.
gondola_rate_idYesThe rate ID from get_hotel_rates room rates.
special_requestNoOptional special request (e.g. "high floor", "late check-in").
travel_profile_idNoOptional travel profile ID from get_travel_profiles. Prefills any guest details that were not passed explicitly.
loyalty_account_idNoOptional loyalty account ID to earn points and elite credit on this stay. Use the Member Number from get_loyalty_accounts that matches the booked hotel's chain (e.g. the World of Hyatt account for a Hyatt property).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already include destructiveHint: true, which covers the potential for irreversible charges. The description adds context about requiring a saved payment method, implying a financial transaction, but doesn't elaborate on consequences or success/failure behavior. This is adequate but not rich beyond annotations.

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?

The description is three sentences, each with a clear purpose: state the action, list requirements, and provide sourcing instructions. It is front-loaded with the primary action and contains 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 an output schema present, return values need not be explained. The description covers the essential call flow and prerequisites. It doesn't mention optional parameters like loyalty_account_id, but those are documented in the schema, so this is acceptable. It is nearly complete for an agent to execute 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 coverage is 100%, and the schema already documents each parameter including the sources for gondola_rate_id and payment_id. The description reinforces these relationships but adds minimal new information beyond what the schema provides. Baseline 3 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?

The description clearly states the action (book a hotel room) and the resource (a rate from get_hotel_rates). It distinguishes from sibling book_vehicle by specifying hotel, and the reference to get_hotel_rates immediately orients the agent to the prerequisite flow.

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?

It explicitly states requirements (guest details and saved payment method), names get_payment_methods for finding the payment ID, and identifies get_hotel_rates as the source for gondola_rate_id. This gives clear, actionable instructions on how to gather necessary inputs.

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

book_vehicleA
Destructive
Inspect

Book a rental vehicle from a search result. Requires a Gondola account and a saved payment method (use get_payment_methods to find the payment ID). The vendor_code, rate_code, acriss_code, and search_id all come from search_vehicles results.

ParametersJSON Schema
NameRequiredDescriptionDefault
rate_codeYesRate code of the selected vehicle from search results.
search_idYesSearch ID from search_vehicles.
given_nameYesRenter's first name.
payment_idYesPayment method ID from get_payment_methods.
acriss_codeYesACRISS vehicle classification code from search results.
family_nameYesRenter's last name.
vendor_codeYesVendor code from search results (e.g. "ZE" for Hertz).
phone_numberYesRenter's phone number with country code (e.g. "+1-555-123-4567").
email_addressYesRenter's email for confirmation.
pickup_locationNoOptional pickup airport IATA code of the selected vehicle. Pass through whatever pickup_location the search returned for this vehicle to disambiguate metro fanouts (e.g. JFK vs LGA in NYC).
loyalty_account_idNoOptional loyalty account ID to earn points on this rental.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already convey destructive and open-world character, and the description adds meaningful auth/financial context: booking requires an account and a saved payment method, implying a charged reservation. It does not over-explain behaviors the annotations already cover, and nothing contradicts them.

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 with zero filler; the core action is first, then prerequisites, then parameter provenance. Each clause earns its place.

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 an 11-parameter destructive booking action, the description supplies the missing real-world context—account, payment, and search-result provenance—that the schema cannot. An output schema exists to cover return values, so the only minor gap is not addressing openWorldHint explicitly or describing side effects in more detail.

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?

With 100% schema coverage, the schema already documents every parameter, so the baseline is 3; the description adds provenance for four parameters (vendor_code, rate_code, acriss_code, search_id) and maps payment_id to get_payment_methods. This saves an agent from guessing where booking identifiers originate.

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 action ('Book') and object ('a rental vehicle from a search result'), which clearly distinguishes it from book_hotel, cancel_vehicle_booking, and get_vehicle_booking_link. The phrase 'from a search result' anchors it to search_vehicles rather than a general booking operation.

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?

Names required preconditions (Gondola account, saved payment method) and tells the agent exactly where to source payment_id (get_payment_methods) and vehicle identifiers (search_vehicles). It does not explicitly list when not to use it or mention sibling alternatives such as get_vehicle_booking_link, so it stops short of a full 5.

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

cancel_vehicle_bookingA
Destructive
Inspect

Cancel an existing vehicle booking by its Gondola booking ID. Use this when a user wants to cancel a rental they previously booked.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet true only after the user has seen the cancellation terms from the preview call and agreed.
booking_idYesThe Gondola booking ID (confirmation number) of the vehicle booking.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations provide destructiveHint=true and openWorldHint=true, so the mutation risk is already flagged. The description adds little behavioral detail beyond the obvious cancellation action, and does not mention irreversibility, refund implications, or confirmation requirements.

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 deliver the action, resource, identifier, and usage context with no redundancy. The main operation is front-loaded.

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?

Given the output schema exists and annotations cover destructive intent, the description is nearly complete for a straightforward cancellation call. The confirm parameter's terms-and-conditions flow is not mentioned in the description, but it is fully documented in the input schema.

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 the baseline applies. The description reinforces that booking_id is a Gondola ID but does not add meaning beyond the schema's own parameter descriptions, including the confirm flag semantics.

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?

The description states a specific verb ('Cancel'), a specific resource ('vehicle booking'), and the required identifier ('Gondola booking ID'). It is immediately distinct from sibling tools like book_vehicle or get_vehicle_booking.

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 description explicitly says to use this when a user wants to cancel a previously booked rental. It gives clear context for use, though it does not enumerate exclusions or close alternatives.

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

compare_ratesA
Read-only
Inspect

Compare cash vs points rates and render a side-by-side rate_comparison widget for one or more hotels. Use this whenever the user is making a cash-vs-points decision — whether focused on a single hotel ("compare cash and points at Park Hyatt Tokyo") or weighing top picks against each other ("which of these is the best points redemption?"). Pass an array of one to five hotel_ids resolved from search_hotels. Returns cash rate, points rate, CPP valuation, and deal scores per hotel.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkinYesCheck-in date in YYYY-MM-DD format.
checkoutYesCheck-out date in YYYY-MM-DD format.
hotel_idsYesArray of one to five hotel IDs to compare. A single-element array is valid when the user is focused on one hotel. Get these from search_hotels results.
num_adultsNoNumber of adult guests.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already signal readOnlyHint=true and destructiveHint=false, and the description adds meaningful behavioral detail beyond that: it renders a rate_comparison widget and returns specific valuations (cash rate, points rate, CPP, deal scores). This gives the agent a clear picture of what invoking the tool will do and what it will produce.

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?

The description is front-loaded with the core purpose, then gives usage context, parameter guidance, and return values in four focused sentences. Every sentence earns its place, and the examples are compact yet illustrative.

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?

The description covers purpose, when to use, how to source hotel_ids, the valid array size, required dates, and outputs. With full schema coverage and an output schema present, nothing essential is missing 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.

Parameters3/5

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's parameter guidance—'Pass an array of one to five hotel_ids resolved from search_hotels'—mostly repeats what the schema already states. It adds no new semantic detail beyond the schema, so no higher score is warranted.

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?

The description opens with a clear verb-resource pair: 'Compare cash vs points rates' and mentions rendering a side-by-side rate_comparison widget. It also names the specific outputs (cash rate, points rate, CPP valuation, deal scores), which clearly distinguishes it from sibling tools like get_multi_night_rates or diagnose_rates.

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 description explicitly states when to use the tool: 'Use this whenever the user is making a cash-vs-points decision.' It gives concrete example phrasings and covers both single-hotel and multi-hotel scenarios. It does not explicitly list when not to use it or name alternative tools, so it stops short of a 5.

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

create_rate_alertAInspect

Create a rate alert to monitor a hotel for price drops. The user will be notified by email when the rate drops. Optionally specify dates, or leave them out to monitor any two-night stay.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkinNoOptional check-in date in YYYY-MM-DD format.
checkoutNoOptional check-out date in YYYY-MM-DD format.
hotel_idYesThe hotel's Vervotech property ID (from search results).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations provide some hints (openWorldHint, destructiveHint), and the description adds valuable behavioral context: the user receives an email when the rate drops, and omitting dates means monitoring any two-night stay. It does not cover duplicate-alert behavior or monitoring duration, but these are not critical for invoking the tool.

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

Conciseness5/5

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

The description is three sentences with no wasted words. It front-loads the core purpose and notification behavior, then adds the optional-date nuance without repetition.

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?

For a simple create operation with one required parameter, three fully documented optional parameters, and an output schema, the description provides all necessary context: purpose, notification mechanism, and date semantics. There are no meaningful gaps that would prevent an agent from invoking the tool correctly.

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 schema already documents all three parameters clearly, so the baseline is 3. The description adds meaningful semantic detail: leaving out checkin/checkout means the alert monitors any two-night stay, which goes beyond the schema's individual parameter descriptions.

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?

The description clearly states the action: create a rate alert to monitor a hotel for price drops, with email notification. It distinguishes this from sibling tools like get_rate_alerts and delete_rate_alert by naming exactly what the tool creates and its purpose.

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 description gives clear context for when to use the tool: when a user wants to be notified about hotel price drops. It also explains date behavior, but it does not explicitly contrast this tool with alternatives such as get_rate_alerts or delete_rate_alert, though no misleading guidance is present.

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

credit_card_coverageA
Read-only
Inspect

Look up rental car CDW/LDW (collision damage waiver / loss damage waiver) coverage provided by a credit card. Useful before booking — tells the user whether they can decline the rental company's expensive insurance. Provide EITHER credit_card_product_name (exact card match) OR card_number_bin + card_provider (network-tier-based lookup).

ParametersJSON Schema
NameRequiredDescriptionDefault
card_providerNoCard network: "visa", "mastercard", "amex", or "discover". Required with card_number_bin.
card_number_binNoFirst 6-8 digits of the card number (BIN). Used with card_provider for network-tier-based lookup when the exact product name isn't known.
credit_card_product_nameNoExact card product name (e.g. "Chase Sapphire Preferred", "American Express Platinum"). Preferred when known.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds behavioral context beyond that by explaining the result's interpretive value ('tells the user whether they can decline the rental company's expensive insurance') and confirming this is a non-mutating lookup. 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.

Conciseness5/5

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

Three sentences with no filler. Purpose is front-loaded, the use case is explained in a compact aside, and the parameter guidance is condensed into one clear either/or sentence. Every sentence earns its place.

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?

Covers purpose, timing, parameter alternatives, and result interpretation, and the output schema covers return structure so it need not be repeated. Minor gap: it doesn't explicitly distinguish itself from the sibling get_vehicle_booking_coverage tool, though the credit-card framing makes confusion unlikely.

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 schema already documents all three parameters with 100% coverage, so the baseline is 3. The description adds meaningful semantics beyond the schema: it specifies the exclusive either/or relationship between credit_card_product_name and card_number_bin + card_provider, and explains that the BIN path is network-tier-based while the product name path is exact-match.

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 lookup operation ('Look up rental car CDW/LDW coverage'), names the exact resource (credit card coverage), and ties it to a concrete decision (declining rental company insurance). It is clearly differentiated from sibling booking-coverage tools by focusing on credit-card-provided coverage rather than booking-level coverage.

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?

Explicitly frames when the tool is useful ('before booking') and gives clear either/or parameter guidance for invocation. However, it does not explicitly name alternatives or exclusion conditions, such as when get_vehicle_booking_coverage would be more appropriate.

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

delete_rate_alertA
Destructive
Inspect

Delete a rate alert to stop monitoring a hotel for price drops.

ParametersJSON Schema
NameRequiredDescriptionDefault
alert_idYesThe rate alert ID to delete (from get_rate_alerts).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The destructiveHint annotation already flags deletion, and the description reinforces it by explaining the operational effect (stopping price-drop monitoring). It does not mention reversibility or confirmation, but the annotation and simple delete action are sufficient.

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, front-loaded sentence with no redundant words. Every part contributes meaning.

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?

For a one-parameter delete with a destructive annotation and an output schema, the description and parameter schema together provide everything needed: what it does, why, and where the ID comes from.

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%, and the parameter description already explains alert_id is from get_rate_alerts. The tool description itself adds no parameter-specific meaning, so the baseline of 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?

The description uses the specific verb 'Delete' with the resource 'rate alert' and explicitly states the purpose ('to stop monitoring a hotel for price drops'). This clearly distinguishes it from create_rate_alert and get_rate_alerts.

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 phrase 'to stop monitoring a hotel for price drops' provides clear context for when the tool is appropriate. It does not explicitly name alternatives or exclusion conditions, but the opposite action (create_rate_alert) is obvious from context.

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

diagnose_ratesA
Read-only
Inspect

Diagnose rate availability and per-supplier statuses for a specific hotel. Use this when a power user asks why certain rates aren't showing (e.g. "why is there no AAA rate?" or "is this hotel mapped to Travelport?"). Returns per-source status and a full breakdown of every rate by type. Diagnostic — not for casual recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkinYesCheck-in date in YYYY-MM-DD format.
checkoutYesCheck-out date in YYYY-MM-DD format.
hotel_idYesThe hotel's Vervotech property ID.
num_adultsNoNumber of adult guests.
rate_sourcesNoOptional comma-separated list of rate sources to check (e.g. "travelport", "direct,travelport"). Omit to check all sources.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the context that it returns per-source status and a full rate breakdown, and that it is diagnostic, which is useful but not essential given the output schema carries return details.

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 sentences, each earning its place: a precise function statement, concrete use-case triggers, and an exclusionary closing note. There is no filler or repetition of schema content.

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 a high-coverage schema and an output schema present, the description provides enough additional context: when to call it, example questions, and the distinction from casual recommendations. Nothing critical is missing 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.

Parameters3/5

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

Schema coverage is 100%, so every parameter is already documented in the input schema. The description reinforces the notion of per-supplier statuses but does not add meaning beyond what the schema provides, which matches the baseline score of 3.

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?

The description opens with a specific verb and resource — 'Diagnose rate availability and per-supplier statuses for a specific hotel' — and grounds it in concrete user questions like 'why is there no AAA rate?'. It clearly distinguishes itself from sibling tools by stating it is diagnostic and not for casual recommendations.

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 provides an explicit when-to-use trigger: when a power user asks why certain rates aren't showing, with two concrete examples. It also excludes casual recommendation use, but it does not name specific alternative tools to use instead, so it falls just short of a 5.

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

get_bookingA
Read-only
Inspect

Get details for a hotel booking made through Gondola, using the Gondola booking ID shown as "Gondola booking" by get_upcoming_trips and get_past_trips. Returns hotel name, dates, room type, rate, status, and cancellation policy. A hotel or airline confirmation number will not resolve. Reservations Gondola imported from email have no Gondola booking ID; get_upcoming_trips and get_past_trips already return their full detail, so answer from those instead of calling this.

ParametersJSON Schema
NameRequiredDescriptionDefault
booking_idYesThe Gondola booking ID, as shown by get_upcoming_trips or get_past_trips. Not a hotel or provider confirmation number.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint true and destructiveHint false; the description adds important behavior beyond that: alternate confirmation numbers will not resolve, and imported email reservations lack IDs. This prevents failed calls and instructs fallback behavior, giving the agent a clear model of what the tool can and cannot do.

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?

The description is four sentences but each sentence earns its place: what it does, what it returns, what it won't resolve, and when to use an alternative. It is front-loaded with the core purpose and contains no filler or repetition.

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?

For a single-parameter read-only tool with an output schema, the description covers the full decision space: source of the ID, expected output, failure conditions, and fallback tool. An agent has everything needed to decide whether to call this tool and how to pass the parameter.

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 input schema already documents booking_id at 100% coverage, so the baseline is 3. The description adds practical meaning by naming the exact display label 'Gondola booking', excluding hotel/airline confirmation numbers, and clarifying that email-imported reservations have no booking ID. These constraints go beyond the bare schema text.

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?

The description opens with a specific verb and resource: 'Get details for a hotel booking made through Gondola.' It enumerates the returned fields (hotel name, dates, room type, rate, status, cancellation policy) and clearly scopes the tool to Gondola bookings, distinguishing it from sibling tools like get_booking_link and get_vehicle_booking.

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?

It explicitly tells the agent when to use it: with the Gondola booking ID shown by get_upcoming_trips and get_past_trips. It also gives strong when-not-to-use guidance: confirmation numbers will not resolve, and email-imported reservations have no Gondola booking ID, so the agent should answer from get_upcoming_trips/get_past_trips instead.

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

get_flight_creditsA
Read-only
Inspect

Get the user's active airline flight credits, eCredits, travel funds, vouchers, and travel-bank balances. Returns the airline, remaining usable amount, currency, credit type, and expiration date when known. Use this whenever the user asks whether they have unused airline money, credits from cancelled flights, or travel vouchers. Credit numbers and confirmation numbers are deliberately not exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark it read-only and non-destructive, so the description only needs to add extra context. It discloses that only active credits are returned, that credit/confirmation numbers are deliberately hidden, and that expiration dates are included 'when known'—useful behavioral nuances beyond the annotations.

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

Conciseness5/5

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

Four sentences, each earning its place: what the tool returns, the return fields, when to use it, and a key limitation. Information is front-loaded and there is no fluff.

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?

For a zero-parameter read-only tool with an output schema, the description covers purpose, return content, invocation triggers, and privacy limitations. Nothing an agent needs to call it correctly appears missing.

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 has zero parameters and schema coverage is trivially 100%, so the baseline for parameter semantics is 4. The description correctly focuses on behavior and return data rather than parameters, needing no additional compensating detail.

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?

The description names a specific resource ('airline flight credits, eCredits, travel funds, vouchers, and travel-bank balances') with a clear verb ('Get'), and lists the returned fields. It implicitly distinguishes itself from the sibling get_free_night_credits by focusing on airline/travel credits rather than hotel free-night credits.

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 description gives explicit guidance: 'Use this whenever the user asks whether they have unused airline money, credits from cancelled flights, or travel vouchers.' This is a clear invocation condition, though it does not mention when not to use it or name an alternative tool.

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

get_free_night_creditsA
Read-only
Inspect

Get the user's free night certificates — the award nights earned from credit cards and elite status, such as a Marriott Free Night Award, a World of Hyatt free night, a Hilton free night reward, an IHG reward night, or a Wyndham Go Free night. Returns each certificate's program, how many remain, what it covers (a points ceiling, a hotel category range, or any standard room), when it expires, and whether a points top-up is allowed. These are distinct from points balances — a user can hold zero points and still have a certificate — so use this rather than get_loyalty_accounts whenever the user asks about certificates, free nights, or award nights (e.g. "do I have any free night certs?", "when does my Bonvoy free night expire?"). Certificates expire unused, so surface a near expiration proactively. This tool does not evaluate whether a particular hotel falls under a certificate's ceiling; don't infer coverage for a specific property from the cap.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already indicate a safe read-only operation, and the description adds meaningful behavioral context: certificates expire unused, near-expiration should be surfaced proactively, and coverage for a specific hotel must not be inferred from the cap. This goes well beyond the structured 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.

Conciseness5/5

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

The description is longer than average, but every sentence earns its place: it defines the resource, lists return contents, gives routing guidance, warns about expiration behavior, and sets a boundary on inference. Key guidance is front-loaded before the alternative-tool mention.

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 zero parameters and an output schema available, the description has very little it must cover, yet it still provides the critical distinction from get_loyalty_accounts, expiration-handling guidance, and a limitation warning. The tool is fully specified for an agent to select and invoke correctly.

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 input schema has zero parameters, so there is no parameter burden to clarify. The description nonetheless clarifies what the tool does not need and emphasizes the conceptual distinction from points balances, which is useful for the agent.

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?

The description names a specific resource ('free night certificates') and explains exactly what those are with concrete examples across loyalty programs. It also distinguishes them from points balances, which prevents confusion with a sibling tool.

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?

It explicitly says 'use this rather than get_loyalty_accounts whenever the user asks about certificates, free nights, or award nights' and provides example queries. It also states a clear non-use: the tool does not evaluate property-level certificate coverage.

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

get_hotel_detailsA
Read-only
Inspect

Get stored property information for a specific hotel, including its address, description, photos, amenities, room types, policies, fees, ratings, and check-in instructions. Use this after search_hotels when the traveler wants to learn more about a property.

ParametersJSON Schema
NameRequiredDescriptionDefault
hotel_idYesThe hotel's Vervotech property ID (returned by search_hotels).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds context by saying 'stored property information', implying a cached or persistent data source, and lists the types of data returned. It does not disclose potential limitations like data freshness or market availability, but no contradiction exists with the annotations.

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

Conciseness4/5

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

The description is two sentences, with the core purpose front-loaded before the field list and usage note. The enumeration of fields is informative rather than redundant, and the usage guidance is brief. The list of content categories is somewhat long, but each item earns its place by clarifying the tool's comprehensive scope.

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 read-only, single-parameter tool with a full output schema, the description provides the essential purpose, a detailed inventory of returned contents, and a clear usage trigger. It does not document routing decisions for specialized sibling tools, but given the tool's simplicity and the richness of the schema and annotations, this is a minor gap rather than a critical omission.

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%, with hotel_id documented as 'The hotel\'s Vervotech property ID (returned by search_hotels).' Since the schema fully explains the parameter, the description does not need to add more. The phrase 'for a specific hotel' aligns with the parameter but adds no new semantic detail beyond what the schema already provides.

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?

The description uses a specific verb-resource combination ('Get stored property information for a specific hotel') and enumerates the content categories returned, such as address, amenities, policies, and check-in instructions. It clearly distinguishes itself from search_hotels by describing a single-property follow-up, and the breadth of fields makes its scope distinct from sibling tools like get_hotel_reviews or get_hotel_stats.

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 description explicitly states when to use the tool: 'Use this after search_hotels when the traveler wants to learn more about a property.' This provides clear context and a trigger condition. However, it does not name alternative sibling tools for narrower needs, such as get_hotel_reviews or get_hotel_stats, so it stops short of providing explicit when-not guidance.

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

get_hotel_ratesA
Read-only
Inspect

Get current room rates for one hotel and stay window. Returns bookable cash and points options with pricing, cancellation terms, room details, and Gondola rate IDs. Use this after search_hotels when the traveler wants availability or booking options.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkinYesCheck-in date in YYYY-MM-DD format.
checkoutYesCheck-out date in YYYY-MM-DD format.
hotel_idYesThe hotel's Vervotech property ID (returned by search_hotels).
num_adultsNoNumber of adult guests.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses return behavior: 'Returns bookable cash and points options with pricing, cancellation terms, room details, and Gondola rate IDs.' This goes beyond the readOnlyHint annotation by describing the output content. It does not mention potential errors, rate limits, or side effects, but for a simple read-only operation, this is adequate. The annotation already signals safety, so the description adds useful output context without contradiction.

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?

The description is two sentences long, with no redundant phrases. It efficiently states the purpose, output, and usage context, and front-loads the core action. Every sentence contributes value, making it concise and well-structured.

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?

Given the tool's simplicity, the description covers the essential aspects: what it does, what it returns, and when to use it. It does not explain the output schema in detail, but that is acceptable since the output schema exists separately. The description is complete enough for an agent to decide whether to invoke this tool, though it could mention error conditions or edge cases (e.g., no availability) for full completeness.

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?

The input schema already provides descriptions for all four parameters (hotel_id, checkin, checkout, num_adults) with types and default values, achieving 100% coverage. The description adds no extra semantic detail beyond what the schema provides (e.g., 'one hotel' implies hotel_id, 'stay window' implies checkin/checkout). Per the rubric, with high schema coverage, the baseline is 3, and the description does not elevate it.

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?

The description clearly states the tool's purpose: 'Get current room rates for one hotel and stay window.' It specifies a verb (get), a resource (room rates), and scope (one hotel and stay window). It also lists the specific outputs (cash and points options, pricing, cancellation terms, room details, Gondola rate IDs) and differentiates from search_hotels by positioning it as a follow-up. This distinguishes it from sibling tools like compare_rates or get_multi_night_rates, though those are not explicitly named.

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 description provides clear usage context: 'Use this after search_hotels when the traveler wants availability or booking options.' This gives a sequencing hint and a primary use case. However, it does not explicitly contrast with alternatives such as compare_rates (for comparing hotels) or get_multi_night_rates (for longer stays), leaving some ambiguity for an agent choosing among rate-related siblings. The single-hotel focus is implied but not explicitly stated as a differentiator.

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

get_hotel_reviewsA
Read-only
Inspect

Get guest reviews for a specific hotel. Use this to help a user understand what other guests thought about a property — common complaints, recurring praise, recent service issues. Returns up to 10 recent reviews with ratings and comments.

ParametersJSON Schema
NameRequiredDescriptionDefault
hotel_idYesThe hotel's Vervotech property ID (from search_hotels results).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description correctly aligns with them. It adds beyond the annotations by disclosing the return limit ('up to 10 recent reviews') and the content type ('ratings and comments'), giving useful behavioral context without contradicting the annotations.

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

Conciseness5/5

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

The description is two tight sentences. The core purpose is front-loaded, the use case is clearly stated, and the return limitation is included without any filler or repetition of schema details.

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 a single well-described parameter, an output schema present, and annotations covering the read-only and non-destructive nature, the description fully covers what an agent needs to select and invoke this tool correctly. There are no significant gaps.

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?

The schema already documents the single parameter hotel_id with 100% coverage, including its type and origin from search_hotels results. The description does not add much parameter-level meaning beyond tying the tool to a specific hotel, so the baseline of 3 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?

The description states a specific action ('Get guest reviews') and a clear resource ('for a specific hotel'), and differentiates itself from sibling tools like get_hotel_details and get_hotel_stats by emphasizing guest feedback. It also specifies what is returned, making the tool's role unmistakable.

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 description provides clear usage context: use this when helping a user understand guest opinions, common complaints, recurring praise, and recent service issues. It does not explicitly mention when not to use it or name alternative sibling tools, but the use case is concrete enough to guide an agent effectively.

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

get_hotel_statsA
Read-only
Inspect

Get pricing percentile context for a specific hotel. Returns where the current rate falls relative to the property's typical pricing (e.g. "this rate is in the 20th percentile — cheaper than 80% of historical observations"). Use this to add objective context to recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
hotel_idYesThe hotel's Vervotech property ID.
nightly_cash_costYesThe current all-in nightly cash rate from search_hotels (stay total, including included taxes and fees, divided by nights).
nightly_points_costNoOptional current nightly points rate to additionally score.
nightly_cash_cost_currencyYesCurrency of the cash cost (e.g. "USD").

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful context about historical observations and percentile interpretation, but does not disclose potential limitations such as insufficient data or behavior when no history is available.

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 sentences, no filler, with the core function front-loaded and a helpful clarifying example. Every sentence earns its place.

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?

The description, combined with the full parameter schema and output schema, gives an agent enough to call the tool correctly. It clearly states purpose and output semantics, though it could briefly mention the optional nightly_points_cost behavior or data availability caveats.

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 the schema fully documents all parameters. The description does not add explicit parameter-level meaning beyond referring to the 'current rate,' which maps to nightly_cash_cost. Baseline 3 applies because the schema handles the heavy lifting.

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?

The description clearly specifies the verb 'Get' and the unique resource 'pricing percentile context for a specific hotel.' It immediately distinguishes this tool from siblings like predict_price, compare_rates, and diagnose_rates by focusing on percentile context relative to historical property pricing.

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 description provides a clear usage context: 'Use this to add objective context to recommendations.' It does not explicitly mention alternatives or when not to use it, but the intended scenario is stated well enough for an agent to decide.

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

get_loyalty_accountsA
Read-only
Inspect

Get the user's loyalty program memberships and current point balances. Use this to personalize recommendations (e.g. "with 120k Bonvoy points, this Sheraton is a great points redemption") and to suggest portfolio optimizations. This covers points balances and elite tiers only — free night certificates are tracked separately and are NOT returned here; use get_free_night_credits for those.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe-read nature is known. The description adds valuable behavioral context: it returns only points balances and elite tiers, explicitly excludes free night certificates, and states where those are tracked. This goes beyond what annotations provide.

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, with the core action and resource front-loaded. The second sentence earns its place by disambiguating from a sibling and preventing an incorrect call. No wasted words.

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?

Given the tool has no parameters and an output schema exists, the description fully covers the essential information: purpose, scope, exclusions, and sibling routing. 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.

Parameters4/5

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

The tool has zero parameters, so the baseline of 4 applies. The description correctly focuses on what the tool returns rather than parameters, and the empty schema requires no additional clarification.

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?

The description states a specific verb ('Get'), a specific resource ('the user's loyalty program memberships and current point balances'), and clearly distinguishes it from the sibling tool get_free_night_credits by explicitly saying free night certificates are NOT returned here. An agent can immediately tell what this tool does and what it does not cover.

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?

The description gives concrete use cases: personalizing recommendations and suggesting portfolio optimizations. It also explicitly excludes free night certificates and directs the agent to the alternative tool get_free_night_credits, making the decision boundary unambiguous.

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

get_multi_night_ratesA
Read-only
Inspect

Get a rate calendar for a hotel over a date range so you can recommend the cheapest nights. Use this when a user has flexible dates (e.g. "any week in May"). Returns per-checkin-date nightly rates so you can identify Tuesdays-are-30%-cheaper patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
nightsNoNumber of nights for each candidate stay.
end_dateYesLatest check-out date in YYYY-MM-DD format.
hotel_idYesThe hotel's Vervotech property ID.
start_dateYesEarliest check-in date in YYYY-MM-DD format.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive, and the description adds useful behavioral detail: it returns per-checkin-date nightly rates and supports day-of-week pattern discovery. Nothing in the description contradicts the annotations.

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

Conciseness4/5

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

Three sentences front-load the core behavior, then give the usage trigger, then explain the value of the returned data. The third sentence slightly overlaps with the first, but it earns its place by clarifying why the calendar-style output matters.

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?

The description, combined with 100% schema parameter coverage and an output schema, gives an agent everything needed to select and call this read-only tool correctly. No critical guidance about return behavior or prerequisites is missing.

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 coverage is 100%, so the baseline is 3 and the description need not repeat parameter docs. It adds only a light semantic gloss about date range and per-checkin-date output, without enriching the meaning of the `nights` parameter beyond the schema.

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 clearly states the operation: fetching a rate calendar for a hotel over a date range, with the purpose of recommending cheapest nights. It implies a distinction from siblings through the flexible-dates use case, but it does not explicitly name or rule out alternative tools.

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 gives an explicit trigger: use when a user has flexible dates such as 'any week in May.' It does not list exclusions or alternatives, but the intended context is clear and actionable.

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

get_past_tripsA
Read-only
Inspect

Get the user's past hotel stays and flights. Use this to answer travel-history questions and make recommendations grounded in behavior (e.g. "you loved the Park Hyatt last year", "you've flown United six times this year", "what seats have I taken before?", or "what is my favorite airplane seat?"). Returns past hotels and flights with dates, confirmation numbers, status, costs, loyalty programs, routes, airlines, ticket class, miles redeemed, and historical flight seat assignments when Gondola parsed real row+letter seats from airline emails. Opens with a Patterns block summarising the WHOLE history (aisle/window/middle seat mix, airline share, top routes, hotel chains, recorded spend), then one page of individual reservations newest first. For favorite-seat, aisle/window, side-of-plane, seat-letter, or preferred-row questions, read the Patterns block rather than tallying rows yourself, and do not say seat data is unavailable until this tool has been checked. Pass page=2, 3, ... to walk further back through the reservation list.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page of past reservations, newest first. Increment to walk further back through the history.
limitNoReservations per page. The Patterns block always covers the whole history regardless of this value.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description goes well beyond these by detailing the return structure (fields like dates, confirmation numbers, seat assignments), the Patterns block summarising whole history, pagination behavior, and the caveat that seat data depends on Gondola parsing. It also provides guidance on reading the Patterns block for seat-related questions. 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.

Conciseness4/5

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

The description is long (multiple sentences) but every sentence adds unique value: purpose, examples, return fields, patterns block, usage guidance, pagination. It is slightly verbose but well-structured, front-loading the purpose and use case before details. No fluff.

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?

Given the tool's complexity—many returned fields, a Patterns block summary, pagination, and a caveat—the description covers all necessary aspects. It explains what the tool returns, how to access more data (page), how to interpret the Patterns block, and warns against premature claims of missing seat data. The presence of an output schema further reduces the need to describe return structure, so this is fully complete.

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 page and limit are already fully documented. The description's note about passing page=2,3 to walk back mirrors the schema's description. It adds no new parameter semantics beyond the schema, so the baseline score of 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?

The description opens with a clear, specific statement: "Get the user's past hotel stays and flights," identifying both the resource (travel history) and the operation (retrieval). It then reinforces purpose with concrete examples of supported questions (seat preferences, airline loyalty). This distinguishes it from siblings like get_upcoming_trips by explicitly saying 'past'.

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 description explicitly states when to use it: for travel-history questions and behavioral recommendations, with multiple examples. It also gives a strong directive: "do not say seat data is unavailable until this tool has been checked," preventing premature errors. However, it does not name the specific sibling alternatives (e.g., get_upcoming_trips) or state when not to use it, leaving some inference to the agent.

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

get_payment_methodsA
Read-only
Inspect

List the user's saved payment methods for booking. Returns saved credit/debit cards with their payment IDs, needed for the book_hotel tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark the operation as read-only and non-destructive. The description adds meaningful context about what is returned (credit/debit cards and payment IDs) and why, which is useful for the agent.

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 concise sentences with no filler. The main action and key return value are front-loaded, and the booking context is included efficiently.

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 zero parameters, an output schema present, and safe read-only annotations, the description sufficiently explains what the tool does and why it is used. Nothing essential is missing for correct invocation.

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 accepts no parameters and the schema has no properties, so there is little for the description to add. The baseline of 4 applies because parameter semantics are effectively irrelevant here.

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?

The description uses a specific verb ('List') and resource ('user's saved payment methods'), and clarifies the purpose: returning credit/debit cards with payment IDs for booking. It clearly distinguishes itself from the many other get_* sibling tools by connecting to the book_hotel tool.

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 description gives clear context: this is for booking and provides inputs needed for book_hotel. It doesn't explicitly exclude alternatives or state when not to use it, but the intended use case is evident.

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

get_rate_alertsA
Read-only
Inspect

Get all active rate alerts for the current user. Returns which hotels the user is monitoring for price drops.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful behavioral context by specifying the scope ('active', 'current user') and the return semantics ('which hotels the user is monitoring for price drops'). No contradiction exists.

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

Conciseness5/5

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

The description is two short sentences with no filler. The first sentence front-loads the action and scope, and the second adds valuable output detail. Every word contributes to understanding.

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?

For a zero-parameter, read-only tool with an output schema and safe annotations, the description is complete. It states the resource, user scope, active-filter semantics, and the nature of the returned data, leaving no operational gaps.

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 input schema has zero parameters, so there is nothing to document at the parameter level. The baseline of 4 applies, and the description appropriately clarifies what the tool returns rather than inventing parameter details.

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?

The description states a specific action and resource: 'Get all active rate alerts for the current user.' It further clarifies the output as which hotels the user is monitoring for price drops, making it easy to distinguish from rate comparison or prediction siblings like compare_rates and predict_price.

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 description provides clear context: this tool is for retrieving the current user's active rate alerts, so an agent knows when to invoke it. It does not explicitly name alternatives or exclusions, but no sibling tool appears to serve this exact purpose, so the context is sufficient.

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

get_similar_hotelsA
Read-only
Inspect

Find hotels similar to a given hotel. Use this for branching exploration after a search (e.g. user likes the Park Hyatt Tokyo but wants a cheaper alternative — find similar properties). Pass destination when the alternatives should be in a different city. Returns properties matched by hotel attributes and amenities, with current rates.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkinYesCheck-in date in YYYY-MM-DD format.
checkoutYesCheck-out date in YYYY-MM-DD format.
hotel_idYesThe seed hotel's Vervotech property ID.
num_adultsNoNumber of adult guests.
destinationNoOptional destination city or place for cross-city alternatives.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value beyond these by explaining that results are 'matched by hotel attributes and amenities' and that current rates are returned. This gives the agent a realistic expectation of output without contradicting the annotations.

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

Conciseness5/5

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

Three sentences with zero filler. The core purpose is front-loaded, the usage scenario and destination nuance are covered, and the return content is stated. Every sentence earns its place.

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 an output schema present, annotations covering the read-only safety profile, and 100% parameter schema coverage, the description completes the picture by explaining the tool's niche, the destination override, and the type of results returned. Nothing essential for calling this tool correctly is missing.

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 coverage is 100%, so the baseline is 3. The description adds meaningful semantics for the destination parameter ('when the alternatives should be in a different city') that goes beyond the schema's generic 'Optional destination city or place.' It also implies the hotel_id is the seed for similarity matching.

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?

Description opens with a clear verb and resource: 'Find hotels similar to a given hotel.' It further distinguishes the tool from initial search by framing it as 'branching exploration after a search' with a concrete example, making the purpose unmistakable.

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 description gives explicit when-to-use guidance ('branching exploration after a search') and explains when to pass destination ('when the alternatives should be in a different city'). It does not explicitly name alternative tools or state when not to use it, but the context is clear enough for an agent to select it appropriately.

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

get_suggested_searchesA
Read-only
Inspect

Get personalized travel suggestions and trip inspiration for the current user. Returns curated hotel recommendations grounded in the user's preferences, recent searches, popular destinations, and upcoming holidays. Great for open-ended prompts like "where should I go?" or "any trip ideas for next month?".

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark this as read-only and non-destructive. The description adds meaningful behavioral context by explaining that results are personalized based on preferences, recent searches, popular destinations, and upcoming holidays, which goes beyond the annotation metadata.

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?

The description is concise, with three purposeful sentences: what it does, what it returns and why, and when to use it. Every sentence adds value and the usage examples are front-loaded after the main purpose.

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?

Given the tool's simplicity, zero parameters, read-only annotations, and an existing output schema, the description is fully sufficient. It explains the personalization basis and gives usage context, leaving no critical gaps for an agent to call it correctly.

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 has zero parameters and the schema coverage is 100%, so there is no parameter documentation burden. The description appropriately implies that the tool uses implicit user context rather than explicit inputs.

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?

The description clearly states the tool's function: getting personalized travel suggestions and trip inspiration for the current user. It also specifies the resource (curated hotel recommendations) and distinguishes it from more transactional tools like search_hotels or get_hotel_details by emphasizing open-ended inspiration.

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 description gives concrete example prompts such as 'where should I go?' and 'any trip ideas for next month?', making the intended use case clear. It does not explicitly name alternatives or exclusion criteria, but the 'open-ended prompts' framing implicitly distinguishes it from structured search tools.

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

get_suite_upgrade_creditsA
Read-only
Inspect

Get the user's active suite upgrade awards and certificates across loyalty programs. Returns the program, award type, remaining count, and expiration date. Use this whenever the user asks about suite upgrades, Nightly Upgrade Awards, Suite Upgrade Awards, Confirmable Upgrade Rewards, or IHG suite upgrades. These awards are separate from free-night certificates and points balances.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with those. It adds value by specifying the returned scope (active awards/certificates across loyalty programs) and the output fields (program, award type, remaining count, expiration date), which goes beyond the structured annotations.

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

Conciseness5/5

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

Three sentences front-load the action and resource, then provide return fields, then usage guidance and an exclusion. Every sentence earns its place with no redundant filler.

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?

For a zero-parameter read-only tool with an output schema, this description is complete. It covers what the tool returns, when to use it, and how it differs from adjacent award categories, which is everything an agent needs to select and invoke it correctly.

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 has zero parameters, so the description has no parameter semantics to document. With no input schema details needed, the baseline of 4 applies; the description appropriately focuses on selection and output behavior instead.

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?

Description opens with a specific verb and resource: 'Get the user's active suite upgrade awards and certificates across loyalty programs.' It also clarifies the returned fields and explicitly separates suite upgrade awards from free-night certificates and points balances, so an agent can distinguish it from sibling tools like get_free_night_credits.

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?

The description gives explicit trigger conditions: use whenever the user asks about suite upgrades, Nightly Upgrade Awards, Suite Upgrade Awards, Confirmable Upgrade Rewards, or IHG suite upgrades. It also states what the tool is not for by noting these awards are separate from free-night certificates and points balances.

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

get_traveler_contextA
Read-only
Inspect

Get the user's saved travel context: loyalty programs and elite tiers, home airport, preferred airlines and cabin, preferred hotel chains, typical trip patterns (business vs leisure, budgets, frequent destinations), plus any preferences they've stated or that have been learned from past conversations. Call this once at the start of a travel or planning session and weigh it when recommending hotels, flights, or cars — it is the single best source of who this traveler is. For raw evidence from actual past reservations, routes, hotels, airlines, or flight seats, use get_past_trips.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=true and destructiveHint=false, and the description adds valuable behavioral context: it aggregates stated and learned preferences and frames itself as 'the single best source of who this traveler is.' It does not contradict the annotations.

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

Conciseness5/5

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

The description is three sentences with no filler: definition, usage instruction, and alternative tool routing. It is front-loaded with the core purpose and every sentence earns its place.

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?

For a zero-parameter read-only tool with an output schema and annotations, the description fully covers what data the tool returns, when to call it, how to use its output, and how it relates to a key sibling tool. Nothing essential is missing.

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 has 0 parameters, so schema description coverage is effectively complete. No parameter explanation is needed, and the description does not introduce any misleading parameter-related information.

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?

The description clearly states what the tool does: 'Get the user's saved travel context' and enumerates the contents (loyalty programs, home airport, preferred airlines, hotel chains, trip patterns). It also distinguishes itself from get_past_trips by noting the latter provides raw past reservation evidence, so an agent can tell them apart.

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?

The description gives explicit usage direction: call it once at the start of a travel or planning session and weigh it when recommending hotels, flights, or cars. It also names a specific alternative (get_past_trips) for raw past-reservation evidence, providing clear when-not-to-use guidance.

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

get_travel_profilesA
Read-only
Inspect

Get the user's saved travel profiles — guest name, email, and phone presets. Each profile has a selectable ID you can pass to book_hotel as travel_profile_id to prefill the guest details, mirroring the website checkout where the user picks a saved traveler instead of typing each field. Use this before booking so you can offer "book as " in one step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

It adds meaningful context beyond the readOnlyHint annotation by describing the returned data (name/email/phone presets) and the reusability of each profile's ID as travel_profile_id in book_hotel. This reveals the tool's role as a building block for a follow-up booking action, which annotations alone don't convey.

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?

The description is packed with information across three sentences, all of which contribute: the resource, the ID linkage, and the when-to-use guidance. It's slightly wordy (e.g., the website-checkout analogy) but not padded.

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?

For a simple zero-parameter read-only tool with an output schema, this description fully equips an agent: what it returns, how the ID should be consumed by book_hotel, and when to call it. Nothing essential is missing.

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?

With zero parameters and 100% schema coverage (vacuously), the description's mention of the user's saved profiles implicitly confirms the tool operates on the current user context. There are no parameter semantics to add; the baseline of 4 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?

The description opens with a specific verb+resource: 'Get the user's saved travel profiles' and enumerates the contents (guest name, email, phone presets). This clearly distinguishes it from sibling tools like update_traveler_profile or get_user_preferences by naming its exact subject matter.

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 explicitly recommends calling before booking and explains the downstream benefit ('book as <traveler>'), which tells the agent when to use it. It doesn't name alternatives or exclusions, but the booking-context guidance is a clear usage cue.

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

get_upcoming_tripsA
Read-only
Inspect

Get the user's upcoming hotel, flight, and rental car reservations. Use this to ground recommendations in real plans (e.g. "your Tokyo trip is May 15-20, want me to find restaurants?"), check upcoming confirmation numbers, or answer what flights/cars/hotels are already booked. Returns dates, confirmation numbers, status, costs/rates, loyalty programs and earnings, savings/AutoSave signals, flight segment details, ticket class, miles redeemed, refundability/cancellation timing, and seat assignments when Gondola has parsed real row+letter seats from airline emails.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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 value beyond that by enumerating exactly what data comes back (confirmation numbers, loyalty programs, ticket class, miles redeemed, refundability timing) and by disclosing a real limitation: seat assignments are only returned 'when Gondola has parsed real row+letter seats from airline emails.' This conditional availability caveat is genuinely useful behavioral context.

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

Conciseness3/5

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

The structure is good: purpose is front-loaded in the first sentence, followed by use cases and then return details. However, the final sentence is a long enumeration of roughly a dozen return fields (status, costs/rates, savings/AutoSave signals, ticket class, miles redeemed, etc.) that substantially overlaps with what the existing output schema already documents. The jargon phrase 'savings/AutoSave signals' adds cognitive load without clear benefit, making the description slightly bloated.

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?

For a 0-parameter, read-only fetch tool with safety annotations and an output schema, this description is complete. It covers what the tool returns, when to invoke it with concrete scenarios, whose data it accesses, and the one meaningful data-availability limitation (parsed seat assignments). Nothing an agent needs to correctly select and call this tool is missing.

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 has 0 parameters, so the baseline is 4. There are no parameter semantics to explain; the description spends its words on return-value semantics instead, which is appropriate for a parameterless fetch tool.

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?

The first sentence names a specific verb and resource: 'Get the user's upcoming hotel, flight, and rental car reservations.' The 'upcoming' scope cleanly distinguishes it from the sibling get_past_trips, and the return-field enumeration further clarifies what the tool covers. An agent can tell exactly what this tool does without opening the schema or any sibling.

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 description gives concrete, grounded use cases: grounding recommendations in real plans with a realistic example ('your Tokyo trip is May 15-20'), checking confirmation numbers, and answering what trips are already booked. It does not explicitly name an alternative or state when not to use it, though the 'upcoming' scope implies the get_past_trips exclusion rather than stating it.

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

get_vehicle_bookingA
Read-only
Inspect

Get details for a specific vehicle booking by its Gondola booking ID. Returns vendor, pickup/dropoff locations and times, vehicle class, rate, and status. Use when a user asks about a rental they've already booked (e.g. "what time is my pickup?", "where do I pick up my Hertz rental?").

ParametersJSON Schema
NameRequiredDescriptionDefault
booking_idYesThe Gondola booking ID, as shown by get_upcoming_trips or get_past_trips. Not a rental confirmation number from the vendor.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already convey readOnlyHint=true and non-destructive behavior. The description adds meaningful context beyond that by specifying the returned fields and the fact that it is a retrieval of already-booked rental details, which helps set expectations about scope and output. It does not mention edge cases or error behavior, but the annotation coverage keeps the bar lower.

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?

The description is compact and front-loaded: the first sentence states the action and output, the second sentence gives concrete usage guidance. No filler or redundant restating of the tool name or schema.

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?

This is a low-complexity read-only tool with one parameter, a fully documented schema, and an output schema present. The description covers purpose, output fields, and when to use it, so nothing critical is missing for an agent to select and invoke it 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?

The single parameter booking_id is already fully documented in the input schema, including what it is and what it is not (a vendor confirmation number), with 100% schema description coverage. The tool description does not add additional parameter semantics, so the baseline score of 3 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?

The description uses a specific verb ('Get details') with a clear resource ('a specific vehicle booking by its Gondola booking ID') and enumerates the returned information (vendor, pickup/dropoff locations and times, vehicle class, rate, status). This clearly distinguishes it from generic get_booking and vehicle-specific siblings like get_vehicle_booking_link and get_vehicle_booking_coverage.

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 description explicitly says when to use the tool ('Use when a user asks about a rental they've already booked') and gives concrete example user queries. It does not explicitly state when not to use it or name exclusion conditions versus sibling tools, so it falls just short of a 5.

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

get_vehicle_booking_coverageA
Read-only
Inspect

Get the rental car CDW/LDW coverage that was stored at booking time for a specific vehicle booking. Use this after a booking to remind the user what coverage their card provides on this rental.

ParametersJSON Schema
NameRequiredDescriptionDefault
booking_idYesThe Gondola booking ID of the vehicle booking.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds useful behavioral context by noting the coverage is 'stored at booking time,' implying it is a historical snapshot rather than live card coverage. It does not discuss auth or rate limits, but those are less important for a low-risk read operation with an output schema.

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 first sentence states the operation, and the second provides actionable usage context. Every phrase earns its place.

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?

The description is complete for the tool's complexity: one required parameter is documented, the operation is read-only per annotations, an output schema exists, and the description supplies both data-freshness context and a clear use case.

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%, and the only parameter booking_id already has a clear description ('The Gondola booking ID of the vehicle booking'). The tool description adds little beyond the schema, so baseline 3 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?

The description names a specific verb ('Get'), a specific resource ('rental car CDW/LDW coverage'), and a specific scope ('stored at booking time for a specific vehicle booking'). This distinguishes it clearly from sibling tools like get_vehicle_booking or credit_card_coverage.

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 gives concrete usage timing: 'Use this after a booking to remind the user what coverage their card provides on this rental.' It does not explicitly name alternatives or when-not conditions, but the stated purpose is clear enough to guide selection among the many sibling tools.

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

get_vehicle_detailsA
Read-only
Inspect

Get detailed information about a specific rental vehicle option. Use this after search_vehicles to get extras, insurance options, charges, and cancellation policy for the vehicle the user wants to book.

ParametersJSON Schema
NameRequiredDescriptionDefault
desk_kindNoDesk classification from the selected vehicle result, when present.
rate_codeYesRate code from search results.
search_idYesSearch ID from the vehicle search results.
acriss_codeNoACRISS code from the selected vehicle result; pass it through to disambiguate classes.
vendor_codeYesVendor code from search results (e.g. "ZE" for Hertz, "AL" for Alamo).
pickup_locationNoPickup location from the selected vehicle result; pass it through for metro searches.
vendor_location_idNoVendor desk identifier from the selected vehicle result, when present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description aligns with that by saying 'Get detailed information.' It adds behavioral context beyond annotations by specifying what categories of details are returned. Since an output schema exists, the description does not need to enumerate return fields.

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?

The description is two sentences with no filler. The first sentence states the core function directly, and the second provides workflow context and the content categories the agent can expect. Every word earns its place.

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?

For a read-only detail tool with a full output schema, complete parameter documentation, and annotations covering safety, the description covers purpose, relationship to search_Vehicles, and the types of information returned. Nothing critical for selecting and invoking the tool is missing.

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 each parameter already has a clear definition such as 'Rate code from search results.' The description reinforces the workflow context by saying to use it after search_vehicles, but it does not add parameter-specific meaning beyond the schema. Baseline 3 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?

The description uses a specific verb ('Get') and a concrete resource ('detailed information about a specific rental vehicle option'). It also names the exact content areas (extras, insurance options, charges, cancellation policy) and positions the tool as the follow-up to search_vehicles, which distinguishes it from search and booking-focused siblings.

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 description gives a clear trigger condition: 'Use this after search_vehicles to get extras, insurance options, charges, and cancellation policy for the vehicle the user wants to book.' It does not explicitly state when not to use it or name alternatives like get_vehicle_booking, but the workflow context is clear enough for an agent to route correctly.

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

optimize_loyalty_portfolioA
Read-only
Inspect

Analyze the user's entire loyalty portfolio and surface the highest-value actions: points expiring soon (ranked by value at risk), the best transfer opportunities from their transferable card currencies (Amex, Chase, Bilt, etc.) into hotel programs, and their largest balances. Takes no arguments — it works across the whole portfolio, not a single trip. Use this when the user asks how to make the most of their points, what's expiring, or where they can transfer. To choose where to book a SPECIFIC trip, use search_hotels / compare_rates instead.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint false; the description reinforces this by saying 'Analyze' and adds useful behavioral context: it takes no arguments and works portfolio-wide rather than for a single trip. It could go further by noting any data assumptions or estimate caveats, but with annotations covering the safety profile, this is strong.

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 sentences with no filler: the first defines the core function and outputs, the second clarifies argument/scope, and the third handles usage routing. Every sentence earns its place and the most important action information is front-loaded.

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?

For a zero-parameter read-only analysis tool with an output schema and clear alternatives, this description covers selection, invocation, scope, and exclusion criteria completely. No missing detail would prevent an agent from calling it correctly.

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?

With zero parameters, the schema fully covers the input surface, so the baseline is 4. The description adds value by explicitly stating 'Takes no arguments' and explaining why (portfolio scope), which prevents an agent from trying to pass a trip ID.

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?

The description opens with a specific verb and resource: analyze the user's entire loyalty portfolio and surface highest-value actions. It enumerates concrete outputs (expiring points ranked by value at risk, transfer opportunities, largest balances), which makes the tool's function unmistakable and distinguishes it from trip-booking tools like search_hotels.

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?

It gives explicit trigger phrases ('how to make the most of their points, what's expiring, or where they can transfer') and a clear when-not-to-use rule with named alternatives (search_hotels / compare_rates for a specific trip). This is exactly the kind of routing an agent needs.

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

predict_priceA
Read-only
Inspect

Predict whether the current rate at a hotel is a good deal based on historical price trends. Use this when the user is debating booking now vs. waiting. Returns a confidence-scored label (e.g. "book now", "wait", "prices typically rise") with supporting signals and price history.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkinYesCheck-in date in YYYY-MM-DD format.
checkoutYesCheck-out date in YYYY-MM-DD format.
hotel_idYesThe hotel's Vervotech property ID.
nightly_cash_costYesThe current all-in nightly cash rate from search_hotels (stay total, including included taxes and fees, divided by nights).
nightly_points_costNoOptional current nightly points rate.
nightly_cash_cost_currencyYesCurrency of the cash cost (e.g. "USD", "EUR").

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds meaningful behavioral context by stating that it returns a confidence-scored label with supporting signals and price history, and that the prediction is based on historical trends rather than a guarantee.

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?

The description is three sentences, each earning its place: what the tool does, when to use it, and what it returns. It is front-loaded with the core purpose and contains no filler or redundant restatement.

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?

The description, combined with full schema coverage, an output schema, and safety annotations, provides enough context for an agent to select and invoke the tool correctly. It could be slightly stronger by naming related alternatives or noting limitations, but nothing essential for basic invocation is missing.

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 the input schema fully documents all parameters and their meaning. The description does not add parameter-level detail beyond the schema, which matches the baseline of 3.

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 clearly states the tool's function: predicting whether a current hotel rate is a good deal based on historical price trends. It is specific about the verb and resource, and the use-case framing helps separate it from generic rate lookup tools, though it does not explicitly name or contrast sibling tools.

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 description gives an explicit when-to-use condition: when the user is debating booking now versus waiting. This is clear and actionable, but it does not provide exclusions or alternatives such as when to use diagnose_rates or compare_rates instead.

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

search_eventsA
Read-only
Inspect

Search for live events by artist, team, show, or event name. Returns factual event discovery details in provider order, including dates, venue, status, optional approximate listed price range, and the canonical event page. Prices are provider-supplied discovery metadata, not live offers. Use page=0 first and increment page when more results are available. An artist keyword is resolved to that performer and the search is pinned to them, so tribute and club nights that borrow a famous name do not crowd out real tour dates. Many place and word names are also band names (Boston, Chicago, Kansas), so if the response names a performer the user did not mean, search again with match_artist=false rather than concluding nothing is happening. When the resolved performer is the one intended and no events are listed, they have no dates matching that search: do not present namesake events as theirs. When price_precision is "rank_only" the provider withheld amounts but the ordering is exact, so cite the rank against price_ranked_total ("5th cheapest of 9") and link to the event page for the current price. Never state, estimate, or infer a dollar amount in that case.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sortNoUse "price" for any cheapest-first or budget question. It orders events by their cheapest listing exactly, and each event carries price_rank against price_ranked_total. It is served by a single provider that does no performer resolution, so match_artist has no effect with this sort, and combining it with attraction_id or include_unavailable is rejected rather than silently ignored.relevance
limitNo
radiusNo
keywordYesArtist, team, show, or event name.
end_dateNoLatest local event date, YYYY-MM-DD.
locationNoOptional city, region, postal code, or natural-language location.
max_priceNoOnly return events whose cheapest listing is at or below this amount. Requires sort=price, because only the price-ordering provider can filter on price; sending it with any other sort is rejected rather than silently ignored. There is no matching minimum: a price floor is not supported and must not be simulated.
start_dateNoEarliest local event date, YYYY-MM-DD.
radius_unitNomiles
match_artistNoResolve keyword to a canonical performer before searching. Set false for keywords that are not a performer, such as a genre, venue, or festival name.
attraction_idNoOptional provider performer id. Pins results to that performer exactly.
classificationNoOptional segment, genre, or subgenre.
include_unavailableNoInclude cancelled and postponed events, excluded by default. Off-sale events are always returned, since they are real dates that are sold out or not yet on sale.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already include readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds substantive behavioral context beyond annotations: artist keywords are resolved and pinned, tribute/club nights are filtered out, namesake events must not be presented as the performer's own, price_precision 'rank_only' means amounts are withheld and only ranks are exact, and include_unavailable has specific semantics. This is rich behavioral disclosure that helps the agent avoid errors.

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?

The description is appropriately sized for a tool with 14 parameters and substantial edge cases. It front-loads the core purpose and return contents, then organizes guidance into clear, purposeful sentences covering pagination, artist resolution, namesake ambiguity, price_precision handling, and provider restrictions. Every sentence earns its place and adds actionable information.

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?

For a search tool with 14 parameters, an output schema, and 71% schema coverage, the description covers the critical operational context: pagination, provider-specific behavior, ambiguous keyword handling, budget-question pricing guidance, and restrictions on parameter combinations. The output schema exists, so return-value details are not required in the description, and all major decision points an agent would face are addressed.

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 coverage is 71%, and the description adds meaningful semantics for key parameters: it explains match_artist resolution behavior, sort=price provider limitations (no performer resolution, rejection when combined with attraction_id/include_unavailable), max_price's requirement for sort=price, and page pagination usage. It doesn't describe every parameter, but it clarifies the non-obvious ones beyond what the schema states.

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?

The description states a specific verb ('Search for live events') and a concrete resource ('by artist, team, show, or event name'), and it distinguishes itself from travel/hotel/vehicle siblings by focusing on event discovery with dates, venue, status, price range, and canonical event page. It clearly communicates what the tool does and its scope.

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?

The description provides explicit usage guidance: use page=0 first, increment page when more results are available; set match_artist=false when the keyword is not a performer; use sort=price for cheapest-first/budget questions; and use max_price only with sort=price. It also names when not to use certain options (e.g., price floor is not supported) and how to handle ambiguous performer names, giving clear alternatives.

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

search_flightsA
Read-only
Inspect

Search for flights by route and date. Returns cash-priced options ranked for the traveler — weighing their airline loyalty/status and travel history alongside flight quality, not price alone — 10 options per page. Call again with page=2, 3, ... to see more options if none of the first page fit.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoLeave as "browse" (default). "book" is a restricted alpha — only use it if the user explicitly asks to book a flight.browse
pageNo1-based results page, 10 options per page. Increment to see more options.
originYesOrigin airport code or city (e.g. "LAX", "SFO", "New York").
airlinesNoOptional airline codes or names, e.g. ["UA"] or ["United"]. Used only in "browse" mode and passed to the Google Flights search API.
max_stopsNoOptional maximum stops per direction in "browse" mode. Use 0 for nonstop only.
cabin_classNoOptional cabin class: "economy", "premium economy", "business", "first".
destinationYesDestination airport code or city (e.g. "NRT", "LHR", "Paris").
return_dateNoOptional return date in YYYY-MM-DD format for a round trip. Read the labels on the results: a price marked 'round trip' already covers both directions, while results split into separate outbound and return sections are one-way prices whose sum overstates the real round-trip fare.
departure_dateYesDeparture date in YYYY-MM-DD format.
num_passengersNoNumber of passengers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The description adds meaningful behavioral detail beyond the readOnlyHint annotation: results are cash-priced, ranked by airline loyalty/status and travel history alongside flight quality rather than price alone, and limited to 10 options per page. This is valuable context an agent needs to interpret results correctly.

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?

The description is two well-structured sentences. The first sentence immediately states the core purpose, and the second adds essential behavioral context and a practical pagination instruction without unnecessary fluff.

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?

For a search tool with a rich input schema, output schema, and clear annotations, the description covers the key non-obvious behavior: personalized ranking, cash-priced options, and pagination. Nothing critical is missing for an agent to invoke the tool 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 every parameter is already documented in the input schema. The description's mention of route and date adds no new parameter-level information beyond what the schema provides, so the baseline score of 3 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?

The description clearly states the tool's action and resource: 'Search for flights by route and date.' It also specifies that it returns cash-priced options ranked by traveler-specific factors, distinguishing it from similarly named sibling search tools like search_hotels and search_vehicles.

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 description gives clear context for when to call the tool: when the user wants to search flights by route and date. It also guides pagination ('Call again with page=2, 3, ...'). It does not explicitly name alternative tools or state when not to use it, but the usage context is clear enough.

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

search_hotelsA
Read-only
Inspect

Search for hotels by location and dates. Returns a list of matching hotels with cash and points rates and deal scores. To produce a focused cash-vs-points decision widget for a hotel the user is considering — for one or several top picks — follow up with compare_rates rather than narrating rates from search results. This tool searches one fixed stay window. If the user asks for a flexible window (for example, 2 nights between September 8 and 22), either ask which check-in date they prefer or pick one concrete window and explicitly tell the user why you chose it; do not silently default to the earliest possible dates. When the user wants date options, use get_multi_night_rates on the top hotel_ids after search_hotels to surface alternate check-in dates where available.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkinYesCheck-in date in YYYY-MM-DD format.
checkoutYesCheck-out date in YYYY-MM-DD format.
locationYesCity name, address, or area (e.g. "Tokyo", "Manhattan, New York", "near LAX airport").
chain_nameNoOptional hotel chain filter (e.g. "marriott", "hilton", "hyatt", "ihg"). Case-insensitive substring match against each result's chain. If no result matches, the unfiltered results are returned with an explicit note in the summary so you don't keep retrying with different chain values.
hotel_nameNoOptional hotel name to boost to the top of results (e.g. "Conrad Las Vegas", "Park Hyatt Tokyo"). Use this when the user names a specific hotel — the matching property will be ranked first so you can pass its hotel_id to compare_rates without guessing. Case-insensitive substring match against the property name. Boosting (rather than filtering) preserves nearby alternatives the user may want to see.
num_adultsNoNumber of adult guests.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint/openWorldHint/destructiveHint annotations, the description discloses a key behavioral trait: 'This tool searches one fixed stay window.' It also specifies the return payload ('cash and points rates and deal scores') and the no-silent-default policy for flexible dates, giving the agent behavioral context the annotations alone do not provide.

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?

The description is front-loaded with the one-sentence purpose, then layers follow-up routing, a fixed-window constraint, and a flexible-window handling rule in a logical order. Every sentence addresses a distinct decision an agent will face, and there is no filler or restatement of schema content.

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?

The description covers what the tool returns, how to branch to compare_rates and get_multi_night_rates, and how to handle ambiguous flexible-date requests. With a fully described input schema and an output schema present, nothing needed for correct selection or invocation is missing.

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?

All six parameters are fully described in the input schema (100% coverage), so the schema carries the parameter documentation burden. The description only echoes 'location and dates' and adds no parameter-level detail beyond what the schema already states, so the baseline score of 3 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?

The description opens with a specific verb and resource: 'Search for hotels by location and dates,' and states exactly what is returned (cash and points rates and deal scores). It also differentiates from sibling tools by explicitly naming compare_rates and get_multi_night_rates as follow-ups rather than describing the same function.

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?

The description gives direct, actionable routing: use compare_rates for a cash-vs-points decision widget instead of narrating rates, and use get_multi_night_rates on top hotel_ids when the user wants alternate date options. It also provides a concrete rule for flexible stay windows (ask or pick and disclose, never silently default to earliest dates), leaving no ambiguity about when to use this tool versus alternatives.

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

search_vehiclesA
Read-only
Inspect

Search for rental vehicles at an airport or city. Returns available cars sorted by price with vendor, class, and rate details.

ParametersJSON Schema
NameRequiredDescriptionDefault
vehicle_classNoOptional vehicle class preference: Economy, Compact, Standard, FullSize, Premium, Luxury, SUV, Van.
pickup_datetimeYesPickup date and time in ISO format (e.g. "2025-03-15T10:00:00").
pickup_locationYesAirport IATA code (e.g. "LAX", "JFK", "SFO").
dropoff_datetimeYesDrop-off date and time in ISO format (e.g. "2025-03-20T10:00:00").

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=true, openWorldHint=true), the description adds useful behavioral context: results are sorted by price and include vendor, class, and rate details. This goes beyond the annotations and clarifies what the agent can expect from the tool. No contradiction with annotations is present.

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?

The description is a single, efficient sentence with no filler. It front-loads the action ('Search for rental vehicles') and then provides essential output details. Every word contributes meaning, and it is appropriately sized for a search tool.

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?

Given that the tool has an output schema, the description does not need to detail return formats. Annotations cover read-only and open-world behavior. The description covers sorting and result fields. The only notable gap is the airport/city ambiguity discussed under parameter semantics, but overall the description is fairly complete for this tool's complexity.

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

Parameters2/5

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

Schema coverage is 100%, so the schema provides full parameter documentation, setting a baseline of 3. However, the description says 'airport or city,' while the schema's pickup_location property explicitly restricts values to airport IATA codes. This potential discrepancy could lead an agent to pass a city name (e.g., 'Los Angeles') instead of an airport code, making the description more misleading than helpful.

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?

The description clearly states the tool's function: 'Search for rental vehicles at an airport or city.' This is a specific verb-resource pair with an explicit output description: 'Returns available cars sorted by price with vendor, class, and rate details.' It distinguishes the tool from siblings like get_vehicle_details or get_vehicle_booking, which are about specific vehicles or bookings, not search.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There is no mention of using get_vehicle_details for a specific car or compare_rates for rate comparisons. The context is only that it searches rental vehicles, which is essentially the purpose, not usage guidance.

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

update_traveler_profileAInspect

Save a learned travel preference or experience to the user's traveler profile. Use when the user shares preferences, likes, dislikes, or trip experiences that should inform future recommendations. Examples: 'Prefers boutique hotels over chains', 'Always takes a window seat', 'Vegetarian — recommend plant-based restaurants', 'Hated ground floor rooms'. Don't save temporary logistics like 'my flight lands at 3pm'. Entries are appended, so saving one preference never overwrites another.

ParametersJSON Schema
NameRequiredDescriptionDefault
profile_entryYesThe preference or experience to save. Be specific and actionable. Good: 'Prefers ocean-view rooms'. Bad: 'Liked the hotel'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Discloses a key behavioral trait beyond annotations: entries are appended, so one save never overwrites another. This complements the destructiveHint:false annotation by explaining why the operation is non-destructive. It also implies the profile accumulates entries over time.

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?

The description is compact and well-ordered: action, when-to-use, examples, exclusions, and behavioral note. Every sentence contributes and the most important context appears early.

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?

For a single-parameter tool with a thorough schema, annotations, and an output schema, the description covers usage, exclusions, and side effects. An agent has enough guidance to call this tool correctly and decide when not to call it.

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 input schema already describes profile_entry well with good and bad examples, so the description need not repeat much. It adds value by clarifying the semantic scope (preferences, likes, dislikes, experiences) and explicitly excluding temporary logistics, which enriches the single paramter's meaning.

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 clear action ('Save'), a specific resource ('traveler profile'), and the exact kind of content to save: learned preferences and experiences. The examples further disambiguate the tool from sibling read-only tools like get_traveler_context and get_travel_profiles.

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?

Explicitly describes when to use the tool ('when the user shares preferences, likes, dislikes...') and what not to save ('temporary logistics'). It doesn't name sibling alternatives, but the when/when-not guidance is strong enough to prevent misuse in most cases.

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. Dates show when Glama detected each change.

  1. 4 tool updates
    • Changedbook_hotel1 field changed
      • changedInput schema / properties / gondola_rate_id / description
        Previous value: -"The rate ID from get_hotel_details room rates."New value: +"The rate ID from get_hotel_rates room rates."
    • Changedget_booking_link1 field changed
      • changedInput schema / properties / gondola_rate_id / description
        Previous value: -"Optional rate ID from get_hotel_details or compare_rates. When provided, the link deep-links straight to that rate's checkout page instead of the generic hotel page."New value: +"Optional rate ID from get_hotel_rates or compare_rates. When provided, the link deep-links straight to that rate's checkout page instead of the generic hotel page."
    • Changedget_hotel_details4 fields changed
      • removedInput schema / properties / checkin
        Removed value: -{
        -  "description": "Check-in date in YYYY-MM-DD format.",
        -  "type": "string"
        -}
      • removedInput schema / properties / checkout
        Removed value: -{
        -  "description": "Check-out date in YYYY-MM-DD format.",
        -  "type": "string"
        -}
      • removedInput schema / properties / num_adults
        Removed value: -{
        -  "default": 2,
        -  "description": "Number of adult guests.",
        -  "type": "integer"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "hotel_id",
        -  "checkin",
        -  "checkout"
        -]New value: +[
        +  "hotel_id"
        +]
    • Addedget_hotel_rates
  2. 1 tool update
    • Addedget_suite_upgrade_credits
  3. 4 tool updates
    • Addedget_flight_credits
    • Changedget_hotel_stats1 field changed
      • changedInput schema / properties / nightly_cash_cost / description
        Previous value: -"The current nightly cash rate to score."New value: +"The current all-in nightly cash rate from search_hotels (stay total, including included taxes and fees, divided by nights)."
    • Changedget_similar_hotels1 field changed
      • addedInput schema / properties / destination
        Added value: +{
        +  "description": "Optional destination city or place for cross-city alternatives.",
        +  "type": "string"
        +}
    • Changedpredict_price1 field changed
      • changedInput schema / properties / nightly_cash_cost / description
        Previous value: -"The current nightly cash rate to evaluate (from search_hotels)."New value: +"The current all-in nightly cash rate from search_hotels (stay total, including included taxes and fees, divided by nights)."
  4. 2 tool updates
    • Changedget_booking1 field changed
      • changedInput schema / properties / booking_id / description
        Previous value: -"The booking ID or confirmation number."New value: +"The Gondola booking ID, as shown by get_upcoming_trips or get_past_trips. Not a hotel or provider confirmation number."
    • Changedget_vehicle_booking1 field changed
      • changedInput schema / properties / booking_id / description
        Previous value: -"The Gondola booking ID (confirmation number)."New value: +"The Gondola booking ID, as shown by get_upcoming_trips or get_past_trips. Not a rental confirmation number from the vendor."
  5. 1 tool update
    • Changedsearch_events3 fields changed
      • addedInput schema / properties / max_price
        Added value: +{
        +  "description": "Only return events whose cheapest listing is at or below this amount. Requires sort=price, because only the price-ordering provider can filter on price; sending it with any other sort is rejected rather than silently ignored. There is no matching minimum: a price floor is not supported and must not be simulated.",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / sort / description
        Added value: +"Use \"price\" for any cheapest-first or budget question. It orders events by their cheapest listing exactly, and each event carries price_rank against price_ranked_total. It is served by a single provider that does no performer resolution, so match_artist has no effect with this sort, and combining it with attraction_id or include_unavailable is rejected rather than silently ignored."
      • changedInput schema / properties / sort / enum
        Previous value: -[
        -  "relevance",
        -  "date",
        -  "distance"
        -]New value: +[
        +  "relevance",
        +  "date",
        +  "distance",
        +  "price"
        +]
  6. 7 tool updates
    • Addedbook_hotel
    • Addedbook_vehicle
    • Addedcancel_vehicle_booking
    • Addedcreate_rate_alert
    • Addeddelete_rate_alert
    • Changedget_past_trips2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Reservations per page. The Patterns block always covers the whole history regardless of this value.",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 1,
        +  "description": "1-based page of past reservations, newest first. Increment to walk further back through the history.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Addedget_payment_methods
  7. 29 tool updates
    • Changedcompare_rates1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "compare_ratesOutput",
        +  "type": "object"
        +}
    • Changedcredit_card_coverage1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "credit_card_coverageOutput",
        +  "type": "object"
        +}
    • Changeddiagnose_rates1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "diagnose_ratesOutput",
        +  "type": "object"
        +}
    • Changedget_booking1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_bookingOutput",
        +  "type": "object"
        +}
    • Changedget_booking_link1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_booking_linkOutput",
        +  "type": "object"
        +}
    • Changedget_free_night_credits1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_free_night_creditsOutput",
        +  "type": "object"
        +}
    • Changedget_hotel_details1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_hotel_detailsOutput",
        +  "type": "object"
        +}
    • Changedget_hotel_reviews1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_hotel_reviewsOutput",
        +  "type": "object"
        +}
    • Changedget_hotel_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_hotel_statsOutput",
        +  "type": "object"
        +}
    • Changedget_loyalty_accounts1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_loyalty_accountsOutput",
        +  "type": "object"
        +}
    • Changedget_multi_night_rates1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_multi_night_ratesOutput",
        +  "type": "object"
        +}
    • Changedget_past_trips1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_past_tripsOutput",
        +  "type": "object"
        +}
    • Changedget_rate_alerts1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_rate_alertsOutput",
        +  "type": "object"
        +}
    • Changedget_similar_hotels1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_similar_hotelsOutput",
        +  "type": "object"
        +}
    • Changedget_suggested_searches1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_suggested_searchesOutput",
        +  "type": "object"
        +}
    • Changedget_travel_profiles1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_travel_profilesOutput",
        +  "type": "object"
        +}
    • Changedget_traveler_context1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_traveler_contextOutput",
        +  "type": "object"
        +}
    • Changedget_upcoming_trips1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_upcoming_tripsOutput",
        +  "type": "object"
        +}
    • Changedget_vehicle_booking1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_vehicle_bookingOutput",
        +  "type": "object"
        +}
    • Changedget_vehicle_booking_coverage1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_vehicle_booking_coverageOutput",
        +  "type": "object"
        +}
    • Changedget_vehicle_booking_link1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_vehicle_booking_linkOutput",
        +  "type": "object"
        +}
    • Changedget_vehicle_details1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_vehicle_detailsOutput",
        +  "type": "object"
        +}
    • Changedoptimize_loyalty_portfolio1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "optimize_loyalty_portfolioOutput",
        +  "type": "object"
        +}
    • Changedpredict_price1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "predict_priceOutput",
        +  "type": "object"
        +}
    • Changedsearch_events1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "search_eventsOutput",
        +  "type": "object"
        +}
    • Changedsearch_flights1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "search_flightsOutput",
        +  "type": "object"
        +}
    • Changedsearch_hotels1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "search_hotelsOutput",
        +  "type": "object"
        +}
    • Changedsearch_vehicles1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "search_vehiclesOutput",
        +  "type": "object"
        +}
    • Changedupdate_traveler_profile1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "update_traveler_profileOutput",
        +  "type": "object"
        +}
  8. 1 tool update
    • Changedsearch_flights1 field changed
      • changedInput schema / properties / return_date / description
        Previous value: -"Optional return date in YYYY-MM-DD format for a round trip. In browse mode, the tool searches outbound and return legs separately as one-way results."New value: +"Optional return date in YYYY-MM-DD format for a round trip. Read the labels on the results: a price marked 'round trip' already covers both directions, while results split into separate outbound and return sections are one-way prices whose sum overstates the real round-trip fare."
  9. 1 tool update
    • Changedsearch_events3 fields changed
      • addedInput schema / properties / attraction_id
        Added value: +{
        +  "description": "Optional provider performer id. Pins results to that performer exactly.",
        +  "type": "string"
        +}
      • addedInput schema / properties / include_unavailable
        Added value: +{
        +  "default": false,
        +  "description": "Include cancelled and postponed events, excluded by default. Off-sale events are always returned, since they are real dates that are sold out or not yet on sale.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / match_artist
        Added value: +{
        +  "default": true,
        +  "description": "Resolve keyword to a canonical performer before searching. Set false for keywords that are not a performer, such as a genre, venue, or festival name.",
        +  "nullable": true,
        +  "type": "boolean"
        +}
  10. 29 tool updates
    • Changedcompare_rates10 fields changed
      • addedInput schema / properties / checkin / description
        Added value: +"Check-in date in YYYY-MM-DD format."
      • removedInput schema / properties / checkin / title
        Removed value: -"Checkin"
      • addedInput schema / properties / checkout / description
        Added value: +"Check-out date in YYYY-MM-DD format."
      • removedInput schema / properties / checkout / title
        Removed value: -"Checkout"
      • addedInput schema / properties / hotel_ids / description
        Added value: +"Array of one to five hotel IDs to compare. A single-element array is valid when the user is focused on one hotel. Get these from search_hotels results."
      • removedInput schema / properties / hotel_ids / title
        Removed value: -"Hotel Ids"
      • addedInput schema / properties / num_adults / description
        Added value: +"Number of adult guests."
      • removedInput schema / properties / num_adults / title
        Removed value: -"Num Adults"
      • removedInput schema / title
        Removed value: -"compare_ratesArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "compare_ratesOutput",
        -  "type": "object"
        -}New value: +null
    • Changedcredit_card_coverage12 fields changed
      • removedInput schema / properties / card_number_bin / default
        Removed value: -""
      • addedInput schema / properties / card_number_bin / description
        Added value: +"First 6-8 digits of the card number (BIN). Used with card_provider for network-tier-based lookup when the exact product name isn't known."
      • removedInput schema / properties / card_number_bin / title
        Removed value: -"Card Number Bin"
      • removedInput schema / properties / card_provider / default
        Removed value: -""
      • addedInput schema / properties / card_provider / description
        Added value: +"Card network: \"visa\", \"mastercard\", \"amex\", or \"discover\". Required with card_number_bin."
      • removedInput schema / properties / card_provider / title
        Removed value: -"Card Provider"
      • removedInput schema / properties / credit_card_product_name / default
        Removed value: -""
      • addedInput schema / properties / credit_card_product_name / description
        Added value: +"Exact card product name (e.g. \"Chase Sapphire Preferred\", \"American Express Platinum\"). Preferred when known."
      • removedInput schema / properties / credit_card_product_name / title
        Removed value: -"Credit Card Product Name"
      • addedInput schema / required
        Added value: +[]
      • removedInput schema / title
        Removed value: -"credit_card_coverageArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "credit_card_coverageOutput",
        -  "type": "object"
        -}New value: +null
    • Changeddiagnose_rates15 fields changed
      • addedInput schema / properties / checkin / description
        Added value: +"Check-in date in YYYY-MM-DD format."
      • removedInput schema / properties / checkin / title
        Removed value: -"Checkin"
      • addedInput schema / properties / checkout / description
        Added value: +"Check-out date in YYYY-MM-DD format."
      • removedInput schema / properties / checkout / title
        Removed value: -"Checkout"
      • addedInput schema / properties / hotel_id / description
        Added value: +"The hotel's Vervotech property ID."
      • removedInput schema / properties / hotel_id / title
        Removed value: -"Hotel Id"
      • addedInput schema / properties / num_adults / description
        Added value: +"Number of adult guests."
      • removedInput schema / properties / num_adults / title
        Removed value: -"Num Adults"
      • removedInput schema / properties / rate_sources / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / rate_sources / default
        Removed value: -null
      • addedInput schema / properties / rate_sources / description
        Added value: +"Optional comma-separated list of rate sources to check (e.g. \"travelport\", \"direct,travelport\"). Omit to check all sources."
      • removedInput schema / properties / rate_sources / title
        Removed value: -"Rate Sources"
      • addedInput schema / properties / rate_sources / type
        Added value: +"string"
      • removedInput schema / title
        Removed value: -"diagnose_ratesArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "diagnose_ratesOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_booking4 fields changed
      • addedInput schema / properties / booking_id / description
        Added value: +"The booking ID or confirmation number."
      • removedInput schema / properties / booking_id / title
        Removed value: -"Booking Id"
      • removedInput schema / title
        Removed value: -"get_bookingArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_bookingOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_booking_link16 fields changed
      • addedInput schema / properties / checkin / description
        Added value: +"Check-in date in YYYY-MM-DD format."
      • removedInput schema / properties / checkin / title
        Removed value: -"Checkin"
      • addedInput schema / properties / checkout / description
        Added value: +"Check-out date in YYYY-MM-DD format."
      • removedInput schema / properties / checkout / title
        Removed value: -"Checkout"
      • removedInput schema / properties / children_ages
        Removed value: -{
        -  "default": "",
        -  "title": "Children Ages",
        -  "type": "string"
        -}
      • removedInput schema / properties / gondola_rate_id / anyOf
        Removed value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / gondola_rate_id / default
        Removed value: -null
      • addedInput schema / properties / gondola_rate_id / description
        Added value: +"Optional rate ID from get_hotel_details or compare_rates. When provided, the link deep-links straight to that rate's checkout page instead of the generic hotel page."
      • removedInput schema / properties / gondola_rate_id / title
        Removed value: -"Gondola Rate Id"
      • addedInput schema / properties / gondola_rate_id / type
        Added value: +"integer"
      • addedInput schema / properties / hotel_id / description
        Added value: +"The hotel's Vervotech property ID."
      • removedInput schema / properties / hotel_id / title
        Removed value: -"Hotel Id"
      • addedInput schema / properties / num_adults / description
        Added value: +"Number of adult guests."
      • removedInput schema / properties / num_adults / title
        Removed value: -"Num Adults"
      • removedInput schema / title
        Removed value: -"get_booking_linkArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_booking_linkOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_free_night_credits3 fields changed
      • addedInput schema / required
        Added value: +[]
      • removedInput schema / title
        Removed value: -"get_free_night_creditsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_free_night_creditsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_hotel_details10 fields changed
      • addedInput schema / properties / checkin / description
        Added value: +"Check-in date in YYYY-MM-DD format."
      • removedInput schema / properties / checkin / title
        Removed value: -"Checkin"
      • addedInput schema / properties / checkout / description
        Added value: +"Check-out date in YYYY-MM-DD format."
      • removedInput schema / properties / checkout / title
        Removed value: -"Checkout"
      • addedInput schema / properties / hotel_id / description
        Added value: +"The hotel's Vervotech property ID (returned by search_hotels)."
      • removedInput schema / properties / hotel_id / title
        Removed value: -"Hotel Id"
      • addedInput schema / properties / num_adults / description
        Added value: +"Number of adult guests."
      • removedInput schema / properties / num_adults / title
        Removed value: -"Num Adults"
      • removedInput schema / title
        Removed value: -"get_hotel_detailsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_hotel_detailsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_hotel_reviews4 fields changed
      • addedInput schema / properties / hotel_id / description
        Added value: +"The hotel's Vervotech property ID (from search_hotels results)."
      • removedInput schema / properties / hotel_id / title
        Removed value: -"Hotel Id"
      • removedInput schema / title
        Removed value: -"get_hotel_reviewsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_hotel_reviewsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_hotel_stats13 fields changed
      • addedInput schema / properties / hotel_id / description
        Added value: +"The hotel's Vervotech property ID."
      • removedInput schema / properties / hotel_id / title
        Removed value: -"Hotel Id"
      • addedInput schema / properties / nightly_cash_cost / description
        Added value: +"The current nightly cash rate to score."
      • removedInput schema / properties / nightly_cash_cost / title
        Removed value: -"Nightly Cash Cost"
      • addedInput schema / properties / nightly_cash_cost_currency / description
        Added value: +"Currency of the cash cost (e.g. \"USD\")."
      • removedInput schema / properties / nightly_cash_cost_currency / title
        Removed value: -"Nightly Cash Cost Currency"
      • removedInput schema / properties / nightly_points_cost / anyOf
        Removed value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / nightly_points_cost / default
        Removed value: -null
      • addedInput schema / properties / nightly_points_cost / description
        Added value: +"Optional current nightly points rate to additionally score."
      • removedInput schema / properties / nightly_points_cost / title
        Removed value: -"Nightly Points Cost"
      • addedInput schema / properties / nightly_points_cost / type
        Added value: +"integer"
      • removedInput schema / title
        Removed value: -"get_hotel_statsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_hotel_statsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_loyalty_accounts3 fields changed
      • addedInput schema / required
        Added value: +[]
      • removedInput schema / title
        Removed value: -"get_loyalty_accountsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_loyalty_accountsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_multi_night_rates10 fields changed
      • addedInput schema / properties / end_date / description
        Added value: +"Latest check-out date in YYYY-MM-DD format."
      • removedInput schema / properties / end_date / title
        Removed value: -"End Date"
      • addedInput schema / properties / hotel_id / description
        Added value: +"The hotel's Vervotech property ID."
      • removedInput schema / properties / hotel_id / title
        Removed value: -"Hotel Id"
      • addedInput schema / properties / nights / description
        Added value: +"Number of nights for each candidate stay."
      • removedInput schema / properties / nights / title
        Removed value: -"Nights"
      • addedInput schema / properties / start_date / description
        Added value: +"Earliest check-in date in YYYY-MM-DD format."
      • removedInput schema / properties / start_date / title
        Removed value: -"Start Date"
      • removedInput schema / title
        Removed value: -"get_multi_night_ratesArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_multi_night_ratesOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_past_trips4 fields changed
      • removedInput schema / properties / limit
        Removed value: -{
        -  "default": 20,
        -  "title": "Limit",
        -  "type": "integer"
        -}
      • addedInput schema / required
        Added value: +[]
      • removedInput schema / title
        Removed value: -"get_past_tripsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_past_tripsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_rate_alerts3 fields changed
      • addedInput schema / required
        Added value: +[]
      • removedInput schema / title
        Removed value: -"get_rate_alertsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_rate_alertsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_similar_hotels10 fields changed
      • addedInput schema / properties / checkin / description
        Added value: +"Check-in date in YYYY-MM-DD format."
      • removedInput schema / properties / checkin / title
        Removed value: -"Checkin"
      • addedInput schema / properties / checkout / description
        Added value: +"Check-out date in YYYY-MM-DD format."
      • removedInput schema / properties / checkout / title
        Removed value: -"Checkout"
      • addedInput schema / properties / hotel_id / description
        Added value: +"The seed hotel's Vervotech property ID."
      • removedInput schema / properties / hotel_id / title
        Removed value: -"Hotel Id"
      • addedInput schema / properties / num_adults / description
        Added value: +"Number of adult guests."
      • removedInput schema / properties / num_adults / title
        Removed value: -"Num Adults"
      • removedInput schema / title
        Removed value: -"get_similar_hotelsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_similar_hotelsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_suggested_searches3 fields changed
      • addedInput schema / required
        Added value: +[]
      • removedInput schema / title
        Removed value: -"get_suggested_searchesArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_suggested_searchesOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_travel_profiles3 fields changed
      • addedInput schema / required
        Added value: +[]
      • removedInput schema / title
        Removed value: -"get_travel_profilesArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_travel_profilesOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_traveler_context3 fields changed
      • addedInput schema / required
        Added value: +[]
      • removedInput schema / title
        Removed value: -"get_traveler_contextArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_traveler_contextOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_upcoming_trips3 fields changed
      • addedInput schema / required
        Added value: +[]
      • removedInput schema / title
        Removed value: -"get_upcoming_tripsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_upcoming_tripsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_vehicle_booking4 fields changed
      • addedInput schema / properties / booking_id / description
        Added value: +"The Gondola booking ID (confirmation number)."
      • removedInput schema / properties / booking_id / title
        Removed value: -"Booking Id"
      • removedInput schema / title
        Removed value: -"get_vehicle_bookingArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_vehicle_bookingOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_vehicle_booking_coverage4 fields changed
      • addedInput schema / properties / booking_id / description
        Added value: +"The Gondola booking ID of the vehicle booking."
      • removedInput schema / properties / booking_id / title
        Removed value: -"Booking Id"
      • removedInput schema / title
        Removed value: -"get_vehicle_booking_coverageArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_vehicle_booking_coverageOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_vehicle_booking_link12 fields changed
      • addedInput schema / properties / dropoff_datetime / description
        Added value: +"Drop-off date and time in ISO format (e.g. \"2025-03-20T10:00:00\")."
      • removedInput schema / properties / dropoff_datetime / title
        Removed value: -"Dropoff Datetime"
      • addedInput schema / properties / pickup_datetime / description
        Added value: +"Pickup date and time in ISO format (e.g. \"2025-03-15T10:00:00\")."
      • removedInput schema / properties / pickup_datetime / title
        Removed value: -"Pickup Datetime"
      • addedInput schema / properties / rate_code / description
        Added value: +"Rate code of the selected vehicle."
      • removedInput schema / properties / rate_code / title
        Removed value: -"Rate Code"
      • addedInput schema / properties / search_id / description
        Added value: +"Search ID from search_vehicles."
      • removedInput schema / properties / search_id / title
        Removed value: -"Search Id"
      • addedInput schema / properties / vendor_code / description
        Added value: +"Vendor code from search results."
      • removedInput schema / properties / vendor_code / title
        Removed value: -"Vendor Code"
      • removedInput schema / title
        Removed value: -"get_vehicle_booking_linkArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_vehicle_booking_linkOutput",
        -  "type": "object"
        -}New value: +null
    • Changedget_vehicle_details28 fields changed
      • removedInput schema / properties / acriss_code / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / acriss_code / default
        Removed value: -null
      • addedInput schema / properties / acriss_code / description
        Added value: +"ACRISS code from the selected vehicle result; pass it through to disambiguate classes."
      • removedInput schema / properties / acriss_code / title
        Removed value: -"Acriss Code"
      • addedInput schema / properties / acriss_code / type
        Added value: +"string"
      • removedInput schema / properties / desk_kind / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / desk_kind / default
        Removed value: -null
      • addedInput schema / properties / desk_kind / description
        Added value: +"Desk classification from the selected vehicle result, when present."
      • removedInput schema / properties / desk_kind / title
        Removed value: -"Desk Kind"
      • addedInput schema / properties / desk_kind / type
        Added value: +"string"
      • removedInput schema / properties / pickup_location / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / pickup_location / default
        Removed value: -null
      • addedInput schema / properties / pickup_location / description
        Added value: +"Pickup location from the selected vehicle result; pass it through for metro searches."
      • removedInput schema / properties / pickup_location / title
        Removed value: -"Pickup Location"
      • addedInput schema / properties / pickup_location / type
        Added value: +"string"
      • addedInput schema / properties / rate_code / description
        Added value: +"Rate code from search results."
      • removedInput schema / properties / rate_code / title
        Removed value: -"Rate Code"
      • addedInput schema / properties / search_id / description
        Added value: +"Search ID from the vehicle search results."
      • removedInput schema / properties / search_id / title
        Removed value: -"Search Id"
      • addedInput schema / properties / vendor_code / description
        Added value: +"Vendor code from search results (e.g. \"ZE\" for Hertz, \"AL\" for Alamo)."
      • removedInput schema / properties / vendor_code / title
        Removed value: -"Vendor Code"
      • removedInput schema / properties / vendor_location_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / vendor_location_id / default
        Removed value: -null
      • addedInput schema / properties / vendor_location_id / description
        Added value: +"Vendor desk identifier from the selected vehicle result, when present."
      • removedInput schema / properties / vendor_location_id / title
        Removed value: -"Vendor Location Id"
      • addedInput schema / properties / vendor_location_id / type
        Added value: +"string"
      • removedInput schema / title
        Removed value: -"get_vehicle_detailsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_vehicle_detailsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedoptimize_loyalty_portfolio3 fields changed
      • addedInput schema / required
        Added value: +[]
      • removedInput schema / title
        Removed value: -"optimize_loyalty_portfolioArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "optimize_loyalty_portfolioOutput",
        -  "type": "object"
        -}New value: +null
    • Changedpredict_price17 fields changed
      • addedInput schema / properties / checkin / description
        Added value: +"Check-in date in YYYY-MM-DD format."
      • removedInput schema / properties / checkin / title
        Removed value: -"Checkin"
      • addedInput schema / properties / checkout / description
        Added value: +"Check-out date in YYYY-MM-DD format."
      • removedInput schema / properties / checkout / title
        Removed value: -"Checkout"
      • addedInput schema / properties / hotel_id / description
        Added value: +"The hotel's Vervotech property ID."
      • removedInput schema / properties / hotel_id / title
        Removed value: -"Hotel Id"
      • addedInput schema / properties / nightly_cash_cost / description
        Added value: +"The current nightly cash rate to evaluate (from search_hotels)."
      • removedInput schema / properties / nightly_cash_cost / title
        Removed value: -"Nightly Cash Cost"
      • addedInput schema / properties / nightly_cash_cost_currency / description
        Added value: +"Currency of the cash cost (e.g. \"USD\", \"EUR\")."
      • removedInput schema / properties / nightly_cash_cost_currency / title
        Removed value: -"Nightly Cash Cost Currency"
      • removedInput schema / properties / nightly_points_cost / anyOf
        Removed value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / nightly_points_cost / default
        Removed value: -null
      • addedInput schema / properties / nightly_points_cost / description
        Added value: +"Optional current nightly points rate."
      • removedInput schema / properties / nightly_points_cost / title
        Removed value: -"Nightly Points Cost"
      • addedInput schema / properties / nightly_points_cost / type
        Added value: +"integer"
      • removedInput schema / title
        Removed value: -"predict_priceArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "predict_priceOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsearch_events37 fields changed
      • removedInput schema / properties / classification / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / classification / default
        Removed value: -null
      • addedInput schema / properties / classification / description
        Added value: +"Optional segment, genre, or subgenre."
      • removedInput schema / properties / classification / title
        Removed value: -"Classification"
      • addedInput schema / properties / classification / type
        Added value: +"string"
      • removedInput schema / properties / end_date / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / end_date / default
        Removed value: -null
      • addedInput schema / properties / end_date / description
        Added value: +"Latest local event date, YYYY-MM-DD."
      • removedInput schema / properties / end_date / title
        Removed value: -"End Date"
      • addedInput schema / properties / end_date / type
        Added value: +"string"
      • addedInput schema / properties / keyword / description
        Added value: +"Artist, team, show, or event name."
      • removedInput schema / properties / keyword / title
        Removed value: -"Keyword"
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedInput schema / properties / location / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / location / default
        Removed value: -null
      • addedInput schema / properties / location / description
        Added value: +"Optional city, region, postal code, or natural-language location."
      • removedInput schema / properties / location / title
        Removed value: -"Location"
      • addedInput schema / properties / location / type
        Added value: +"string"
      • addedInput schema / properties / page / minimum
        Added value: +0
      • removedInput schema / properties / page / title
        Removed value: -"Page"
      • removedInput schema / properties / radius / anyOf
        Removed value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / radius / default
        Removed value: -null
      • addedInput schema / properties / radius / maximum
        Added value: +500
      • addedInput schema / properties / radius / minimum
        Added value: +1
      • removedInput schema / properties / radius / title
        Removed value: -"Radius"
      • addedInput schema / properties / radius / type
        Added value: +"integer"
      • removedInput schema / properties / radius_unit / title
        Removed value: -"Radius Unit"
      • removedInput schema / properties / sort / title
        Removed value: -"Sort"
      • removedInput schema / properties / start_date / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / start_date / default
        Removed value: -null
      • addedInput schema / properties / start_date / description
        Added value: +"Earliest local event date, YYYY-MM-DD."
      • removedInput schema / properties / start_date / title
        Removed value: -"Start Date"
      • addedInput schema / properties / start_date / type
        Added value: +"string"
      • removedInput schema / title
        Removed value: -"search_eventsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "search_eventsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsearch_flights36 fields changed
      • removedInput schema / properties / airlines / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / airlines / default
        Removed value: -null
      • addedInput schema / properties / airlines / description
        Added value: +"Optional airline codes or names, e.g. [\"UA\"] or [\"United\"]. Used only in \"browse\" mode and passed to the Google Flights search API."
      • addedInput schema / properties / airlines / items
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / airlines / title
        Removed value: -"Airlines"
      • addedInput schema / properties / airlines / type
        Added value: +"array"
      • removedInput schema / properties / cabin_class / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / cabin_class / default
        Removed value: -null
      • addedInput schema / properties / cabin_class / description
        Added value: +"Optional cabin class: \"economy\", \"premium economy\", \"business\", \"first\"."
      • removedInput schema / properties / cabin_class / title
        Removed value: -"Cabin Class"
      • addedInput schema / properties / cabin_class / type
        Added value: +"string"
      • addedInput schema / properties / departure_date / description
        Added value: +"Departure date in YYYY-MM-DD format."
      • removedInput schema / properties / departure_date / title
        Removed value: -"Departure Date"
      • addedInput schema / properties / destination / description
        Added value: +"Destination airport code or city (e.g. \"NRT\", \"LHR\", \"Paris\")."
      • removedInput schema / properties / destination / title
        Removed value: -"Destination"
      • removedInput schema / properties / max_stops / anyOf
        Removed value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / max_stops / default
        Removed value: -null
      • addedInput schema / properties / max_stops / description
        Added value: +"Optional maximum stops per direction in \"browse\" mode. Use 0 for nonstop only."
      • addedInput schema / properties / max_stops / minimum
        Added value: +0
      • removedInput schema / properties / max_stops / title
        Removed value: -"Max Stops"
      • addedInput schema / properties / max_stops / type
        Added value: +"integer"
      • addedInput schema / properties / mode / description
        Added value: +"Leave as \"browse\" (default). \"book\" is a restricted alpha — only use it if the user explicitly asks to book a flight."
      • removedInput schema / properties / mode / title
        Removed value: -"Mode"
      • addedInput schema / properties / num_passengers / description
        Added value: +"Number of passengers."
      • removedInput schema / properties / num_passengers / title
        Removed value: -"Num Passengers"
      • addedInput schema / properties / origin / description
        Added value: +"Origin airport code or city (e.g. \"LAX\", \"SFO\", \"New York\")."
      • removedInput schema / properties / origin / title
        Removed value: -"Origin"
      • addedInput schema / properties / page / description
        Added value: +"1-based results page, 10 options per page. Increment to see more options."
      • removedInput schema / properties / page / title
        Removed value: -"Page"
      • removedInput schema / properties / return_date / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / return_date / default
        Removed value: -null
      • addedInput schema / properties / return_date / description
        Added value: +"Optional return date in YYYY-MM-DD format for a round trip. In browse mode, the tool searches outbound and return legs separately as one-way results."
      • removedInput schema / properties / return_date / title
        Removed value: -"Return Date"
      • addedInput schema / properties / return_date / type
        Added value: +"string"
      • removedInput schema / title
        Removed value: -"search_flightsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "search_flightsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsearch_hotels19 fields changed
      • removedInput schema / properties / chain_name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / chain_name / default
        Removed value: -null
      • addedInput schema / properties / chain_name / description
        Added value: +"Optional hotel chain filter (e.g. \"marriott\", \"hilton\", \"hyatt\", \"ihg\"). Case-insensitive substring match against each result's chain. If no result matches, the unfiltered results are returned with an explicit note in the summary so you don't keep retrying with different chain values."
      • removedInput schema / properties / chain_name / title
        Removed value: -"Chain Name"
      • addedInput schema / properties / chain_name / type
        Added value: +"string"
      • addedInput schema / properties / checkin / description
        Added value: +"Check-in date in YYYY-MM-DD format."
      • removedInput schema / properties / checkin / title
        Removed value: -"Checkin"
      • addedInput schema / properties / checkout / description
        Added value: +"Check-out date in YYYY-MM-DD format."
      • removedInput schema / properties / checkout / title
        Removed value: -"Checkout"
      • addedInput schema / properties / hotel_name
        Added value: +{
        +  "description": "Optional hotel name to boost to the top of results (e.g. \"Conrad Las Vegas\", \"Park Hyatt Tokyo\"). Use this when the user names a specific hotel — the matching property will be ranked first so you can pass its hotel_id to compare_rates without guessing. Case-insensitive substring match against the property name. Boosting (rather than filtering) preserves nearby alternatives the user may want to see.",
        +  "type": "string"
        +}
      • removedInput schema / properties / limit
        Removed value: -{
        -  "default": 20,
        -  "title": "Limit",
        -  "type": "integer"
        -}
      • addedInput schema / properties / location / description
        Added value: +"City name, address, or area (e.g. \"Tokyo\", \"Manhattan, New York\", \"near LAX airport\")."
      • removedInput schema / properties / location / title
        Removed value: -"Location"
      • removedInput schema / properties / loyalty_points
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": {
        -        "type": "integer"
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Loyalty Points"
        -}
      • removedInput schema / properties / loyalty_programs
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Loyalty Programs"
        -}
      • addedInput schema / properties / num_adults / description
        Added value: +"Number of adult guests."
      • removedInput schema / properties / num_adults / title
        Removed value: -"Num Adults"
      • removedInput schema / title
        Removed value: -"search_hotelsArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "search_hotelsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsearch_vehicles14 fields changed
      • addedInput schema / properties / dropoff_datetime / description
        Added value: +"Drop-off date and time in ISO format (e.g. \"2025-03-20T10:00:00\")."
      • removedInput schema / properties / dropoff_datetime / title
        Removed value: -"Dropoff Datetime"
      • addedInput schema / properties / pickup_datetime / description
        Added value: +"Pickup date and time in ISO format (e.g. \"2025-03-15T10:00:00\")."
      • removedInput schema / properties / pickup_datetime / title
        Removed value: -"Pickup Datetime"
      • addedInput schema / properties / pickup_location / description
        Added value: +"Airport IATA code (e.g. \"LAX\", \"JFK\", \"SFO\")."
      • removedInput schema / properties / pickup_location / title
        Removed value: -"Pickup Location"
      • removedInput schema / properties / vehicle_class / anyOf
        Removed value: -[
        -  {
        -    "enum": [
        -      "Economy",
        -      "Compact",
        -      "Standard",
        -      "FullSize",
        -      "Premium",
        -      "Luxury",
        -      "SUV",
        -      "Van"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / vehicle_class / default
        Removed value: -null
      • addedInput schema / properties / vehicle_class / description
        Added value: +"Optional vehicle class preference: Economy, Compact, Standard, FullSize, Premium, Luxury, SUV, Van."
      • addedInput schema / properties / vehicle_class / enum
        Added value: +[
        +  "Economy",
        +  "Compact",
        +  "Standard",
        +  "FullSize",
        +  "Premium",
        +  "Luxury",
        +  "SUV",
        +  "Van"
        +]
      • removedInput schema / properties / vehicle_class / title
        Removed value: -"Vehicle Class"
      • addedInput schema / properties / vehicle_class / type
        Added value: +"string"
      • removedInput schema / title
        Removed value: -"search_vehiclesArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "search_vehiclesOutput",
        -  "type": "object"
        -}New value: +null
    • Changedupdate_traveler_profile4 fields changed
      • addedInput schema / properties / profile_entry / description
        Added value: +"The preference or experience to save. Be specific and actionable. Good: 'Prefers ocean-view rooms'. Bad: 'Liked the hotel'."
      • removedInput schema / properties / profile_entry / title
        Removed value: -"Profile Entry"
      • removedInput schema / title
        Removed value: -"update_traveler_profileArguments"
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "update_traveler_profileOutput",
        -  "type": "object"
        -}New value: +null
  11. 1 tool update
    • Addedsearch_events
  12. 1 tool update
    • Changedget_vehicle_details4 fields changed
      • addedInput schema / properties / acriss_code
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Acriss Code"
        +}
      • addedInput schema / properties / desk_kind
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Desk Kind"
        +}
      • addedInput schema / properties / pickup_location
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Pickup Location"
        +}
      • addedInput schema / properties / vendor_location_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Vendor Location Id"
        +}
  13. 6 tool updates
    • Removedbook_hotel
    • Removedbook_vehicle
    • Removedcancel_vehicle_booking
    • Removedcreate_rate_alert
    • Removeddelete_rate_alert
    • Removedget_payment_methods
  14. 1 tool update
    • Changedoptimize_loyalty_portfolio5 fields changed
      • removedInput schema / properties / checkin
        Removed value: -{
        -  "title": "Checkin",
        -  "type": "string"
        -}
      • removedInput schema / properties / checkout
        Removed value: -{
        -  "title": "Checkout",
        -  "type": "string"
        -}
      • removedInput schema / properties / location
        Removed value: -{
        -  "title": "Location",
        -  "type": "string"
        -}
      • removedInput schema / properties / num_adults
        Removed value: -{
        -  "default": 2,
        -  "title": "Num Adults",
        -  "type": "integer"
        -}
      • removedInput schema / required
        Removed value: -[
        -  "location",
        -  "checkin",
        -  "checkout"
        -]
  15. 1 tool update
    • Addedget_free_night_credits

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables finding and comparing cash and award flights, with seat maps and trip planning, ranking options by user-defined per-mile valuations.
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Official Industry Standard MCP for Travel Awards, Points, and more. Search award flight availability across multiple airline loyalty programs, find sweet spots, check transfer partners, and get market stats all via MCP.
    1
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables award flight search across 20+ airline programs using PointsYeah, with tools for comparing programs, estimating points value, and checking redemption deals.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Book hotels worldwide — search, price, prebook & book across 249 countries. 65 tools for hotel search, flights, loyalty, analytics. Zero API keys needed. at best prices for hotels 3 M+ property
    7
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct resource and action; no two tools have overlapping purposes. For example, search_hotels, get_hotel_details, get_hotel_reviews, and get_hotel_stats all address different aspects of hotel research.

Naming Consistency5/5

Tool names follow consistent patterns: search_ for searches, get_ for retrievals, book_ for bookings, and a few standalone verbs like cancel_, create_, delete_. All use snake_case with no mixing of conventions.

Tool Count4/5

With 31 tools, the server is on the high side but covers a broad domain (hotels, flights, vehicles, loyalty, payments). Most tools are justified, though a few hotel analysis tools could potentially be consolidated.

Completeness3/5

Hotels and vehicles have near-complete lifecycle coverage (search, details, book, manage), but flights are missing a book_flight tool, and hotel cancellation is not present. These gaps limit completeness.