Skip to main content
Glama

MAQAMI Travel

Server Details

search and Book hotels and flights at best prices

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.1/5.0

Scored across 89 tools

Disambiguation2/5

With 89 tools, many hotel search/discovery tools overlap (e.g., get_data_hotels, get_data_hotel_search, get_data_hotels_semantic_search, get_data_hotels_room_search) and multiple booking retrieval tools exist for hotels and flights. An agent could easily misselect between similar reference or booking tools, though descriptions provide some differentiation.

Naming Consistency2/5

Names mix camelCase, snake_case, and PascalCase, and some use HTTP-method prefixes while others do not (e.g., get_bookings vs searchBookings vs getExperienceBooking). The inconsistent conventions make the set harder to scan, though most names remain descriptive.

Tool Count1/5

89 tools is far beyond the typical 3-15 range and exceeds the 50+ threshold for extreme mismatch, even for a broad travel platform. The surface is bloated with many granular reference-data and search endpoints.

Completeness4/5

The set covers hotel, flight, and experience booking lifecycles including search, prebook, book, cancel, amend, rebook, ancillaries, vouchers, loyalty, and analytics. Minor gaps exist (e.g., flight booking amendment), but core workflows are well represented.

Available Tools

89 tools
chargeFlightExtraChargesAInspect

Overview

Confirms a pending extra-charge batch created by /extra-charges/precharges. Captures the Stripe PaymentIntent or bills the credit line, then appends the lines to the booking.

Access

Requires Flights API access. Post-booking extra charges are not enabled by default — contact the LiteAPI support team to request access.

Idempotency

Idempotent on chargesId, mirroring POST /flights/bookings prebookId replay:

  • Already confirmed — HTTP 200 with data.message and the persisted extras (no re-capture / no duplicate credit-line billing)

  • Concurrent confirm — HTTP 409 / 45035 while another confirm for the same chargesId holds the Redis lock; retry after the first completes

When to Use

  • After the customer confirmed the Stripe PaymentIntent (status requires_capture / succeeded), or immediately for CREDIT bookings

Constraints

  • Body only needs chargesId + payment (charge lines are encoded in chargesId)

  • payment.method must match the booking's original payment (TRANSACTION_ID or CREDIT)

  • For Stripe, payment.transactionId must be the id returned by precharges

ParametersJSON Schema
NameRequiredDescriptionDefault
paymentYesPayment details for capturing the extra charge. method must match the booking original payment.
bookingIdYesFlight booking identifier
chargesIdYesOpaque token from precharges

TDQS

A4/5.0
Behavior1/5

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

The description explicitly states 'Idempotent on chargesId' and details replay behavior (HTTP 200 on already-confirmed, 409/45035 on concurrent confirm), but the annotations declare idempotentHint=false. This directly contradicts the structured hint and could mislead an agent into replaying the call.

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 markdown headers (Overview, Access, Idempotency, When to Use, Constraints) make it easy to scan and the key purpose is front-loaded. It is somewhat verbose for a 3-parameter tool, but each section carries distinct 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 mutation tool with no output schema and 3 required nested params, the description covers access gating (support-team enablement), idempotency/replay semantics, error codes, and required vs optional fields. An agent has everything needed to invoke it correctly, aside from the annotation conflict.

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 already 100%, so the baseline is 3, but the description adds real meaning beyond the schema: only chargesId + payment are needed (lines encoded in chargesId), payment.method must match the booking's original payment, and transactionId must be the id from precharges.

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

Purpose5/5

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

States a specific verb and resource ('Confirms a pending extra-charge batch created by /extra-charges/precharges') and describes the side effects (Stripe capture, credit-line billing, appending lines to the booking). An agent can clearly distinguish it from the sibling prechargeFlightExtraCharges, which creates the batch this tool confirms.

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 'When to Use' section gives an explicit precondition (after the customer confirmed the PaymentIntent at requires_capture/succeeded, or immediately for CREDIT bookings) and the Overview names the upstream tool that produces chargesId. Alternatives and timing are fully specified.

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

createExperienceBookingAInspect

Capture Stripe payment then confirm cart with experiences-api. Cart status completed maps to dispatcher PENDING_CONFIRMATION; final CONFIRMED arrives via webhook. Cart status ERROR returns 502.

Public booking responses expose partner sell in price and partner earn in commission / clientCommission. Provider retail / invoice (providerPayment) is omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
billingYes
paymentYes
travelerYes
prebookIdYesDispatcher prebook id from `POST /experiences/tours/{id}/prebooks`.
customTagsNoOptional bag of up to 5 user-defined key/value labels persisted with the booking. Keys must match `^[A-Z0-9_-]+$`; values are strings up to 255 characters.

TDQS

A3.7/5.0
Behavior5/5

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

Beyond the annotations it discloses non-obvious behavior: cart status `completed` maps to dispatcher `PENDING_CONFIRMATION`, final `CONFIRMED` arrives via webhook, and `ERROR` returns 502 – all essential for interpreting a non-idempotent, open-world mutation. It also explains that responses expose partner sell in `price` and earn in `commission`/`clientCommission` while `providerPayment` is omitted, which is real behavioral context not present in 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?

Front-loaded with the core action and then the status/response semantics in compact sentences; every sentence carries information. The price/commission note is slightly tangential but still useful for interpreting the return value.

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 mutation tool with no output schema and 40% param coverage the description supplies the crucial missing pieces: async confirmation flow, error mapping, and response field semantics. It leaves the billing/traveler payloads and the prebook-prerequisite unsaid, but the core operational picture is complete.

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 description coverage is only 40% and the description adds no parameter-level semantics for `billing`, `traveler`, or `customTags`; it only alludes to the payment step already documented by the schema's `transactionId` note. With the majority of parameters undocumented in both places, the description does not compensate for the coverage gap.

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

Purpose4/5

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

The description gives a specific two-step verb sequence (capture Stripe payment, confirm cart with experiences-api) and names the concrete resource (cart/prebook). It clearly implies the post-prebook booking step, though it never names a sibling like prebookExperienceTour to differentiate explicitly.

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

Usage Guidelines3/5

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

Usage is implied: it consumes a prebookId from the prebook endpoint and completes the booking, and it hints that CONFIRMED arrives asynchronously via webhook. But there is no explicit when-to-use vs. when-not, no stated prerequisites (e.g. must call prebookExperienceTour first), and no routing to an alternative.

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

delete_VoucherA
Destructive
Inspect

Overview

Permanently remove a voucher from your system. Use with caution - deleted vouchers cannot be recovered.

When to Use

  • Cleanup - Remove expired or unused vouchers

  • Error correction - Delete vouchers created by mistake

  • Inventory management - Remove vouchers no longer needed

What You Get

  • Confirmation - Success message when voucher is deleted

Important Notes

  • Permanent action - Deleted vouchers cannot be restored

  • Usage check - Ensure vouchers aren't needed before deleting

Quick Start

Provide the voucher ID in the URL path. Returns confirmation of deletion.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique identifier of the voucher to be deleted

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds useful context that deletion is permanent and cannot be recovered, plus that a confirmation is returned. It does not mention authentication requirements or edge cases like a missing voucher, but it meaningfully supplements 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.

Conciseness3/5

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

The markdown structure is clear and front-loaded, but it contains redundancy across Overview, Important Notes, and Quick Start regarding permanent deletion. Several sentences restate the same caution, so it is longer than necessary for a single-parameter delete 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?

For a simple delete operation with one documented parameter and full annotation coverage, the description is nearly complete. It tells the agent what the tool does, when to use it, and that it returns confirmation, though it could note failure behavior or prerequisites.

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 id parameter is already documented. The description adds value by specifying that the voucher ID must be provided in the URL path, which goes beyond the schema and clarifies invocation.

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 a specific verb and resource: 'Permanently remove a voucher from your system.' It distinguishes the destructive nature of the operation, but it does not explicitly contrast this tool with siblings like put_vouchers_id_status or get_vouchers_voucherid.

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 'When to Use' section gives three concrete contexts: cleanup, error correction, and inventory management. It lacks any 'when not to use' guidance or explicit alternatives, so it falls short of the top score.

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

get_bookingsB
Read-onlyIdempotent
Inspect

Overview

Get all bookings associated with your API key, with optional filtering by date ranges. Perfect for generating reports and managing your booking inventory.

When to Use

  • Booking reports - Generate reports of all bookings

  • Date range queries - Find bookings within specific date ranges

  • Administrative overview - View all bookings in your system

  • Analytics - Analyze booking patterns and trends

What You Get

  • Complete booking list - All bookings linked to your API key

  • Filtered results - Optional filtering by stay dates or booking creation dates

  • Booking details - Full information for each booking

  • Status information - Current status of each booking

Filtering Options

  • Stay period - Filter by check-in/check-out date range (startDate, endDate)

  • Booking period - Filter by when bookings were created (bookingStartDate, bookingEndDate)

  • Status - Filter by booking status (optional)

Quick Start

No parameters required for all bookings. Optionally provide date ranges to filter results. Returns all matching bookings with complete details.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoStatus of the bookings.
endDateNoEnd date of the stay period. Returns bookings where the stay (check-in to check-out) overlaps with this date range.
sandboxNoIndicates if the request was made in a sandbox (test) environment. When omitted, no sandbox filter is applied and both production and sandbox bookings are returned.
startDateNoStart date of the stay period. Returns bookings where the stay (check-in to check-out) overlaps with this date range.
customTagsNoFilter by customTags. Comma-separated `KEY:VALUE` pairs (e.g. `SOURCE:GOOGLE,TIER:GOLD`); all pairs are joined with AND. Keys must match `^[A-Z0-9_-]+$`, up to 5 keys, value up to 255 characters. Value matching is case-insensitive.
paymentStatusNoFilter by payment status.
bookingEndDateNoEnd date of the booking creation period. Only bookings that were created on or before this date will be included.
bookingStartDateNoStart date of the booking creation period. Only bookings that were created on or after this date will be included.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered and the description needn't repeat it. The description adds scoping context (results tied to your API key, optional stay vs. booking creation filters) but omits pagination, result caps, sorting, or rate-limit behavior for a potentially large listing.

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?

Front-loaded and well-organized with headers, but heavily over-formatted for a simple list tool: four sections, bulleted marketing phrasing ('Perfect for generating reports', 'Administrative overview'), and a redundant Quick Start that repeats the zero-parameter case. The signal-to-length ratio is mediocre.

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

Completeness3/5

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

Covers what the tool returns at a high level (complete booking list, full details, status) and the filter categories, which is useful since there is no output schema. However, it never addresses result volume, pagination, or ordering — material gaps for a tool that can return 'all bookings' on an account.

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 already documents all eight parameters, including the overlap semantics for startDate/endDate and the customTags syntax. The description only restates a subset (stay period, booking period, status) and omits paymentStatus, customTags, and sandbox, adding little beyond the schema — baseline 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?

States a specific verb and resource ('Get all bookings associated with your API key') with clear scope (all bookings under the key, optional date filtering). It does not, however, differentiate itself from overlapping siblings like listBookings, searchBookings, or get_bookings_bookingid, so an agent cannot tell from the text alone which retrieval tool to pick.

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

Usage Guidelines3/5

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

The 'When to Use' section lists use cases (reports, date-range queries, administrative overview, analytics), which gives implied context for invocation. But it offers no 'when not to use' and never names an alternative, despite several sibling list/search tools that plausibly overlap. Guidance is present but does not resolve tool selection.

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

get_bookings_bookingidA
Read-onlyIdempotent
Inspect

Overview

Get complete details for a specific booking by its booking ID. Returns all booking information including status, guest details, pricing, and cancellation policies.

When to Use

  • Booking details page - Display complete booking information

  • Status checks - Verify current booking status

  • Confirmation lookup - Retrieve booking confirmation details

  • Support queries - Look up booking information for customer service

What You Get

  • Complete booking details - All information about the booking

  • Booking status - Current status (confirmed, cancelled, etc.)

  • Guest information - Name, email, and contact details

  • Stay information - Check-in/check-out dates, hotel details

  • Pricing breakdown - Total cost, taxes, fees, and payment status

  • Cancellation policies - Terms and conditions for cancellation

  • Hotel confirmation - Hotel confirmation code and reference

Quick Start

Provide the bookingId in the URL path. Returns complete booking details including status and all associated information.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNorequest timeout in seconds
bookingIdYes(Required) The unique identifier of the booking you would like to update.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is covered. With no output schema, the 'What You Get' section meaningfully discloses the return payload (status, guest info, pricing breakdown, cancellation policy, hotel confirmation code). No mention of auth requirements or behavior on an invalid/missing booking ID.

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?

Front-loaded and well-sectioned, but padded: the overview already says it returns 'status, guest details, pricing, and cancellation policies,' which the 'What You Get' bullets then restate in six lines. For a single-ID getter, the markdown is longer than the task warrants.

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 simple read-by-ID tool with full annotation coverage, the definition covers purpose, contexts, and response contents adequately, and no output schema means return values do not need separate treatment. It omits error/not-found behavior, which is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds only that bookingId goes in the URL path; it does not clarify the timeout parameter or the ID format. Note the schema's own bookingId description says 'booking you would like to update,' which conflicts with this read operation, but the description correctly frames it as a lookup.

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 states a specific verb and resource: 'Get complete details for a specific booking by its booking ID.' That distinguishes it in kind from list/search siblings like get_bookings and searchBookings, though it never explicitly names an alternative. Clear and specific, but no direct sibling differentiation.

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 'When to Use' section gives four concrete contexts (details page, status checks, confirmation lookup, support queries), which is solid situational guidance. It stops short of naming when NOT to use it or pointing to the list/search siblings for broader queries.

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

get_bookings_guest_nationality_reportA
Read-onlyIdempotent
Inspect

Overview

Returns analytics on the source markets (guest nationality) of bookings. Compares the current period to the previous period of equal length, with per-nationality booking counts, sales in USD, average booking value, and period-over-period change.

When to Use

  • Source market analysis - See which nationalities drive the most bookings and sales

  • Period comparison - Compare current vs previous period totals and per-nationality growth

  • Geographic dashboards - Track performance by guest country (ISO code)

  • Marketing and sales planning - Identify growing or declining markets

What You Get

  • Period definition - Date ranges for current and previous periods

  • Summary - Total sales (USD), change percent/amount, and count of nationalities

  • Per-nationality data - For each guest nationality: booking count, total sales USD, avg booking value; current and previous period; and change (sales percent/amount, booking count change)

  • New markets - Nationalities with no previous-period data have previous_period: null and change expressed as 100% growth

Quick Start

Pass query parameters from, to, and sandbox. The API derives the previous period (same length, immediately before). Returns period metadata, summary totals, and an array of nationality-level metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd date of the current period YYYY-MM-DD (ISO 8601)
fromYesStart date of the current period YYYY-MM-DD (ISO 8601)
sandboxNoFilter by environment: "true" for sandbox, "false" for production

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the bar is lower. The description still adds real context: the previous period is auto-derived as an equal-length window immediately before, and new nationalities return previous_period: null with change expressed as 100% growth — useful edge-case behavior the annotations do not convey.

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

Conciseness4/5

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

Markdown headers front-load Overview, When to Use, What You Get, and Quick Start, and the content is scannable. It is longer than strictly necessary for a three-parameter read tool, with some overlap between 'What You Get' and the overview paragraph, but nothing is wasted.

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?

There is no output schema, and the description thoroughly covers the return shape: period metadata, summary totals, per-nationality booking/sales/average metrics, and the new-market null case. Combined with the annotations covering safety, an agent has everything needed to call and interpret this tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it names from/to/sandbox as the query inputs and explains that the API derives the prior comparison period from them rather than requiring a separate parameter.

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 states a specific verb and resource: analytics on guest-nationality source markets of bookings, with period-over-period comparison. It is clear what the tool produces, but it does not differentiate itself from the very similar sibling get_bookings_source_markets_report, so an agent must guess which report to pick.

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?

Four explicit 'When to Use' bullets give concrete scenarios (source market analysis, period comparison, geographic dashboards, marketing planning), which is well above implied usage. It stops short of an exclusion or an alternative-tool pointer, which would be needed for a 5.

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

get_bookings_hotels_sales_reportA
Read-onlyIdempotent
Inspect

Overview

Returns analytics on properties (hotels): per-hotel sales, buying price, profit, and profit margin. Compares the current period to the previous period of equal length. Results are ordered by current-period sales (highest first) and limited by the limit parameter.

When to Use

  • Property performance - See which hotels drive the most sales and profit

  • Period comparison - Compare current vs previous period sales, profit, and bookings per hotel

  • Profit analysis - Track total_buying_price_usd, total_profit_usd, and profit_margin_percent by property

  • Top properties dashboards - Rank hotels by sales or profit

What You Get

  • Period definition - Date ranges for current and previous periods

  • Summary - Totals for sales (USD), profit (USD), bookings, count of hotels in the result, and average profit margin percent; all with period-over-period change

  • Per-hotel data - For each property: hotel_id, hotel_name, city, country; current and previous period (booking_count, total_sales_usd, avg_booking_value_usd, total_buying_price_usd, total_profit_usd, profit_margin_percent); and change (sales/profit percent and amount, booking_count_change)

  • New properties - Hotels with no previous-period data have previous_period: null

Quick Start

Pass query parameters from, to, sandbox, and optionally limit (default controls how many top hotels are returned). The API derives the previous period (same length, immediately before). Returns period metadata, summary totals, and an array of hotel-level metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd date of the current period YYYY-MM-DD (ISO 8601)
fromYesStart date of the current period YYYY-MM-DD (ISO 8601)
limitNoMaximum number of hotels to return (ordered by current-period sales, highest first)
sandboxNoFilter by environment: "true" for sandbox, "false" for production

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, openWorld, so safety is covered. The description adds real behavioral context: automatic derivation of the previous period of equal length, ordering by current-period sales, limit-bounded output, and the null previous_period for new hotels. Does not mention rate limits or pagination beyond 'limit'.

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?

Markdown headers (Overview, When to Use, What You Get, Quick Start) front-load purpose and usage. Content is a bit long with some overlap between Overview and Quick Start, but every section earns its place for an analytics endpoint. Slight redundancy keeps it from a 5.

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?

No output schema exists, yet the 'What You Get' section documents the return shape in detail (period metadata, summary totals, per-hotel fields, nulls for new properties). This compensates well for the missing output schema. It still omits guidance on limits, defaults, or authentication, so it's complete but not exhaustive.

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 baseline is 3. The description goes beyond the schema by explaining that the previous period is auto-derived from from/to and that limit ranks by current-period sales, adding semantic value about how from/to and limit interact with the result set.

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

Purpose4/5

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

States a specific verb+resource: returns hotel-level sales analytics (sales, buying price, profit, margin) with period-over-period comparison. Scope is concrete and concrete metrics are named. However, it never contrasts itself against closely related siblings like post_analytics_hotels or getPriceIndexHotels, so an agent can't tell from the description alone which of these to call.

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

Usage Guidelines3/5

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

The 'When to Use' block gives implied usage (property performance, period comparison, profit analysis, dashboards) but does not name alternatives or exclusion conditions, e.g., when to prefer post_analytics_report or post_analytics_markets. Useful but not decisive for sibling selection.

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

get_bookings_source_markets_reportA
Read-onlyIdempotent
Inspect

Overview

Returns analytics on destinations (the country where the hotel is located). Compares the current period to the previous period of equal length, with per-destination booking count, hotel count, sales in USD, average booking value, and period-over-period change.

When to Use

  • Destination performance - See which countries (hotel locations) drive the most bookings and sales

  • Period comparison - Compare current vs previous period totals and per-destination growth

  • Geographic dashboards - Track performance by destination country (ISO code)

  • Inventory and commercial planning - Identify growing or declining destinations

What You Get

  • Period definition - Date ranges for current and previous periods

  • Summary - Total sales (USD), change percent/amount, and count of destination countries

  • Per-destination data - For each country: booking count, hotel count, total sales USD, avg booking value; current and previous period; and change (sales percent/amount, booking count change)

  • New or inactive destinations - Countries with no previous-period data have previous_period: null; destinations with no current-period activity may have zeros and negative change

Quick Start

Pass query parameters from, to, and sandbox. The API derives the previous period (same length, immediately before). Returns period metadata, summary totals, and an array of destination-level metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd date of the current period YYYY-MM-DD (ISO 8601)
fromYesStart date of the current period YYYY-MM-DD (ISO 8601)
sandboxNoFilter by environment: "true" for sandbox, "false" for production

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive behavior, so the bar is lower, yet the description adds real substance: the previous period is auto-derived (not supplied), and new/inactive destinations appear with previous_period:null or zeroed values with negative change. That edge-case disclosure is genuinely useful. It does not discuss pagination or row limits.

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?

Markdown headings keep it scannable and the Overview is front-loaded with the core concept. It is slightly padded - 'Quick Start' largely restates what the Overview and 'What You Get' already convey - but nothing is confusing.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden, and the 'What You Get' section enumerates period metadata, summary totals, and per-destination metrics including null handling. That is sufficient for correct invocation and interpretation; row caps and ordering are the only omissions.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema by stating that from/to define the current period and that the API derives the matching previous period, plus noting sandbox is a query parameter. This tells the agent why there is no previous-period argument.

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

Purpose4/5

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

States a specific verb and resource in the Overview ('Returns analytics on destinations') and defines the key scope: destination = hotel country, current vs previous equal-length period. It is clearly separable from siblings like get_bookings_hotels_sales_report or get_bookings_guest_nationality_report by its destination-country focus, though it never names those siblings explicitly.

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

Usage Guidelines4/5

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

The 'When to Use' section gives four concrete scenarios (destination performance, period comparison, geographic dashboards, inventory planning), which is strong context. It stops short of explicit when-not-to-use guidance or naming the alternative report tools an agent should pick instead.

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

get_data_chainsA
Read-onlyIdempotent
Inspect

Overview

Get all available hotel chains (e.g., Marriott, Hilton, IHG). Use chain IDs to filter hotel searches by brand.

When to Use

  • Chain filters - Filter hotels by chain/brand

  • Brand selection - Let users search for specific hotel chains

  • Reference data - Get chain IDs for use in search filters

What You Get

  • Chain list - All available hotel chains

  • Chain IDs - Numeric IDs for use in search filters

  • Chain names - Hotel chain/brand names

Quick Start

No parameters required. Returns all hotel chains with IDs. Use chain IDs in hotel search filters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare this a safe, idempotent, open-world read, so the description's burden is reduced. It usefully adds that no parameters are required, that the full chain list is returned with numeric IDs, and the intended downstream use of those IDs — behavior the annotations cannot express, and valuable since there is no 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.

Conciseness3/5

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

The markdown headers make it skimmable and the key line is front-loaded, but four sections restate the same single idea (returns all chains, IDs usable in filters) with heavy repetition. For a zero-parameter reference endpoint, roughly half the text is redundant.

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

Completeness4/5

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

With no output schema and no parameters, the description must carry the return-value burden, and it does — it enumerates chain list, IDs and names explicitly. Complete enough to call correctly; only the relationship to get_data_hoteltypes is left unaddressed.

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?

There are zero parameters, so the baseline is 4 per the rubric. The description reinforces this with 'No parameters required,' leaving no ambiguity that this is a no-argument listing call.

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 overview states a specific verb and resource — 'Get all available hotel chains' with concrete examples (Marriott, Hilton, IHG) — and ties it to chain filtering in hotel searches. It is clearly distinguishable from get_data_hotels/get_data_hotel_search, though it never explicitly differentiates itself from the near-neighbour get_data_hoteltypes, which an agent could plausibly confuse it with.

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 'When to Use' section gives three concrete scenarios (chain filters, brand selection, reference data), which is more than most sibling definitions offer. It stops short of exclusions or naming an alternative tool, so it is clear context without routing rules.

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

get_data_citiesA
Read-onlyIdempotent
Inspect

Overview

Get a list of all cities within a specific country. Perfect for building location dropdowns and city selection interfaces.

When to Use

  • City dropdowns - Populate city selection lists

  • Location filters - Filter hotels by city

  • Geographic data - Get city lists for specific countries

  • Form autocomplete - Build city autocomplete features

What You Get

  • City list - All cities in the specified country

  • City names - Formatted city names ready for display

Quick Start

Provide the countryCode in ISO-2 format (e.g., "US", "GB"). Returns all cities in that country. Use the Get Country List endpoint to get country codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNorequest timeout in seconds
countryCodeYesCountry code in iso-2 format (example: SG)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the safety profile is covered. The description adds the ISO-2 requirement and that all cities for a country are returned, but says nothing about rate limits, result size, ordering, or error behavior.

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

Conciseness3/5

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

Front-loaded and skimmable via headers, but the 'What You Get' bullets ('City list', 'City names') are redundant filler for a simple list endpoint, and the use-case bullets overlap heavily. Not wasteful enough to drop below 3, but not tight either.

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 one-required-parameter read-only list tool with full annotation coverage and no output schema, the description is largely sufficient: it names the input format and the companion endpoint. Missing only minor details like result ordering or volume.

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 both parameters are documented in the schema itself. The description reinforces ISO-2 format with examples ('US', 'GB') and points to the country-code endpoint, which is mildly useful but largely restates the schema.

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

Purpose5/5

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

States a specific verb and resource: 'Get a list of all cities within a specific country.' This clearly distinguishes it from siblings like get_data_countries or get_data_places, which cover different geographic resources.

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?

A dedicated 'When to Use' section gives concrete contexts (dropdowns, location filters, autocomplete) and the Quick Start explicitly routes to the country list endpoint to obtain countryCode. It lacks any 'when not to use' or sibling-alternative guidance, which keeps it from a 5.

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

get_data_countriesA
Read-onlyIdempotent
Inspect

Overview

Get a complete list of all countries available in the system with their ISO-2 country codes. Essential for building country selection interfaces.

When to Use

  • Country dropdowns - Populate country selection lists

  • Location filters - Filter hotels or searches by country

  • Form inputs - Build country selection forms

  • Reference data - Get country codes for use in other endpoints

What You Get

  • Country list - All available countries

  • ISO-2 codes - Standard country codes (e.g., "US", "GB", "FR")

  • Country names - Full country names

Quick Start

No parameters required. Returns all countries with their ISO-2 codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNorequest timeout in seconds

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds value the annotations cannot: it discloses the exact payload shape (all countries, ISO-2 codes, full names) and that no parameters are needed, which matters since there is no output schema. It stops short of mentioning caching, rate limits, or result size.

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?

It is well front-loaded with the Overview first, but for a trivial no-argument lookup the content is inflated into five markdown sections. 'What You Get' and 'Quick Start' restate the same facts (country list, ISO-2 codes, no parameters) already given in the Overview, so several sentences do not earn their 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 a simple read-only reference endpoint, the description covers purpose, use cases, returned fields, and the fact that no input is required. With annotations handling behavioral hints and no output schema to lean on, the description supplies nearly everything an agent needs; only caching/pagination-style operational details are absent, which is low impact here.

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% for the single optional 'timeout' parameter, so the schema fully documents it and the baseline of 3 applies. The description's 'No parameters required' is consistent with the zero-required-parameter reality but adds nothing the schema does not already convey.

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 states a specific verb and resource ('Get a complete list of all countries... with their ISO-2 country codes') and names the returned data precisely. It is clear what the tool does, but it never explicitly distinguishes itself from the many sibling reference-data tools (get_data_cities, get_data_currencies, get_data_languages), so an agent must infer the boundary from the resource name alone.

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 'When to Use' section gives four concrete scenarios (dropdowns, location filters, form inputs, reference data for other endpoints), which is solid context for an agent deciding when to reach for this tool. It offers no exclusions or named alternatives, so it stops short of the explicit when-not guidance that would warrant a 5.

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

get_data_currenciesA
Read-onlyIdempotent
Inspect

Overview

Get all available currencies with their codes, names, and the countries where each currency is used. Perfect for building currency selection interfaces.

When to Use

  • Currency dropdowns - Populate currency selection lists

  • Price display - Show prices in different currencies

  • Currency conversion - Get currency information for conversion

  • Reference data - Get currency codes for use in booking endpoints

What You Get

  • Currency list - All available currencies

  • Currency codes - ISO currency codes (e.g., "USD", "EUR", "GBP")

  • Currency names - Full currency names

  • Country mapping - Countries where each currency is used

Quick Start

No parameters required. Returns all currencies with codes, names, and country mappings.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNorequest timeout in seconds

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds that the call takes no required parameters and returns the full currency set, but omits pagination, caching, or list-size behavior — modest added value on top of rich annotations.

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

Conciseness2/5

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

The markdown-heavy format is bloated: the 'What You Get' bullets (currency list, codes, names, country mapping) simply restate the Overview sentence verbatim, and the Quick Start repeats it a third time. Front-loading is fine, but substantial space does not earn 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 a parameterless reference lookup with no output schema, the description usefully enumerates the returned fields (ISO codes, names, country mappings), which an agent could not otherwise infer. Nothing critical is missing, though list size and ordering are unspecified.

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?

Only one optional parameter (timeout) with 100% schema description coverage, so the schema already carries the burden. The description's 'No parameters required' is accurate about requiredness but adds no syntax or default guidance beyond what the schema provides.

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

Purpose4/5

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

States a specific verb and resource ('Get all available currencies') with the exact payload: codes, names, and country mappings. It is distinguishable from siblings like get_data_countries and get_data_languages by resource, though it never names an adjacent tool explicitly.

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 'When to Use' section gives four concrete scenarios (dropdowns, price display, conversion, reference data for booking endpoints), which is clear context for invocation. It stops short of explicit exclusions or named alternatives (e.g., 'use get_data_countries for country data'), so it is not a 5.

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

get_data_facilitiesA
Read-onlyIdempotent
Inspect

Overview

Get all available hotel facilities (amenities) with multi-language translations. Use these facility IDs to filter hotel searches by amenities.

When to Use

  • Facility filters - Build amenity filtering in hotel searches

  • Facility display - Show available facilities with translated names

  • Multi-language support - Display facilities in user's language

  • Reference data - Get facility IDs for use in search filters

What You Get

  • Facility list - All available hotel facilities

  • Facility IDs - Numeric IDs for use in search filters

  • Multi-language names - Facility names in multiple languages

  • Translations - Localized facility names

Quick Start

No parameters required. Returns all facilities with IDs and multi-language translations. Use facility IDs in hotel search filters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds that it returns the full facility set with multi-language names, but discloses no pagination behavior, response size, or caching/rate-limit traits beyond that. With annotations carrying the main burden, a 3 is appropriate.

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?

It is front-loaded with an Overview and Quick Start, but the 'What You Get' bullets are redundant: 'Facility names in multiple languages' and 'Localized facility names' say the same thing, and multi-language support is listed twice across sections. For a zero-parameter tool this is noticeably padded.

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

Completeness4/5

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

With no output schema, the description must describe the return, and it does (facility list, numeric IDs, multi-language names). For a trivial zero-param read-only reference lookup this is essentially complete, though it omits any indication of list size or ordering.

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

Parameters4/5

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

The tool takes zero parameters, so parameter semantics default to baseline 4. The description correctly reinforces 'No parameters required', matching the empty schema.

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 overview states a specific verb+resource: 'Get all available hotel facilities (amenities) with multi-language translations.' It immediately clarifies this is reference data distinct from the hotel/type/language lookups among its siblings. An agent knows exactly what resource it returns.

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 'When to Use' section gives four concrete use cases (facility filters, facility display, multi-language support, reference data). It provides clear context for invocation but names no alternatives or exclusions, so it stops short of the explicit when/when-not routing needed for a 5.

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

get_data_flights_airlinesA
Read-onlyIdempotent
Inspect

Overview

Retrieve a list of airlines with optional filtering by name, alliance, and active status.

When to Use

  • Airline directory - Build a searchable list of airlines for display or filtering

  • Alliance filtering - Filter airlines by alliance membership (Star Alliance, oneworld, SkyTeam)

  • Active airlines - Retrieve only currently operating airlines

What You Get

  • Full airline records including name, IATA/ICAO codes, country, alliance, and logo URL

  • Alliance membership for each airline

  • Active status to identify currently operating carriers

  • Filtered results based on query, alliance, and active status parameters

Quick Start

Call with no parameters to get all airlines. Use q to search by name, alliance to filter by alliance, and activeOnly=true to exclude inactive carriers.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch query (e.g., 'AA' or 'American')
limitNoMaximum number of results
allianceNoFilter by airline alliance
activeOnlyNoOnly return currently active airlines

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond that: what fields come back (name, IATA/ICAO, country, alliance, logo), that no parameters means 'all airlines', and how each filter narrows results. Pagination/limit default behavior is the one undisclosed trait.

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 headers are front-loaded and scannable, but a README-style structure with four sections is heavy for a four-parameter read-only list call. 'What You Get' largely restates the Overview's filter list, so several bullets do not earn their 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?

With no output schema in play, the description correctly compensates by enumerating returned fields and default behavior, and it explains every filter. The only real gap is result-size/limit semantics for a list endpoint that could return the full airline directory.

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 an enum and worked example ('AA' or 'American'), so the schema carries most parameter meaning. The description's added value is modest — it maps enum values to human-readable alliance names, which is helpful but not essential given the schema already enumerates them.

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 overview states a specific verb and resource ('Retrieve a list of airlines') with its filter dimensions, so an agent immediately knows what the tool returns. It does not, however, differentiate itself from the very close sibling get_data_flights_airlines_iatas / _iatacode, so the boundary must be inferred from names alone.

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?

A dedicated 'When to Use' section gives three concrete scenarios (directory listing, alliance filtering, active-only retrieval) and a Quick Start that tells the agent the no-parameter default. It never names or excludes the sibling airline IATA tools, so alternative-selection guidance is incomplete.

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

get_data_flights_airlines_iatasA
Read-onlyIdempotent
Inspect

Overview

Retrieve a lightweight list of airline IATA codes with names for autocomplete and lookup purposes.

When to Use

  • Autocomplete dropdowns - Populate airline search inputs with a minimal list

  • Client-side filtering - Download the full list once and filter locally

  • Code validation - Build a lookup table of valid airline codes

What You Get

  • IATA codes for all airlines in the database

  • Airline names paired with each code

  • Active filtering available via the activeOnly parameter

Quick Start

Call with no parameters to get all airline IATA codes and names. Use activeOnly=true to filter out inactive airlines.

ParametersJSON Schema
NameRequiredDescriptionDefault
activeOnlyNoOnly return currently active airlines

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safe-read profile is fully covered by structured data. The description adds only the activeOnly filter behavior and the 'lightweight' nature of the response; it says nothing about result size, ordering, or whether the list is paginated.

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?

Front-loaded and well-organized with headings, but the formatting is disproportionate to a one-parameter read tool. The Quick Start sentence largely repeats the Overview and What You Get sections, so several lines do not earn their 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?

With no output schema, the description carries the burden of describing returns, and the 'What You Get' section does name the two returned fields (IATA codes and names). It is adequate for a trivial list endpoint, though it omits response shape and size expectations.

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 single boolean parameter is already documented in the schema. The description restates the same semantics ('Use activeOnly=true to filter out inactive airlines') without adding format or edge-case detail, so it neither helps nor hurts beyond the baseline.

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 overview names a specific verb and resource: retrieve a lightweight list of airline IATA codes with names. The word 'lightweight' implicitly contrasts it with the heavier sibling get_data_flights_airlines, but that sibling is never named, so the agent must infer the distinction.

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?

A dedicated 'When to Use' section lists three concrete scenarios (autocomplete, client-side filtering, code validation), which is clear context. However, it never names an alternative tool or an exclusion condition, so routing among get_data_flights_airlines, get_data_iatacodes, and get_data_flights_airlines_iatas_iatacode is left to inference.

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

get_data_flights_airlines_iatas_iatacodeA
Read-onlyIdempotent
Inspect

Overview

Retrieve full details for a specific airline using its 2-letter IATA code.

When to Use

  • Airline display - Show airline name, logo, and alliance for a given IATA code

  • Flight result enrichment - Fetch airline details to display alongside search results

  • Data validation - Verify an airline code and retrieve its metadata

What You Get

  • Airline details including name, IATA/ICAO codes, and country

  • Alliance membership (Star Alliance, oneworld, SkyTeam, or Vanilla Alliance)

  • Logo URL for displaying the airline's logo in your UI

  • Active status indicating whether the airline is currently operating

Quick Start

Provide the 2-letter IATA code (e.g., AA for American Airlines) in the URL path.

ParametersJSON Schema
NameRequiredDescriptionDefault
iataCodeYes2-letter IATA airline code (e.g., AA)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description earns credit beyond that by enumerating the returned metadata (name, IATA/ICAO, country, alliance, logo URL, active status) — valuable given there is no 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.

Conciseness4/5

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

Markdown headers front-load the purpose and usage before the payload description. It is slightly heavier than needed for a one-parameter lookup, but each section (usage, return fields, quick start) carries information an agent would otherwise lack.

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

Completeness5/5

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

With no output schema, the 'What You Get' section correctly compensates by describing return fields, and the quick start shows the required path parameter. Nothing essential for calling or interpreting the result 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% and the single iataCode parameter is already documented as a 2-letter code with the 'AA' example. The description restates the same format guidance without adding syntax, validation, or lookup-failure semantics, so it is the expected baseline rather than an enhancement.

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

Purpose5/5

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

States a specific verb (Retrieve) and resource (full details for a specific airline) keyed on the 2-letter IATA code. The 'specific airline' phrasing implicitly separates it from the sibling list endpoint get_data_flights_airlines_iatas, which enumerates codes rather than fetching one.

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 'When to Use' block gives three concrete scenarios (airline display, flight result enrichment, code validation). It lacks any when-not guidance or explicit reference to the sibling list/detail tools, so an agent must infer that this is the single-record variant.

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

get_data_flights_airportsA
Read-onlyIdempotent
Inspect

Overview

Search for airports by name, city, or IATA code using a text query. Returns matching airports for use in autocomplete and search inputs.

When to Use

  • Airport autocomplete - Power origin/destination search inputs with type-ahead suggestions

  • Airport discovery - Find airports in a city or region by name

  • Search validation - Look up airports before constructing a flight search request

What You Get

  • Matching airports ranked by relevance to the query

  • IATA codes for legs[].origin and legs[].destination on POST /flights/rates

  • City and country details for display purposes

  • Geographic coordinates for map-based interfaces

Quick Start

Provide a q query string (minimum 2 characters) to search by airport name, city, or code. Returns matching airports ordered by relevance.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch query (minimum 2 characters, e.g., 'JFK' or 'New York')

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare this a safe, idempotent, open-world read, so the safety profile is covered. The description goes beyond them by disclosing that results are relevance-ranked and what fields come back (IATA code, city/country, coordinates), though it says nothing about empty-result behavior, rate limits, or pagination.

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

Conciseness4/5

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

Markdown headers make it scannable and the core instruction is front-loaded in the Overview and Quick Start. The 'What You Get' and 'When to Use' sections are somewhat padded for a one-parameter lookup, but each section carries usable information.

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

Completeness4/5

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

With no output schema, the description usefully describes the return contents and downstream usage (IATA codes feeding legs[].origin/destination), which is the right compensation. It omits result-limit and error handling details, but nothing critical to calling the tool correctly 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% for the single parameter, so the schema already documents the query string, its 2-character minimum, and examples. The description repeats the 2-character minimum and adds example formats, but adds no syntax or matching semantics beyond the schema – baseline 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 states a specific verb and resource: 'Search for airports by name, city, or IATA code using a text query.' Scope (returns matching airports for autocomplete/search) is clear. It stops short of explicitly distinguishing itself from close siblings like get_data_flights_airports_iatas or get_data_iatacodes, so an agent must infer the boundary.

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

Usage Guidelines4/5

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

A dedicated 'When to Use' section gives three concrete scenarios (autocomplete, discovery, pre-search validation), which is clear context for invocation. However, it never names an alternative tool or states when NOT to use this one, leaving the sibling-selection decision to inference.

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

get_data_flights_airports_iatasA
Read-onlyIdempotent
Inspect

Overview

Retrieve a lightweight list of airport IATA codes with names for autocomplete and lookup purposes.

When to Use

  • Autocomplete dropdowns - Populate airport search inputs with a full list of codes and names

  • Client-side filtering - Download the full list once and filter locally

  • Code validation - Build a lookup table of valid airport codes

What You Get

  • IATA codes for all airports in the database

  • Airport names paired with each code

  • Filtered results when the q query parameter is provided

Quick Start

Call with no parameters to get all airport codes and names. Use the q parameter to filter by name or code.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch query

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=true, so safety is covered. The description adds genuine context beyond that: the payload is 'lightweight', contains codes plus names, and is intended to be downloaded once and filtered client-side, implying no pagination. It still omits any statement about result size or rate limits for a full-table read.

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

Conciseness4/5

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

Front-loaded 'Overview' followed by clearly labelled sections; an agent can skim and act. There is mild redundancy (the code/name return content is restated in both 'What You Get' and 'Quick Start'), and the section scaffolding is heavy for a one-parameter tool.

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

Completeness3/5

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

With no output schema, the 'What You Get' section usefully compensates by naming the returned fields. However, it leaves the required-vs-optional parameter question ambiguous and says nothing about result volume or pagination for a full airport list, so an agent calling it correctly still has avoidable uncertainty.

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 does add meaning by explaining that `q` filters by name OR code, beyond the schema's bare 'Search query'. But it also states 'Call with no parameters to get all airport codes and names' while the schema marks `q` as required and additionalProperties=false, which could push an agent into an invalid call.

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

Purpose4/5

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

States a specific verb and resource: retrieve a lightweight list of airport IATA codes paired with names. An agent immediately knows this is a bulk code/name lookup. However, it never distinguishes itself from close siblings such as get_data_flights_airports, get_data_flights_airports_iatas_iatacode, or get_data_iatacodes, so the agent must infer the boundary.

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

Usage Guidelines4/5

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

The 'When to Use' section gives three concrete scenarios (autocomplete, client-side filtering, code validation), which is clear context beyond mere implied usage. It never states when NOT to use it or names an alternative sibling. The instruction 'Call with no parameters' conflicts with the required `q`, which undercuts the guidance at invocation time.

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

get_data_flights_airports_iatas_iatacodeA
Read-onlyIdempotent
Inspect

Overview

Retrieve detailed information for a specific airport using its 3-letter IATA code.

When to Use

  • Airport display - Show airport name, city, and country for a given IATA code

  • Flight result enrichment - Fetch airport details to display alongside origin/destination in search results

  • Autocomplete validation - Verify an airport code and retrieve its full details

What You Get

  • Airport details including name, city, country, and timezone

  • IATA and ICAO codes for the airport

  • Geographic coordinates (latitude and longitude)

  • Country and city information for display purposes

Quick Start

Provide the 3-letter IATA code (e.g., JFK for John F. Kennedy International) in the URL path.

ParametersJSON Schema
NameRequiredDescriptionDefault
iataCodeYes3-letter IATA airport code (e.g., JFK)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world, so the safety profile needs no repetition. The description adds genuinely non-structured context by enumerating the returned fields (name, city, country, timezone, IATA/ICAO, coordinates) in the absence of an output schema. It omits error behavior for an unknown code and any rate limits, keeping it from a 5.

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?

Structure is well front-loaded, but for a one-parameter lookup the four markdown sections are heavy and partly redundant: 'country and city' appears in both 'What You Get' and the following bullet, and 'Quick Start' repeats the schema's own example. Trimming one or two bullets would lose nothing.

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?

Purpose, usage scenarios, and returned fields are all covered for this simple read-only lookup, and annotations remove the need to explain safety. Only failure modes (unknown/invalid IATA code) are unaddressed, a minor gap for a tool this simple.

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 there is a single parameter, so the schema already documents iataCode fully. The description only restates the format and adds the JFK example (also in the schema) plus a note that it goes in the URL path, adding marginal value. 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?

States a specific verb (Retrieve) plus resource (detailed information for a specific airport) and the key (3-letter IATA code), which cleanly separates it from the sibling list endpoints get_data_flights_airports and get_data_flights_airports_iatas. An agent can pick between them without opening either schema.

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

Usage Guidelines4/5

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

The 'When to Use' section gives three concrete scenarios (display, flight-result enrichment, autocomplete validation), which is clear positive guidance. It stops short of an explicit when-not-to-use or naming the sibling list tool to use instead when you lack a code, so it is not a 5.

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

get_data_hotelB
Read-onlyIdempotent
Inspect

Overview

Get comprehensive details about a specific hotel including descriptions, amenities, images, location, and ratings. Perfect for displaying hotel detail pages.

When to Use

  • Hotel detail pages - Show complete hotel information

  • Booking pages - Display hotel details before booking

  • Hotel profiles - Build rich hotel information pages

  • Content display - Show descriptions, amenities, and images

What You Get

  • Complete hotel information - Name, address, description, and ratings

  • Amenities list - All available facilities and services

  • Image gallery - Hotel photos and images

  • Location details - Address, coordinates, and location information

  • Hotel metadata - Star rating, chain information, and classifications

Quick Start

Provide the hotelId as a query parameter. Returns complete hotel details including all metadata, amenities, and images.

ParametersJSON Schema
NameRequiredDescriptionDefault
hotelIdYesUnique ID of a hotel
timeoutNorequest timeout in seconds
languageNoThe language code, indicating in which language the results should be returned. e.g. 'fr'
advancedAccessibilityOnlyNoIf `true`, accessibility section will be returned

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, openWorld behavior, so the safety profile is covered. The description adds genuine value by enumerating the returned payload (amenities, images, location, ratings, chain/star metadata), which matters since no output schema exists. It does not mention error cases (e.g. unknown hotelId) or rate limits.

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

Conciseness2/5

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

The markdown scaffolding is heavy and much of it is redundant: 'What You Get' largely repeats the Overview's list of descriptions/amenities/images/location/ratings, and the four 'When to Use' bullets say essentially the same thing. The signal could be conveyed in a third of the text.

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

Completeness3/5

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

With no output schema, the description usefully compensates by listing returned fields, and it covers the required hotelId call path. However, it says nothing about the three optional parameters' effect (language, timeout, advancedAccessibilityOnly) or failure behavior, so it is adequate rather than 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 the schema already documents all four parameters including language, timeout, and advancedAccessibilityOnly. The description only references hotelId as a query parameter and adds no format or semantics beyond the schema, fitting 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 Overview states a specific verb+resource: 'Get comprehensive details about a specific hotel.' It clearly distinguishes a by-ID detail lookup from list/search siblings like get_data_hotels and get_data_hotel_search, but it never names those siblings explicitly, leaving the differentiation to inference.

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

Usage Guidelines3/5

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

The 'When to Use' section lists four scenarios, but they are near-identical restatements ('hotel detail pages', 'hotel profiles', 'content display') rather than decision criteria. No alternative tool is named and there is no 'when not to use' guidance, so usage is only implied.

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

get_data_hotel_askB
Read-onlyIdempotent
Inspect

Overview

Beta Feature - Ask natural language questions about a specific hotel and get AI-powered answers based on the hotel's information.

When to Use

  • Hotel Q&A - Answer customer questions about hotels

  • Information lookup - Get specific details about amenities, services, or features

  • Conversational interfaces - Build chat interfaces for hotel information

  • Detailed inquiries - Ask about specific aspects like restaurants, parking, or amenities

What You Get

  • AI-generated answers - Relevant responses to your questions

  • Hotel-specific information - Answers based on the hotel's actual data

  • Natural language responses - Human-readable answers

Example Questions

  • "What amenities does this hotel have?"

  • "Is there parking available?"

  • "What does a meal at the restaurant look like?"

Key Features

  • Web search option - Enable allowWebSearch to get additional information from the web

  • Hotel context - Answers are specific to the hotel you're asking about

  • Natural language - Ask questions conversationally

Quick Start

Provide the hotelId and your question. Optionally enable allowWebSearch for web-enhanced answers.

Note: This is a beta feature and may be subject to changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe question to ask about the hotel
hotelIdYesUnique ID of the hotel (liteAPI format)
allowWebSearchNoWhether to allow web search for additional information. Default is false.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered. The description adds genuinely new context (beta status subject to change, web-enhanced answers via allowWebSearch), but says nothing about answer reliability, latency, or failure modes for an AI-answer tool.

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

Conciseness2/5

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

The markdown-heavy structure is far longer than a 3-parameter read tool warrants, with heavy redundancy ('natural language' is asserted in the overview, what-you-get, and key-features sections). The core instruction is buried in the final 'Quick Start' section.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does so adequately (AI-generated natural-language answers grounded in hotel data), plus example questions clarify expected input. Coverage is good for a simple read-only tool, only lacking answer-quality 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 all three parameters are already documented, making 3 the baseline. The description only restates hotelId, the question, and allowWebSearch, and inconsistently refers to the question as `question` while the schema names it `query`, adding mild ambiguity rather than meaning.

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 overview states a specific verb and resource: ask natural-language questions about a specific hotel and receive AI-generated answers. This is clearly distinguishable from data-listing siblings like get_data_hotel or get_data_hotels, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

The 'When to Use' section lists four scenarios (Q&A, information lookup, chat interfaces, detailed inquiries), which implies usage context. However, these are largely restatements of the same idea and there is no guidance on when to prefer this tool over get_data_hotel or get_data_hotel_search, and no exclusions.

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

get_data_hotelsB
Read-onlyIdempotent
Inspect

Overview

Search and retrieve hotel listings based on various criteria. Get hotel metadata including names, addresses, ratings, amenities, and images for display in your application.

When to Use

  • Hotel listings - Display hotel search results

  • Location-based search - Find hotels by city, coordinates, or Place ID

  • Hotel discovery - Browse hotels in specific areas

  • Metadata retrieval - Get hotel information for display

What You Get

  • Hotel list - Matching hotels with complete metadata

  • Basic information - Names, addresses, ratings, and locations

  • Amenities - Available facilities and features

  • Images - Hotel photos for display

  • Identifiers - Hotel IDs for use in rate searches

Search Options

  • By city - Search hotels in a specific city

  • By coordinates - Find hotels near latitude/longitude with radius

  • By Place ID - Get hotels within a specific place boundary

  • By hotel IDs - Retrieve specific hotels by their IDs

Quick Start

Provide search criteria (city, coordinates+radius, placeId, or hotelIds). Returns matching hotels with complete metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNoZIP code of the location
limitNoSpecifies the maximum number of results to return. By default, this is set to 200, even if not explicitly defined. If a higher limit is specified, the maximum allowed is 5000 results
offsetNoSpecifies the number of rows to skip before starting to return rows
radiusNoradius in meters (min 1000m)
placeIdNoUnique ID of a place retrieved from the `/data/places` endpoint. When provided, the API fetches place details and searches for hotels within a 1km radius of the place location center, or a specific hotel when the placeId refers to a property. The response includes a `place` object containing the place information used in the search.
timeoutNorequest timeout in seconds
aiSearchNoSearch term for AI search. Uses semantic search to find hotels matching the query intent. Examples: 'Romantic getaway with Italian vibes in London near the London Eye', 'Hotels near the Eiffel tower'
chainIdsNoComma-separated list of hotel chain ids. e.g. '14675,14677'
cityNameNoName of the city
hotelIdsNoComma-separated list of hotel IDs (e.g., 'lp1897,lp1343') to fetch specific hotels by their IDs. This is a valid main query parameter that can be used instead of other search criteria.
languageNoThe language code, indicating in which language the results should be returned. e.g. 'fr'
latitudeNoLatitude geo coordinates
hotelNameNoName of the hotel (loose match, case-insensitive, e.g. 'hilton')
longitudeNoLongitude geo coordinates
minRatingNoMinimum rating of the hotel. e.g. 8.6
starRatingNoComma-separated list of star ratings. Note: star ratings have 2 allowed decimals '.0' and '.5' from 1 to 5. e.g. '3.5,4.0,5.0'
countryCodeNoCountry code ISO-2 code - example (SG)
facilityIdsNoComma-separated list of facilities. e.g. '1,2,3'
hotelTypeIdsNoComma-separated list of hotel types. e.g. '201,204,208'
lastUpdatedAtNoRetrieve only the hotels that have been updated since the provided date and time (using the RFC3339 format)
minReviewsCountNoMinimum number of reviews. e.g. 100
advancedAccessibilityOnlyNoIf `true`, only hotels with advanced accessibility will be returned
strictFacilitiesFilteringNoIf `true`, only hotels with all the specified facilities will be returned

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds that results are metadata-only (names, addresses, ratings, amenities, images, IDs) and notes hotel IDs feed rate searches, but says nothing about pagination behavior or result-size constraints beyond what the schema already documents.

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 markdown structure is scannable, but there is heavy redundancy: 'Hotel listings', 'Metadata retrieval', 'complete metadata', and 'matching hotels with complete metadata' repeat the same point across Overview, When to Use, What You Get, and Quick Start. The content could be roughly halved without losing information.

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

Completeness3/5

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

For a 23-parameter, zero-required search tool with no output schema, the description correctly signals that a search criterion must be supplied and sketches the return shape. However, it does not warn about the maximum limit, the default 200-result cap, or mutual exclusivity between criteria, leaving gaps an agent would hit in practice.

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 one of the 23 parameters is already documented in the schema, including limit/offset defaults, radius minimum, and placeId semantics. The description's high-level 'Search Options' map adds no syntax or format detail beyond that, so the baseline 3 applies.

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

Purpose4/5

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

The overview states a specific verb+resource ('Search and retrieve hotel listings') and enumerates the returned metadata. It is clear on its own, but it never names or differentiates itself from close siblings like get_data_hotel_search, get_data_hotels_semantic_search, or get_data_hotel, so an agent must guess which hotel-lookup tool to call.

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

Usage Guidelines3/5

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

The 'When to Use' and 'Search Options' sections restate the same idea (search by city, coords, placeId, hotelIds) four different ways rather than giving conditions that select this tool over alternatives. No exclusions or sibling routing is provided, so usage is only implied.

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

get_data_hoteltypesB
Read-onlyIdempotent
Inspect

Overview

Get all available hotel type classifications (e.g., resort, boutique, business hotel). Use type IDs to filter hotel searches.

When to Use

  • Type filters - Filter hotels by type in search

  • Type display - Show hotel type classifications

  • Reference data - Get hotel type IDs for filtering

What You Get

  • Hotel type list - All available hotel types

  • Type IDs - Numeric IDs for use in search filters

  • Type names - Hotel type classifications

Quick Start

No parameters required. Returns all hotel types with IDs. Use type IDs in hotel search filters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, covering the safety profile. The description adds useful context that it takes no parameters and returns all types with numeric IDs. With annotations carrying the behavioral load, this is adequate but not rich.

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

Conciseness2/5

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

Four markdown sections (Overview, When to Use, What You Get, Quick Start) are used to convey one simple fact: this returns all hotel type IDs with no input. 'When to Use' and 'What You Get' substantially overlap, and the Quick Start repeats the same claim again.

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 no-parameter reference-data lookup with no output schema, the description tells the agent what it returns (type IDs and names) and how to use them. Nothing critical is missing, though the repetition dilutes signal.

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 baseline is 4. The description correctly notes 'No parameters required,' which is all that is needed for an empty 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?

States a specific verb+resource: retrieving all hotel type classifications (resort, boutique, business hotel). The resource is clearly distinct from sibling reference-data tools like get_data_hotel, get_data_facilities, and get_data_chains, though it never explicitly contrasts itself with them.

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

Usage Guidelines3/5

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

The 'When to Use' section lists contexts (type filters, type display, reference data), but these three bullets essentially restate the same idea (get IDs to use in search filtering). No exclusions, prerequisites, or named alternative tools are given.

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

get_data_iatacodesB
Read-onlyIdempotent
Inspect

Overview

Get IATA (International Air Transport Association) airport codes with airport names, coordinates, and country information. Useful for airport-based hotel searches.

When to Use

  • Airport searches - Find hotels near airports

  • Location selection - Let users search by airport codes

  • Geographic data - Get airport locations and coordinates

  • Reference data - Get IATA codes for use in hotel searches

What You Get

  • Airport list - All available airports with IATA codes

  • Airport names - Full airport names

  • Coordinates - Latitude and longitude for each airport

  • Country codes - ISO-2 country codes for each airport

Quick Start

No parameters required. Returns all airports with IATA codes, names, coordinates, and country information.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNorequest timeout in seconds

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds that no parameters are needed and that the entire airport set is returned, but says nothing about response size, pagination, or caching — modest added value 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.

Conciseness2/5

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

Four markdown sections for a zero-required-parameter lookup. The 'What You Get' bullets restate the Overview (coordinates, country codes, names) and the fourth 'When to Use' bullet duplicates the first, so a substantial portion of the text is redundant rather than earning 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 a simple enum-style reference endpoint with no output schema, the description adequately conveys the returned fields (codes, names, coordinates, ISO-2 country codes) and that no input is needed. The one unresolved item is how it relates to its near-twin sibling, which matters for correct selection.

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

Parameters3/5

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

There is a single optional timeout parameter with 100% schema description coverage, so the schema already documents it. The description says only 'No parameters required', which is consistent with required=0 but adds no semantics beyond the structured field; baseline 3 applies.

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

Purpose4/5

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

The Overview gives a specific verb and resource — fetch IATA airport codes with names, coordinates, and country data — and the 'What You Get' section enumerates the payload. However, it never distinguishes itself from the near-identical sibling get_data_flights_airports_iatas, so an agent cannot tell the two apart from the description alone.

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

Usage Guidelines3/5

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

The 'When to Use' bullets give context (airport searches, location selection, reference data), but they are generic use-case restatements rather than routing rules. With a sibling like get_data_flights_airports_iatas doing essentially the same job, the absence of any when-not or alternative guidance is a meaningful gap.

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

get_data_languagesA
Read-onlyIdempotent
Inspect

Overview

Get all supported languages for hotel translations and content localization. Use language codes to request hotel data in specific languages.

When to Use

  • Language selection - Display available languages to users

  • Content localization - Get language codes for API requests

  • Multi-language support - Build language switchers in your application

  • Reference data - Validate language codes before making requests

What You Get

  • Language list - All supported and enabled languages

  • Language codes - ISO 639-1 codes (e.g., 'en', 'es', 'fr')

  • Language names - Human-readable language names in English

Quick Start

No parameters required. Returns all supported languages with codes and names. Use language codes in hotel search and detail requests.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds useful behavioral detail beyond that: no parameters are required and the result is the set of supported *and enabled* languages, implying the list is dynamic. It does not mention auth requirements, but for a public reference lookup that is minor.

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?

Front-loaded and well-sectioned, but the markdown scaffolding is heavy for a zero-argument reference lookup, and the idea that language codes feed into hotel search/detail requests is stated twice (Overview and Quick Start). It is readable but not maximally economical.

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 parameterless read-only reference tool with full annotation coverage and no output schema, the description supplies everything needed: what it returns (codes and names), when to use it, and that no input is required. 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?

There are zero parameters, which sets the baseline at 4. The description confirms 'No parameters required' and the schema is an empty object, so there is no ambiguity to resolve and nothing further the description could add.

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

Purpose4/5

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

States a specific verb and resource: 'Get all supported languages for hotel translations and content localization', and the 'What You Get' section pins down the return content (ISO 639-1 codes, English names). It does not explicitly differentiate itself from the many sibling reference tools like get_data_countries or get_data_currencies, but the resource is unmistakably distinct.

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 'When to Use' block gives four concrete scenarios (language switchers, localization requests, reference validation, displaying options), which is clear context for invocation. It offers no exclusions or alternative-tool routing, 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.

get_data_placesA
Read-onlyIdempotent
Inspect

Overview

Search for places, locations, and areas using Google Places API. Returns a list of matching places that can be used to search for hotels within specific boundaries.

Pricing: $0.01 per request

When to Use

  • Location autocomplete - Build location search with autocomplete suggestions

  • Place selection - Let users select cities, airports, or areas

  • Hotel search boundaries - Get Place IDs to restrict hotel searches to specific regions

  • Location discovery - Find places by name or description

What You Get

  • Place list - Multiple matching places with details

  • Place IDs - Unique identifiers for use in hotel searches

  • Location information - Names, addresses, and location types

  • Formatted addresses - Human-readable addresses for display

Key Features

  • Multiple types - Search for cities, airports, hotels, or other place types

  • Type filtering - Specify place types (e.g., 'locality,airport,hotel')

  • Smart defaults - Automatically excludes less relevant types unless specified

  • Relevance ordering - Results sorted by relevance using Google's ranking

Quick Start

Provide a textQuery (e.g., "Manhattan") and optionally specify type to filter results. Returns matching places with Place IDs you can use in hotel searches.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoRestricts the results to places matching the specified type(s). You can specify a single type (e.g., 'hotel') or multiple types as a comma-separated list (e.g., 'locality,airport,hotel'). Common types include: 'locality' (cities), 'airport', 'hotel', 'lodging', 'establishment', 'point_of_interest'. When multiple types are provided, results from all types are merged and ordered by relevance.
clientIPNoThe IP address of the client making the request.
languageNoThe language code, indicating in which language the results should be returned. e.g. 'en'
sessionIdNoOptional Google Places billing session ID. When provided, this autocomplete call is bundled into a session settled by a subsequent place details call, reducing billing costs. Can also be passed via the X-Places-Session-Id header (header takes priority). If omitted, the server manages a fallback session automatically.
textQueryYesSearch query. e.g. 'Manhattan'

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context beyond the annotations: per-request pricing ($0.01), relevance ordering via Google's ranking, and smart defaults that exclude less relevant place types unless specified.

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?

Headers make it scannable and front-loaded, but the five-section layout is padded — 'What You Get' and 'Key Features' partly restate each other, and the Quick Start repeats the Overview. It is serviceable but not tight; several bullets could be dropped without losing information.

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

Completeness4/5

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

With no output schema, the description usefully compensates by describing return contents (place list, Place IDs, addresses, location types). It covers purpose, pricing, usage, and returns, leaving only minor gaps such as result limits/pagination behavior.

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 schema already documents textQuery, type, language, clientIP and sessionId in detail, so the baseline is 3. The description only echoes the textQuery example and the comma-separated type syntax; its one real addition is the 'smart defaults' note about type exclusion, which is marginal 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 names a specific verb and resource ('Search for places, locations, and areas using Google Places API') and states the return type (a list of matching places). It implicitly distinguishes itself from get_data_places_placeid (detail lookup by ID) by emphasizing list search and Place ID retrieval, though it never names that sibling explicitly.

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 'When to Use' section gives four concrete scenarios (autocomplete, place selection, hotel-search boundaries, location discovery), which is clear contextual guidance. It stops short of 5 because no alternatives or exclusions are named — it never says when to prefer get_data_cities or get_data_places_placeid instead.

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

get_data_places_placeidA
Read-onlyIdempotent
Inspect

Overview

Get detailed information about a specific place using its Place ID. Returns complete place details including boundaries and location information.

Pricing: $0.01 per request

When to Use

  • Place details - Get full information about a selected place

  • Boundary information - Retrieve place boundaries for hotel searches

  • Location verification - Verify place details before using in searches

  • Display information - Show place names and addresses to users

What You Get

  • Complete place details - Full information about the place

  • Boundary data - Geographic boundaries for the place

  • Location information - Coordinates, address, and display name

  • Place metadata - Types, formatted address, and language

Quick Start

Provide the placeId in the URL path. Returns complete details for that specific place.

ParametersJSON Schema
NameRequiredDescriptionDefault
placeIdYesUnique identifier of the place to retrieve.
languageNoThe language code, indicating in which language the results should be returned. e.g. 'en'
sessionIdNoOptional Google Places billing session ID. Pass the same value used in the preceding autocomplete calls to settle the billing session, making those autocomplete calls free. Can also be passed via the X-Places-Session-Id header (header takes priority).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds real value beyond that with per-request pricing ($0.01) and an inventory of returned data (boundaries, coordinates, metadata), which the annotations do not convey.

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

Conciseness4/5

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

Markdown headers front-load the purpose and the pricing/session notes are easy to find. There is mild redundancy between 'Overview' and 'What You Get' (both repeat 'complete place details'), but structure is otherwise efficient.

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

Completeness4/5

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

With no output schema, the description usefully enumerates return contents and states the pricing model, and annotations cover the safety profile. It is nearly complete, with the only gap being no note on error behavior for an invalid Place ID.

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 placeId, language and sessionId are already documented in the schema. The description only restates that placeId goes in the URL path and adds nothing on the language or sessionId parameters, so the baseline 3 applies.

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

Purpose4/5

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

The opening sentence gives a specific verb and resource (get detailed information about a specific place via Place ID) and the parenthetical 'using its Place ID' implies the singular-lookup distinction from the sibling get_data_places list tool. However, it never names a sibling explicitly, so it stops short of the 5-level differentiation.

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 'When to Use' section gives four concrete scenarios (place details, boundary info, verification, display), which is clear actionable context. It does not name an alternative tool or state when this should NOT be used instead of get_data_places/search, so it misses the exclusion half 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_data_reviewsA
Read-onlyIdempotent
Inspect

Overview

Retrieve guest reviews and ratings for a specific hotel. Display authentic feedback from previous guests to help users make informed booking decisions.

When to Use

  • Review display - Show guest reviews on hotel detail pages

  • Rating aggregation - Display average ratings and review counts

  • Trust building - Show authentic guest feedback

  • Decision support - Help users evaluate hotels before booking

What You Get

  • Guest reviews - Individual review text and ratings

  • Review dates - When each review was written

  • Ratings - Numerical and textual ratings

  • Guest feedback - Detailed comments from previous guests

Quick Start

Provide the hotelId as a query parameter. Returns all reviews for that hotel with ratings and comments.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoSpecifies the maximum number of results to return. By default, this is set to 200, even if not explicitly defined. If a higher limit is specified, the maximum allowed is 5000 results
offsetNoSpecifies the number of reviews to skip, defaults to 0
hotelIdYesUnique ID of a hotel
timeoutNorequest timeout in seconds
languageNoISO 639-1 language code (e.g., 'fr', 'es', 'de') to translate reviews using AI. If not provided, the reviews will be returned in the default language (en). When this parameter is provided, the maximum number of reviews returned is 10.
getSentimentNoIf set to true, an AI sentiment analysis of the last 1000 reviews will be returned

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the agent knows this is a safe, idempotent read. The description adds that reviews are 'authentic feedback' but doesn't cover rate limits, authentication, or the special behavior when language or getSentiment parameters are used (e.g., max 10 reviews with translation, sentiment analysis on last 1000). With annotations covering safety, this is adequate but missing key behavioral nuances.

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 description is long and formatted with markdown headers, but much of the content (e.g., 'What You Get' list) repeats the same concept (ratings, reviews, comments) without adding new information. It is not front-loaded with the most critical invocation details; key parameter behaviors are buried in schema. Structure is clear but not maximally efficient.

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

Completeness3/5

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

For a read-only tool with no output schema and full schema coverage, the description covers the basic purpose but misses important behavioral aspects: the limit default of 200, maximum of 5000, the special constraint that language parameter caps results at 10, and the getSentiment behavior. These are critical for correct invocation and are not mentioned in the description. The description is adequate but leaves 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?

Schema description coverage is 100%, so all parameters are documented in the schema. The description only mentions hotelId as a query parameter and doesn't add meaning beyond what the schema provides. Baseline 3 is appropriate when schema does 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?

States a specific verb (retrieve) and resource (guest reviews and ratings for a hotel). Clearly distinguishes from sibling tools like getExperienceTourReviews or get_data_hotel by naming the hotel guest review focus. An agent can identify this tool without ambiguity.

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?

Provides clear usage contexts (review display, rating aggregation, trust building, decision support) but does not explicitly name alternatives like getExperienceTourReviews or exclude when not to use this tool. The guidance is helpful but not exhaustive.

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

get_data_weatherA
Read-onlyIdempotent
Inspect

Overview

Get weather forecasts for specific locations. Response structure adapts based on the forecast time range (short-term vs. long-term).

When to Use

  • Travel planning - Show weather forecasts for destinations

  • Hotel pages - Display weather information on hotel detail pages

  • Trip preparation - Help users plan for weather conditions

  • Destination information - Provide weather context for locations

What You Get

  • Weather forecasts - Temperature, humidity, wind, precipitation

  • Time-based structure - Different formats for short-term (<1 week) vs. long-term forecasts

  • Detailed data - Atmospheric pressure, conditions, and summaries

  • Date-specific - Weather data for specific dates

Key Features

  • Adaptive structure - Response format changes based on time range

  • Short-term - Detailed hourly/daily data for forecasts within one week

  • Long-term - Daily summaries for forecasts beyond one week

  • Accuracy note - Forecasts beyond one week have reduced accuracy

Quick Start

Provide location coordinates (latitude, longitude) and date range. Returns weather forecasts with appropriate detail level.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitsNoUnits of measurement. Default is metric.
endDateYesEnd date in YYYY-MM-DD format. The service can provide future forecasts, but reliability significantly decreases beyond one week.
latitudeYesLatitude of the location.
longitudeYesLongitude of the location.
startDateYesStart date in YYYY-MM-DD format. The service can provide future forecasts, but reliability significantly decreases beyond one week.

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish the safety profile (readOnly, idempotent, openWorld, non-destructive), so the description only needs to add behavioral context — and it does: the response structure adapts to the time range, and accuracy degrades significantly beyond one week. That accuracy caveat is genuinely useful operational information not carried by annotations.

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?

Front-loaded and organized with headers, but it is padded: the adaptive short-term/long-term structure is stated three times (Overview, What You Get, Key Features) and the 'What You Get' bullets overlap heavily. Several sentences do not earn their place against the schema's own descriptions.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing returns, and it does so (temperature, humidity, wind, precipitation, pressure, conditions, summaries) plus the accuracy caveat. Coverage is solid; only pagination/response-size behavior is unaddressed, which is minor for a forecast read.

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 latitude, longitude, startDate, endDate, and the units enum are all fully documented in the schema. The description merely restates coordinates and date range without adding format, boundary, or unit-selection meaning, so the baseline 3 applies.

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

Purpose5/5

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

Opens with a specific verb+resource ('Get weather forecasts for specific locations') and immediately scopes it by response-shape behavior (short-term vs long-term). No sibling tool covers weather, so no differentiation is required, and the intent is 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 'When to Use' section enumerates concrete invocation contexts (travel planning, hotel pages, trip preparation, destination info), which tells the agent what requests should trigger it. However, it names no alternatives and gives no exclusions, so it stops short of full when/when-not guidance.

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

getExperienceBookingA
Read-onlyIdempotent
Inspect

Poll booking status while pending confirmation or retrieve voucher after webhook confirms.

Public response omits providerPayment (provider retail/invoice).

ParametersJSON Schema
NameRequiredDescriptionDefault
bookingIdYesDispatcher booking ID returned from POST /experiences/bookings

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive). The description adds real behavioral context beyond them: it explains the polling-vs-webhook lifecycle and that the public response omits the providerPayment field. That is useful disclosure the annotations cannot convey.

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

Conciseness5/5

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

Two short sentences, front-loaded with the primary action, no filler. Every clause carries information about when to call it or what the response contains.

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?

There is no output schema, so the description carries the burden of hinting at returns, which it does by mentioning the voucher and the omitted providerPayment field. Combined with the lifecycle guidance, this is close to complete for a single-parameter read tool, with only the exact response shape left implicit.

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 single bookingId parameter is already documented as the dispatcher booking ID from POST /experiences/bookings. The description adds no parameter-level detail, so the baseline of 3 applies.

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

Purpose4/5

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

The description uses a specific verb+resource: poll booking status for an experience booking, or retrieve the voucher once confirmed. It clearly identifies the resource (experience booking) and its two operational modes. It stops short of naming a sibling it is not, e.g. getExperienceTour, so it lands at 4 rather than 5.

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

Usage Guidelines4/5

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

It states the two conditions under which the tool is used: while the booking is pending confirmation (poll) and after the webhook confirms (retrieve voucher). That is clear usage context. It does not explicitly name an alternative tool or an exclusion, so it does not reach 5.

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

getExperienceTourA
Read-onlyIdempotent
Inspect

Overview

Retrieve full details for a specific tour, including description, media, inclusions, pricing context, and structured itineraries when available.

When to Use

  • Product pages - Display a tour detail view before the user selects dates

  • Comparison - Show full metadata when comparing activities

  • Content enrichment - Fetch descriptions and images for marketing surfaces

What You Get

  • Complete tour profile - Title, description, duration, and highlights

  • Media - Images and cover assets

  • Practical info - Meeting points, cancellation policy, and inclusions

  • Structured itineraries - Ordered days/items (itineraries) when the provider supplies them. locations are importance-ordered tags, not itinerary order.

  • Localized pricing - Prices in the requested currency

Quick Start

Provide the tour id in the URL path plus required language and currency query parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world, non-destructive behavior. The description adds meaningful return-shape context: structured itineraries appear only when the provider supplies them, locations are importance-ordered rather than itinerary order, and pricing is localized. It does not cover auth, rate limits, or pagination, keeping it below a 5.

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 markdown structure is front-loaded with an overview and scannable sections. It is somewhat longer than strictly necessary, but each section contributes useful context and there is no filler.

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

Completeness4/5

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

With no output schema, the description carries the burden of explaining return values and does so across tour profile, media, practical info, itineraries, and pricing. It also covers usage and quick-start parameter guidance. Missing only edge-case or error behavior for a full 5.

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 properties, so the baseline for no parameters is 4. The description usefully adds that the tour id goes in the URL path and that language and currency are required query parameters, though it provides no format constraints for those values.

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

Purpose5/5

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

States a specific verb and resource: retrieve full details for a specific tour. It enumerates the returned content (description, media, inclusions, pricing context, itineraries) and distinguishes the tool from search/availability siblings by framing it as the detail view before date selection.

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 'When to Use' section gives clear scenarios: product pages, comparison, content enrichment. It does not explicitly name when to avoid it or point to alternatives such as searchExperienceTours or getExperienceTourAvailability, but the intended context is well communicated.

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

getExperienceTourAvailabilityA
Read-onlyIdempotent
Inspect

Overview

Retrieve available dates and time slots for a specific tour so users can pick when to attend.

When to Use

  • Date pickers - Populate a calendar or slot selector on the tour page

  • Availability checks - Confirm a tour runs on the user's travel dates

  • Booking flow - Gate the checkout path until a valid slot is selected

What You Get

  • Available dates - Days the tour can be booked

  • Time slots - Start times per date where applicable

  • Capacity hints - Whether slots are still bookable

Quick Start

Provide the tour id in the URL path and the required language query parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description usefully adds the return shape (dates, time slots, capacity hints), but says nothing about auth needs, rate limits, or pagination—the kind of context that would lift it above the annotation baseline.

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?

Markdown headings make it skimmable and the purpose is front-loaded in the Overview. It is somewhat more formatted than a zero-parameter read tool needs, but no sentence is wasted.

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

Completeness4/5

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

With no output schema, the description appropriately carries the burden of explaining the return (available dates, slots, capacity hints). It is nearly complete; the one gap is the undocumented relationship between the referenced id/language inputs and the empty 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?

With zero declared parameters the baseline would be 4, but the description asserts a tour 'id' path parameter and a 'required language query parameter' that the input schema (empty properties) does not declare. This mismatch between prose and schema makes the parameter story ambiguous rather than illuminating.

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 Overview states a specific verb and resource: retrieve available dates and time slots for a specific tour. It's clear what the tool returns. It doesn't explicitly differentiate itself from nearby siblings like getExperienceTourBookingOptions or getExperienceTour, which is the only thing keeping it from a 5.

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

Usage Guidelines4/5

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

The 'When to Use' section gives three concrete scenarios (date pickers, availability checks, booking-flow gating), which is strong context. However, it names no alternatives and gives no 'when not to use' exclusions, so an agent must infer which sibling to prefer when booking options overlap.

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

getExperienceTourBookingOptionsAInspect

Overview

Resolve priced booking options, time slots, and required guest inputs for a selected tour date and participant mix.

When to Use

  • Option/slot pickers - Show available variants and start times for a date

  • Live pricing - Display authoritative slot sell totals (pricing.totals.net / priceSummary.netPrice)

  • Checkout forms - Collect bookingQuestionSchema before proceeding to payment

What You Get

  • Booking options - optionId, title, and bookingQuestionSchema

  • Time slots - dateTime, isAvailable, and slot-level pricing (unitNet / totalNet / totals.net / priceSummary.netPrice, plus totals.commission when markup applies)

  • Participant mapping - Uses ticketCategory keys from availability (e.g. adult, child)

Money semantics

Field names keep *Net from experiences-api; dispatcher marks commercial net up in place to partner sell. Use slots[].pricing.totals.net as selection.price.amount on prebook.

Quick Start

POST a body with language, currency, date (YYYY-MM-DD), and participants to /experiences/tours/{id}/booking-options. Use slot pricing.totals.net for display and checkout handoff.

Option-level price

options[].price.amount is overwritten from the lowest available slot pricing.totals.net for the requested mix (after markup). It is not the GYG catalog from-price. Checkout still uses the chosen slot pricing.totals.net.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoDispatcher-standard envelope. Mirrors the normalized experiences-api payload: an object for single-resource responses (e.g. tour detail, availability) or an array when the provider returns a JSON array.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, openWorldHint=true, and idempotentHint=false, so safety profile is partly covered. The description adds real context beyond that: dispatcher net-to-sell markup applied in place, that `options[].price.amount` is overwritten from the lowest available slot, and an explicit warning that this is not the GYG catalog from-price. It does not cover auth needs, error behavior, or throughput limits, so it stops short of a 5.

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?

Headings (Overview, When to Use, What You Get, Money semantics, Quick Start) front-load the key facts and make it scannable. It is longer than necessary — pricing field paths (`totals.net` / `priceSummary.netPrice`) are repeated in three separate sections — but no section is 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?

There is no output schema, and the description compensates well by enumerating returned fields (optionId, title, bookingQuestionSchema, dateTime, isAvailable, slot-level pricing, commission) and their interpretation. What is left unresolved is the mismatch between the documented request body and the envelope-only input schema, plus any required-parameter or failure semantics.

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 exposes only an opaque `data` envelope (100% coverage, 0 required), so the schema alone tells an agent nothing about the real payload. The description compensates by specifying the POST body contents (`language`, `currency`, `date` as YYYY-MM-DD, `participants`) and how participants map to `ticketCategory` keys. The residual gap is that it never reconciles these fields with the single `data` wrapper property.

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 Overview states a specific verb and resource — 'Resolve priced booking options, time slots, and required guest inputs for a selected tour date and participant mix' — with the scope (date + participant mix) named explicitly. It is clearly distinguishable from sibling tools like searchExperienceTours (catalog discovery) and getExperienceTourAvailability (availability without pricing/options).

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 'When to Use' section names three concrete scenarios (option/slot pickers, live pricing display, checkout form collection) and the 'Quick Start' names the exact endpoint and body fields. It also routes downstream to prebook via `selection.price.amount`, so the agent knows both when to call it and what comes next.

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

getExperienceTourReviewsA
Read-onlyIdempotent
Inspect

Overview

Retrieve normalized guest reviews and ratings for a specific tour.

When to Use

  • Review sections - Display guest feedback on tour detail pages

  • Trust building - Show authentic ratings before booking

  • Decision support - Help users evaluate tours before selecting dates

What You Get

  • Guest reviews - Review text, ratings, and dates

  • Pagination - limit and offset query parameters

  • Localized content - Reviews in the requested language where available

Quick Start

Provide the tour id in the URL path plus required language and currency query parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: pagination via limit/offset and language-localized content. It stops short of stating auth requirements, rate limits, or what happens when a review has no localized version.

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?

Content is modest and the purpose is front-loaded under an Overview header, which is good. The markdown scaffolding (four headers for roughly six lines of substance) adds a little overhead, and the 'What You Get' section partly duplicates the Overview, but nothing is truly wasted.

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

Completeness4/5

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

With no output schema and an empty input schema, the description must describe both inputs and returns, and it does: review text/ratings/dates, pagination, and localization. Gaps remain around error behavior, authentication, and edge cases, but for a straightforward read tool the coverage is nearly sufficient.

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 is empty (0 properties), so the description carries the full parameter burden and does so usefully by naming the path id plus required language and currency query parameters, and the limit/offset pagination pair. That is real added value, though it does not give formats, defaults, or valid ranges, and it is inconsistent with the schema it accompanies.

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 Overview states a specific verb and resource: 'Retrieve normalized guest reviews and ratings for a specific tour.' An agent immediately knows this returns review data scoped to one tour. It does not, however, distinguish itself from the similarly-named sibling get_data_reviews or explain the boundary with searchExperienceTours and getExperienceTour.

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

Usage Guidelines3/5

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

The 'When to Use' section gives three contexts (review sections, trust building, decision support), but these are product-display scenarios rather than agent decision criteria. There is no explicit when-not-to-use and no named alternative tool, so selection guidance remains implied rather than actionable.

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

getFlightPrebookA
Read-onlyIdempotent
Inspect

Overview

Retrieve an existing flight checkout session (prebook) by ID, including any ancillary services already attached and a live catalog of remaining attachable services.

When to Use

  • Resume checkout — Reload prebook state after the user navigates away

  • Confirm attached ancillaries — Show selected seats/bags before final book

  • Reuse payment intent — Returns the stored Stripe transactionId / secretKey as-is (GET does not create or refresh a PaymentIntent)

  • Credit balance — Optionally include a live credit-line snapshot with includeCreditBalance=true

What You Get

  • Same core FlightPrebookData shape as POST /flights/prebooks / attach-services (journey, pricing, payment intent fields, servicesAttachable)

  • booking.selectedServices / booking.bookedServices when services were attached

  • Live servicesAttachable from the provider (not persisted)

  • Existing payment fields conserved from create/attach

  • Optional creditLine when includeCreditBalance=true (live remaining credit when the account can cover the prebook price)

Quick Start

Provide the prebookId returned from POST /flights/prebooks in the URL path. Optionally pass includeCreditBalance=true to include credit-line availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
prebookIdYesThe unique prebook identifier
includeCreditBalanceNoWhen true, include credit line availability in the response when the account can cover the prebook price.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior, but the description adds valuable context: Stripe transactionId/secretKey are returned as-is, GET does not create or refresh a PaymentIntent, servicesAttachable is live and not persisted, and creditLine is conditional on includeCreditBalance and account coverage.

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 markdown is front-loaded and well-structured with scannable sections. However, the Overview and 'What You Get' sections repeat return-shape and servicesAttachable details, making it slightly verbose for a two-parameter read tool.

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

Completeness5/5

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

With no output schema, the description still conveys the return shape, persistence semantics, payment-intent behavior, and optional creditLine behavior. Annotations cover safety, so the combination is complete enough 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?

Schema coverage is 100%, so the schema already documents both parameters. The description adds useful meaning by saying prebookId comes from POST /flights/prebooks and clarifying that includeCreditBalance returns a live remaining-credit snapshot when the account can cover the prebook price.

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

Purpose5/5

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

States a specific verb ('Retrieve') and resource ('flight checkout session (prebook)') by ID, including ancillary services and live catalog scope. It distinguishes the read-only GET from POST create/attach siblings by noting that GET does not create or refresh a PaymentIntent.

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?

Has a dedicated 'When to Use' section naming four concrete scenarios: resume checkout, confirm attached ancillaries, reuse payment intent, and include credit balance. It also contrasts with POST behavior and explains where prebookId comes from.

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

get_flights_bookingsA
Read-onlyIdempotent
Inspect

Overview

List confirmed flight bookings owned by the authenticated user. Supports an optional PNR + last-name lookup for retrieving a single booking.

When to Use

  • "My bookings" page - Display the authenticated user's confirmed flight bookings

  • PNR lookup - Retrieve a single booking by airlinePnr and a passenger's lastName

  • Booking management - Build dashboards or list views of past and upcoming reservations

What You Get

  • Confirmed bookings only - Returns records persisted from the booking flow;

  • Full booking objects with status, journey, passengers, order reference, and pricing

  • Sandbox isolation - Sandbox and live bookings are scoped by the API key used

Key Features

  • Owner-scoped: Only returns bookings belonging to the authenticated user

  • PNR + last-name lookup: When both airlinePnr and lastName are supplied, returns a single matching booking; both are required together

  • Stable response shape: data is always an array containing exactly one element with a bookings array

Quick Start

Call with no query parameters to list all bookings for the authenticated user. To look up a specific booking, pass both airlinePnr and lastName.

ParametersJSON Schema
NameRequiredDescriptionDefault
lastNameNoPassenger last name for single-booking lookup. Required together with `airlinePnr`.
airlinePnrNoAirline PNR (record locator) for single-booking lookup. Required together with `lastName`.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's value is in the extra constraints it discloses: confirmed bookings only, owner-scoping, sandbox/live isolation by API key, and the rule that airlinePnr and lastName are required together. Pagination behavior for a list endpoint is not addressed, which is the main remaining gap.

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 heading structure is front-loaded and scannable, but for a two-parameter tool it is oversized: the PNR + last-name lookup is repeated in the Overview, When to Use, Key Features, and Quick Start sections. Several sentences restate prior content rather than earning their 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 no output schema, the description carries the return-value burden and does so: it names the response fields (status, journey, passengers, order reference, pricing) and the exact response shape (data array with one element containing a bookings array). Combined with the scoping and lookup rules, an agent has everything needed to call 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?

Schema description coverage is 100% and both parameters are already documented there, including the 'required together' coupling. The description restates that same coupling in prose, adding little syntactic or format detail beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

The Overview states a specific verb+resource with scope: 'List confirmed flight bookings owned by the authenticated user,' plus the optional single-booking lookup. It is clear, but it never names or distinguishes itself from closely named siblings like listBookings, searchBookings, or get_bookings, so an agent must infer which list tool applies.

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 'When to Use' section gives three concrete scenarios (My bookings page, PNR lookup, booking management) and the Quick Start clarifies that no params lists all while both params retrieve one booking. It lacks explicit when-not-to-use or a comparison against the sibling list/search tools.

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

get_flights_bookings_bookingidA
Read-onlyIdempotent
Inspect

Overview

Retrieve complete details of a confirmed flight booking using its unique booking ID.

When to Use

  • Booking confirmation page - Display full itinerary after booking completes

  • Booking management - Retrieve details for an existing reservation

  • Itinerary display - Show passengers, segments, and confirmation numbers

  • Status checks - Verify booking status for a given booking ID

What You Get

  • Complete itinerary with all flight segments and connection details

  • Passenger manifest with names, documents, and seat assignments

  • Booking status and provider confirmation reference

  • Pricing breakdown including taxes and fees paid

Key Features

  • Full booking record: Returns all data associated with the confirmed booking

  • Provider reference: Includes the provider-side booking confirmation number

  • Passenger details: Complete passenger information for all travelers

Quick Start

Provide the bookingId (returned from POST /flights/bookings) in the URL path. Returns the complete booking record.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookingIdYesThe unique booking identifier

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so safety profile is covered. The description adds return content details (itinerary, passenger manifest, pricing breakdown, provider reference) not found in annotations. No auth or rate-limit info, but for a read tool with rich annotations this is adequate.

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?

Markdown sections and bullet lists are structured but overly verbose for a single-parameter read. 'What You Get' and 'Key Features' repeat the same return content (full booking record, passenger details, provider reference), making several sentences redundant.

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 simple read tool with rich annotations and no output schema, the description covers purpose, usage contexts, and return values adequately. Missing edge cases like invalid booking ID handling, but that is a minor gap.

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% and bookingId is documented as 'the unique booking identifier'. The description adds that the ID is returned from POST /flights/bookings and should be placed in the URL path, providing useful provenance and location beyond the schema.

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

Purpose5/5

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

States a specific verb 'retrieve' and resource 'complete details of a confirmed flight booking' using its unique booking ID. Distinguishes from sibling list tool get_flights_bookings and general get_bookings_bookingid by specifying 'flight booking'. An agent can easily tell what this tool does.

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?

Provides a 'When to Use' section with four concrete scenarios (confirmation page, management, itinerary display, status checks). However, it does not explicitly name alternatives or state when not to use this tool, so routing guidance is clear but incomplete.

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

get_flights_bookings_bookingid_cancellationsA
Read-onlyIdempotent
Inspect

Overview

Returns refund eligibility, estimated refund amounts, and penalty details for a booking without actually cancelling it. Use this before calling POST /flights/bookings/{bookingId}/cancellations to understand the financial impact of cancellation.

When to Use

  • Pre-cancellation review — Show the customer the potential maximum refund (not guaranteed) before they confirm cancellation

  • Refund estimation — Display potential maximum refund and penalty amounts in the booking management UI (refund is not granted until cancel completes)

  • Eligibility check — Determine whether the booking is within the void window (isVoidable) or eligible for a partial refund (isRefundable)

What You Get

  • confidence — How reliable the quote is (confirmed, estimated, heuristic, unknown)

  • isRefundable / isVoidable — Quick eligibility flags

  • refund / penalty — Aggregate amounts with margin applied. refund is the potential maximum the airline may refund — not a granted/guaranteed amount

  • penalties[] — Itemised penalty breakdown when available

  • tickets[] — Per-ticket detail when available

  • destination — Where refunded money goes (original_payment, agency_deposit, voucher, etc.)

  • vouchers[] — Airline travel vouchers / credit-shells when destination is voucher; omitted when absent. Distinct from LiteAPI discount voucherCode on prebook

Concurrent cancellation

If a cancellation was already submitted and is still awaiting provider confirmation, this endpoint returns HTTP 409 with code 49007 (CONCURRENT_OPERATION). A new quote is not available until that cancellation completes or fails.

Refund amount caveat

The refund amount on a cancellation quote is the potential maximum the airline may refund if cancellation proceeds under the quoted conditions. It is an estimate for decision-making only and is not granted — the final refund (if any) is determined when cancellation completes and may be lower or zero. The refund may arrive asynchronously once the airline determines the final amount.

Key Features

  • Non-destructive — Does not cancel the booking; safe to call before user confirmation

  • Margin-applied pricing — All amounts (including voucher pricing.display) reflect the same margin applied at booking time

Quick Start

Provide the bookingId from POST /flights/bookings in the URL path. Every call hits the upstream provider — do not place this on a hot polling loop.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookingIdYesThe unique booking identifier

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses the HTTP 409 / code 49007 concurrent-operation behavior, that every call hits the upstream provider (no hot polling), that refunds are potential-maximum and not granted, margin-applied pricing, and that refunds may arrive asynchronously. Annotations only cover the safety profile, so this adds substantial new operational context.

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

Conciseness4/5

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

Front-loaded with Overview and sectioned headers, so it is easy to scan. However it is lengthy and repeats the 'potential maximum, not guaranteed' refund caveat across three separate sections, which is more redundancy than needed.

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

Completeness5/5

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

No output schema exists, yet the description enumerates the return fields (confidence, isRefundable/isVoidable, refund/penalty, penalties[], tickets[], destination, vouchers[]) and explains the caveats around them. An agent has everything needed to call and interpret this 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?

Only one parameter with 100% schema coverage, so baseline is 3. The description adds value by specifying the origin of the value ('bookingId from POST /flights/bookings in the URL path'), which the schema's terse 'unique booking identifier' does not convey.

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

Purpose5/5

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

States a specific verb+resource (returns refund eligibility, estimated refund amounts, and penalty details for a booking) and explicitly scopes it as read-only versus the sibling POST cancellations endpoint. An agent can distinguish this quote endpoint from `post_flights_bookings_bookingid_cancellations` immediately.

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

Usage Guidelines5/5

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

Explicitly says to use this before calling `POST /flights/bookings/{bookingId}/cancellations`, and enumerates three concrete use cases (pre-cancellation review, refund estimation, eligibility check). Alternatives and the ordering condition are stated, not inferred.

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

get_flights_bookings_bookingid_servicesA
Read-onlyIdempotent
Inspect

Overview

Retrieve the ancillary services (seats, baggage) for an existing flight booking: services that are already booked together with the live catalog of services that can still be booked.

When to Use

  • Post-booking upsell - Show the passenger which seats and bags they can still add after the booking was created

  • Booking management - Display the services already attached to the booking with the prices that were charged

  • Availability refresh - The bookable catalog is fetched live from the provider on every call

What You Get

  • groups - Bookable services grouped by category (seat, baggage) with post-margin prices and encoded serviceIds

  • bookedServices - Services already attached to the booking; entries booked through the API carry the exact price that was charged at attach time

  • expiresAt - Validity window of the bookable catalog

Key Features

  • Read-only: Safe to call at any time; the catalog reflects live availability

  • Consistent pricing: Booked services echo the post-margin amounts the user actually paid

Quick Start

Provide the bookingId (returned from POST /flights/bookings) in the URL path.

Note: Booking additional services on an existing booking is not available yet; this endpoint currently only reports availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookingIdYesThe unique booking identifier

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context beyond that: the bookable catalog is fetched live from the provider on every call, and booked entries echo the exact post-margin price charged at attach time.

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?

Well front-loaded with a one-line overview followed by scannable sections. It is somewhat long for a single-parameter read endpoint, and the 'Key Features' bullets partly restate the Overview and 'What You Get' sections (read-only, consistent pricing), which costs a point.

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

Completeness5/5

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

With no output schema, the description carries the burden of explaining the return shape, and it does so explicitly (groups with post-margin prices and encoded serviceIds, bookedServices, expiresAt). Nothing needed to call or interpret the response 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 description coverage is 100% for the single parameter, so the baseline is 3. The description adds value by specifying that bookingId goes in the URL path and that it originates from POST /flights/bookings, which the schema alone does not say.

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

Purpose5/5

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

States a specific verb (retrieve) and resource (ancillary services for a flight booking) and precisely delineates scope as both already-booked services and the live bookable catalog. This distinguishes it from the closely named sibling get_flights_bookings_bookingid, which returns the booking itself rather than its service catalog.

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 'When to Use' section gives three concrete scenarios (post-booking upsell, booking management, availability refresh) that tell an agent exactly when this endpoint applies, and the closing note rules out a use case (attaching services is not yet supported). It does not name a sibling alternative to route to, which keeps it 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_guestsA
Read-onlyIdempotent
Inspect

Overview

Retrieve a complete list of all guests enrolled in your loyalty program with their points balance and booking history.

When to Use

  • Guest management - View all loyalty program members

  • Points administration - Check points balances across all guests

  • Customer support - Look up guest information quickly

  • Reporting - Generate lists of loyalty program participants

What You Get

  • Guest profiles - Name, email, phone number for each guest

  • Points balance - Current points and upcoming points (pending from bookings)

  • Booking history - List of booking IDs associated with each guest

  • Account metadata - Creation and update timestamps

Quick Start

No parameters required. Returns all guests with their loyalty program details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive behavior, so the safety profile is covered. The description adds genuinely useful context beyond that by enumerating the returned payload (profiles, points balance, booking history, timestamps) in the absence of an output schema. It omits pagination/volume behavior, which keeps it from a 5.

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?

Structure is clear and front-loaded, but it is padded for a zero-parameter list tool: the 'Quick Start' section restates what the Overview already said ('Returns all guests with their loyalty program details'), and the returned-field list is repeated in prose. Content is well organized but redundant.

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 simple no-param read tool with no output schema, the description covers the call contract and describes return contents in enough detail for an agent to use the result. Missing volume/pagination expectations is the only notable gap.

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?

There are zero parameters, so the baseline is 4. The description correctly states 'No parameters required,' which matches the empty schema and removes any ambiguity about whether filtering is possible.

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 states a specific verb and resource ('Retrieve a complete list of all guests enrolled in your loyalty program') and scopes it with 'all guests', which implicitly distinguishes it from the singular get_guests_guestid sibling. It never names that sibling explicitly, so differentiation is inferred rather than stated.

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

Usage Guidelines4/5

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

A dedicated 'When to Use' section lists four concrete scenarios (guest management, points administration, customer support, reporting), giving clear context for invocation. It provides no exclusions or explicit alternatives, 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.

get_guests_guestidA
Read-onlyIdempotent
Inspect

Overview

Get detailed information about a specific guest by their ID, including loyalty points and booking history.

When to Use

  • Customer profiles - Display guest information on their account page

  • Points lookup - Check a specific guest's points balance

  • Booking history - Show a guest's past bookings

  • Support tickets - Quickly access guest details during support

What You Get

  • Complete guest profile - Personal information (name, email, phone)

  • Points summary - Current available points and upcoming points

  • Booking list - All booking IDs associated with this guest

  • Account status - Account creation and update information

Quick Start

Provide the guest ID in the URL path. Returns complete guest information including points and bookings.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestIdYesNumeric ID of the guest to fetch

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that by enumerating the returned fields (name, email, phone, available/upcoming points, booking IDs, account timestamps) in the absence of 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.

Conciseness3/5

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

Front-loaded with a clear Overview, but the four markdown sections contain heavy redundancy: the 'What You Get' items restate the Overview, and 'Quick Start' repeats the parameter guidance already in the schema. It is structured but longer than the information content justifies.

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

Completeness4/5

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

With no output schema and a single fully-documented parameter, the description usefully fills the return-value gap by listing the profile fields, points, bookings, and account status. Annotations cover the safety semantics, so the tool is adequately specified, though sibling disambiguation is still 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% for the single guestId parameter, so the schema already documents it as a numeric ID. The description only restates 'provide the guest ID in the URL path' without adding format, range, or error semantics, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource: fetch a single guest by ID, plus what it returns (points, booking history, account status). However, it never distinguishes itself from the closely-named siblings get_guests_guestid_bookings, get_guests_guestid_loyalty_points, and get_guests_guestid_vouchers, which appear to expose overlapping data.

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

Usage Guidelines3/5

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

The 'When to Use' section lists scenarios (customer profiles, points lookup, booking history, support tickets) but these essentially restate the purpose rather than giving discriminating conditions. No alternatives are named and no exclusions are given, so an agent cannot tell from this text when to prefer the dedicated bookings or loyalty-points siblings over this call.

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

get_guests_guestid_bookingsC
Read-onlyIdempotent
Inspect

Overview

Get all loyalty transactions for a specific guest, showing points earned and cashback rates used for each booking.

When to Use

  • Points history - Show guests their points earning history

  • Transaction details - Display detailed booking transactions

  • Cashback tracking - Show cashback rates applied to bookings

  • Account statements - Generate points activity reports

What You Get

  • Transaction list - All loyalty transactions for the guest

  • Points per booking - Points earned (or deducted) for each booking

  • Cashback rates - Cashback percentage used for each transaction

  • Booking references - Booking IDs linked to each transaction

  • Timestamps - When each transaction occurred

Quick Start

Provide the guest ID in the URL path. Returns all loyalty transactions with points and cashback details.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestIdYesNumeric ID of the guest to fetch

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds useful return-shape context (points per booking, cashback rates, timestamps, booking references) but says nothing about pagination, result limits, or auth scope for a read that could span a guest's entire history.

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

Conciseness2/5

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

The markdown scaffolding is heavily redundant: 'points history', 'cashback tracking' and 'transaction details' recur across Overview, When to Use, and What You Get, and 'What You Get' largely restates the Overview sentence. Roughly half the text could be deleted without losing information.

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

Completeness3/5

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

With no output schema, the description appropriately sketches the returned fields, which is genuinely needed. But for a guest-scoped transactional list it omits ordering, volume, and pagination behavior, and it never resolves the naming mismatch with the loyalty_points sibling, so an agent still has open questions.

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

Parameters3/5

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

There is one parameter with 100% schema description coverage, so the schema already documents guestId fully. The description adds only the placement note ('Provide the guest ID in the URL path'), which is marginal beyond what the schema provides — baseline 3 for high coverage.

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

Purpose3/5

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

The description states a specific verb+resource ('Get all loyalty transactions for a specific guest') with concrete return content (points earned, cashback rates). However, the tool name ends in '_bookings' and a sibling 'get_guests_guestid_loyalty_points' covers nearly the same territory, yet the description never acknowledges or distinguishes itself from that sibling, leaving ambiguity about what makes this tool distinct.

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

Usage Guidelines3/5

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

The 'When to Use' bullets give plausible scenarios (points history, account statements, cashback tracking), which is better than nothing. But they are generic use cases rather than guidance about when to pick this over get_guests_guestid_loyalty_points or get_bookings_guest_nationality_report, and no exclusions or prerequisites are given.

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

get_guests_guestid_loyalty_pointsA
Read-onlyIdempotent
Inspect

Overview

Get a guest's current available points and upcoming points (points pending from confirmed bookings).

When to Use

  • Points display - Show points balance on guest account pages

  • Points checking - Quick lookup of available points

  • Pending points - Display points that will be awarded after stays

  • Balance verification - Verify points before redemption

What You Get

  • Current points - Points available for immediate redemption

  • Upcoming points - Points that will be awarded from confirmed bookings

Quick Start

Provide the guest ID in the URL path. Returns both current and upcoming points balances.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestIdYesNumeric ID of the guest to fetch

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. Because there is no output schema, the 'What You Get' section adds real value by specifying the two returned balances (current and upcoming), a behavioral detail the annotations cannot convey. It omits auth requirements and error behavior for a missing guest.

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 Overview is well front-loaded, but 'What You Get' verbatim repeats the current/upcoming points already stated in the Overview, and 'Quick Start' restates the single path parameter. Roughly a third of the text is redundant for a one-parameter read call.

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 simple read tool with full annotation coverage, the description covers what it does, what it returns, and how to call it, which compensates for the absent output schema. Only error/empty-state behavior (guest without a loyalty record) is unaddressed.

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?

With a single parameter at 100% schema description coverage, the schema already documents guestId as the numeric guest ID. The description adds only 'in the URL path', a minor transport detail, so the baseline of 3 applies.

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

Purpose4/5

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

The Overview names a specific verb and resource (get a guest's current available points and upcoming pending points), which is far more precise than the tool name alone and clearly distinct from get_guests_guestid. It stops short of naming a sibling for comparison, so it lands at 4 rather than 5.

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

Usage Guidelines3/5

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

The 'When to Use' bullets give contexts (account pages, quick lookup, pending display, verification before redemption), but three of the four are restatements of the same read operation rather than conditions that select this tool over an alternative. No exclusions or named alternatives (e.g. the redeem endpoint) are given, so usage is only implied.

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

get_guests_guestid_vouchersA
Read-onlyIdempotent
Inspect

Overview

Retrieve all vouchers available to a specific guest, including discount codes, validity periods, and usage limits.

When to Use

  • Voucher display - Show available vouchers on a guest's account page

  • Discount management - Check which vouchers a guest can use

  • Validity checking - Verify if vouchers are still active

  • Usage tracking - Monitor voucher usage counts

What You Get

  • Voucher list - All vouchers assigned to the guest

  • Discount details - Type (percentage/fixed), value, and currency

  • Validity period - Start and end dates for each voucher

  • Usage information - Current usage count and usage limits

  • Status - Active/inactive status of each voucher

Quick Start

Provide the guest ID in the URL path. Returns all vouchers available to that guest.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestIdYesNumeric ID of the guest to fetch vouchers for

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so safety is covered structurally. The description adds genuinely useful behavioral context beyond that: the shape of returned vouchers (discount type/value/currency, validity dates, usage counts, active status) and the fact that it returns ALL vouchers for the guest.

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?

Heavily structured with markdown headers and front-loaded purpose, so an agent can skim efficiently. It is a little padded ('Quick Start' largely restates the purpose), but every section is short and each earns most of its place since no output schema exists.

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

Completeness4/5

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

With no output schema and a single trivially-documented parameter, the description compensates well by enumerating the return fields and status. Nothing critical is missing for a safe read-only list call; only sibling routing/all-vouchers-vs-filtered nuance is absent.

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?

Only one parameter exists and schema coverage is 100%, so the schema already defines guestId fully. The description adds only a minor note ('provide the guest ID in the URL path'), which is baseline-level value; the 3 baseline 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 verb+resource ('Retrieve all vouchers available to a specific guest') with clear scoping. It is readily distinguishable from the sibling get_vouchers (all vouchers) and get_vouchers_voucherid (single voucher), since it is anchored to a guest.

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 'When to Use' section gives four concrete scenarios (display, discount management, validity checking, usage tracking), which is well above implicit guidance. However, it names no alternatives or exclusions, so it falls short of the explicit when-not/routing-to-sibling standard.

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

getHotelTaxSchemaA
Read-onlyIdempotent
Inspect

Overview

Returns the tax schema of a hotel as normalized static data, independent of the supply provider the rules were learned from. Each entry describes one tax or fee: whether it is already included in the room rate, whether it is a percentage of the rate or a fixed amount, and how fixed amounts scale (per adult and/or per night).

When to Use

  • Price transparency - Show guests which taxes and fees apply at a property

  • Amount-due-at-property estimates - Excluded taxes are typically collected at the hotel

  • Tax auditing - Compare supplier-declared taxes against the reference schema

Notes

  • Fixed amounts are expressed in USD

  • Percentage rates apply to the room rate (e.g. 13.5 means 13.5%)

  • The schema is learned by an offline pipeline; hotels without learned data return 404

ParametersJSON Schema
NameRequiredDescriptionDefault
hotelIdYesUnique identifier of the hotel, in 'lp' format or numeric.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description still adds real behavioral value beyond that: fixed amounts are USD, percentages apply to the room rate (13.5 = 13.5%), and the schema is produced by an offline pipeline, so hotels without learned data return 404.

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

Conciseness4/5

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

Front-loaded Overview followed by tightly scoped sections; each bullet earns its place. It is slightly longer than strictly necessary for a one-parameter read tool, but there is no filler or repetition.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing the return shape and does so: each entry states inclusion in the rate, percentage vs fixed, and fixed-amount scaling. It also discloses the 404 case. Missing only a full top-level response envelope description.

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% for the single hotelId parameter, and the schema already documents the 'lp' or numeric identifier format. The description never mentions hotelId, so it adds nothing beyond what the structured field provides — baseline 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?

Opens with a specific verb + resource ('Returns the tax schema of a hotel') and immediately distinguishes the payload as normalized, provider-independent static data. That normalization framing is enough to separate it from sibling catalog tools like get_data_hotel without opening either schema.

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

Usage Guidelines4/5

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

The 'When to Use' section gives three concrete scenarios (price transparency, amount-due-at-property estimates, tax auditing) that make the invocation context clear. It does not name alternatives or state when not to use it, so it stops short of the top band.

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

get_loyaltiesA
Read-onlyIdempotent
Inspect

Overview

Retrieve your current loyalty program configuration, including whether it's active and what cashback rate is set.

When to Use

  • Settings display - Show current program configuration in admin panels

  • Status checks - Verify if the loyalty program is enabled

  • Rate verification - Check current cashback rates

  • Configuration review - Review program settings before making changes

What You Get

  • Program status - Whether the program is enabled or disabled

  • Cashback rate - Current percentage guests earn

  • Currency - Cashback currency setting

Quick Start

No parameters required. Returns current loyalty program settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine value by enumerating the returned fields (program status, cashback rate, currency), though it says nothing about auth requirements or failure modes.

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?

Headers make it scannable and front-loaded, but the content is redundant for a no-argument getter: the Overview, the 'What You Get' list, and the Quick Start all restate that it returns program status and cashback rate. It is longer than the operation warrants.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing return values and does so adequately by naming the three key fields. For a trivial zero-param read, this is sufficient, though it could note that config may be absent/disabled rather than just 'enabled or disabled'.

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

Parameters4/5

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

The tool takes no parameters and the description correctly states 'No parameters required', so there is nothing further to disambiguate. Baseline for a zero-parameter tool applies.

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

Purpose5/5

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

States a specific verb and resource ('Retrieve your current loyalty program configuration') and immediately scopes it to active status and cashback rate. An agent can clearly distinguish this read tool from its write counterpart put_loyalties.

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 'When to Use' section gives four concrete scenarios (settings display, status checks, rate verification, configuration review) and hints at sequencing before changes. It stops short of explicitly naming put_loyalties as the mutation alternative, so it is context-rich but not a full when/when-not routing rule.

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

get_prebooks_prebookidA
Read-onlyIdempotent
Inspect

Overview

Retrieve details of an existing prebook session by its ID. Use this to fetch prebook information without creating a new session.

When to Use

  • Session recovery - Retrieve prebook details if you've stored the prebookId

  • Status checks - Verify prebook session details before completing booking

  • Payment integration - Get prebook data needed for payment processing

  • Credit balance - Optionally include updated credit balance information

What You Get

  • Complete prebook data - All information from the prebook session

  • Rate details - Pricing, room types, and availability

  • Terms and conditions - Cancellation policies and booking terms

  • Credit balance - Optional updated credit balance (if requested)

Quick Start

Provide the prebookId in the URL path. Optionally include includeCreditBalance query parameter to get updated credit information.

ParametersJSON Schema
NameRequiredDescriptionDefault
prebookIdYes(Required) The unique identifier of the prebook session.
includeCreditBalanceNoWhether to include updated credit balance information with the prebook.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered; the description adds that the call returns complete prebook data, rate details, terms, and an optional credit balance. It omits auth/permission requirements and rate-limit behavior, but with annotations carrying the safety profile this is a solid contribution.

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 headers are front-loaded and scannable, but the 'What You Get' list is padded with low-information items ('Complete prebook data - All information from the prebook session') and overlaps the Overview. Roughly half the content is genuinely load-bearing.

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

Completeness4/5

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

With no output schema, describing the returned prebook/rate/terms data is genuinely necessary and is provided. Combined with 100% schema coverage and rich read-only annotations, an agent has enough to invoke this correctly; only auth/permission context is absent.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented. The description adds only the mechanical detail that prebookId is a URL path parameter and includeCreditBalance an optional query parameter — useful framing, but no added semantics about identifier format or what value to pass. Baseline 3 is appropriate.

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 Overview states a specific verb and resource: 'Retrieve details of an existing prebook session by its ID,' and contrasts it with session creation ('without creating a new session'), which separates it from the prebook-creating siblings like post_rates_prebook. It stops short of naming a specific sibling it competes with, so it falls just short of a 5.

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

Usage Guidelines4/5

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

The 'When to Use' section gives four concrete scenarios (session recovery, status checks, payment integration, credit balance) that tell the agent the right contexts to reach for this tool. It gives no explicit when-not or named alternative, so it is clear context without exclusions.

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

getPriceIndexCityA
Read-onlyIdempotent
Inspect

Overview

Retrieve aggregated historical price index data for all hotels in a specific city. Returns average per-night prices aggregated by calendar day across all hotels in the city, providing city-level pricing trends.

⚠️ Beta Feature: This endpoint is currently in beta. The API structure and behavior may change in future versions.

Pricing: $0.05 per request

Rate Limiting: This endpoint is rate-limited to 10 requests per minute for both sandbox and production API keys. Exceeding this limit will result in a 429 Too Many Requests response.

When to Use

  • City-level price analysis - Analyze average pricing trends for an entire city

  • Market research - Compare pricing across different cities

  • Destination pricing - Get aggregated pricing data for a destination

  • City pricing dashboards - Build visualizations of city-level price trends

What You Get

  • City-level aggregation - Average prices aggregated across all hotels in the city (up to 1,000 hotels)

  • Per-night prices - Average price per night for each calendar day

  • Daily aggregation - One entry per day with aggregated pricing data

  • Future dates only - Only returns data for future check-in dates (defaults to today onwards)

Key Features

  • Automatic hotel discovery - Automatically finds hotels in the specified city (up to 1,000)

  • City-level aggregation - Prices are averaged across all hotels in the city, not per hotel

  • Per-night pricing - Prices are normalized to per-night rates

  • Future-focused - Only queries check-in dates in the future by default

  • Flexible date ranges - Optional date filtering with sensible defaults

Parameters

  • countryCode (required): ISO-2 country code (e.g., 'US', 'GB', 'FR')

  • cityName (required): City name (case-insensitive)

  • fromDate (optional): Start date in YYYY-MM-DD format. Defaults to today.

  • toDate (optional): End date in YYYY-MM-DD format. Defaults to 1 year from today.

ParametersJSON Schema
NameRequiredDescriptionDefault
toDateNoEnd date for the price index query in YYYY-MM-DD format. Defaults to 1 year from today if not provided.
cityNameYesCity name (case-insensitive)
fromDateNoStart date for the price index query in YYYY-MM-DD format. Defaults to today if not provided. Only future check-in dates are queried.
countryCodeYesISO-2 country code (e.g., 'US', 'GB', 'FR')

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), and the description layers on substantial extra behavior: beta instability warning, $0.05 per-request pricing, a 10 req/min rate limit with the resulting 429 response, the 1,000-hotel aggregation cap, and the future-check-in-dates-only constraint. This is exactly the kind of operational context annotations cannot express.

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?

Front-loaded and well-headed, but the content is padded: city-level aggregation, per-night pricing, and future-dates-only are each stated in both 'What You Get' and 'Key Features', so a meaningful share of the text is redundant rather than earning 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 no output schema, the description carries the return-value burden and does so well: it specifies averaged per-night prices, one entry per calendar day, aggregation across up to 1,000 hotels, and future-only dates. Combined with cost and rate-limit disclosure, an agent has everything needed to call and interpret it.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (including defaults and format) are already documented in the schema. The description's 'Parameters' section largely restates that, adding only the 'only future check-in dates are queried' nuance, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Retrieve aggregated historical price index data for all hotels in a specific city') and explicitly scopes it as city-level aggregation 'not per hotel', which distinguishes it from the sibling getPriceIndexHotels without requiring the schema.

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

Usage Guidelines4/5

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

The 'When to Use' section gives four concrete scenarios (city-level analysis, market research, destination pricing, dashboards), which is clear positive context. However, it never names the obvious alternative getPriceIndexHotels or states when this tool should NOT be used instead, so it stops short of full when/when-not guidance.

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

getPriceIndexHotelsA
Read-onlyIdempotent
Inspect

Overview

Retrieve historical price index data for a list of hotels. Returns average per-night prices aggregated by calendar day, allowing you to analyze pricing trends and patterns.

⚠️ Beta Feature: This endpoint is currently in beta. The API structure and behavior may change in future versions.

Pricing: $0.05 per request

Rate Limiting: This endpoint is rate-limited to 10 requests per minute for both sandbox and production API keys. Exceeding this limit will result in a 429 Too Many Requests response.

When to Use

  • Price trend analysis - Analyze how hotel prices change over time

  • Price forecasting - Use historical data to predict future pricing

  • Market research - Compare pricing across multiple hotels

  • Pricing dashboards - Build visualizations of hotel price trends

What You Get

  • Per-night prices - Average price per night for each calendar day

  • Daily aggregation - One entry per day with aggregated pricing data

  • Multiple hotels - Query up to 50 hotels in a single request

  • Future dates only - Only returns data for future check-in dates (defaults to today onwards)

Key Features

  • Per-night pricing - Prices are normalized to per-night rates regardless of stay duration

  • Daily aggregation - Each day has a single entry with the average per-night price across all stays that include that day

  • Future-focused - Only queries check-in dates in the future by default

  • Flexible date ranges - Optional date filtering with sensible defaults

  • Hotel limit - Maximum 50 hotel IDs per request

Parameters

  • hotelIds (required): Comma-separated list of hotel IDs. Maximum 50 hotel IDs allowed.

  • fromDate (optional): Start date in YYYY-MM-DD format. Defaults to today.

  • toDate (optional): End date in YYYY-MM-DD format. Defaults to 1 year from today.

ParametersJSON Schema
NameRequiredDescriptionDefault
toDateNoEnd date for the price index query in YYYY-MM-DD format. Defaults to 1 year from today if not provided.
fromDateNoStart date for the price index query in YYYY-MM-DD format. Defaults to today if not provided. Only future check-in dates are queried.
hotelIdsYesComma-separated list of hotel IDs to query price index data for. Maximum 50 hotel IDs allowed per request.

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already carry the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: beta instability warning, $0.05 per-request pricing, a 10 req/min rate limit with the exact 429 failure mode, and the 50-hotel cap. This is exactly the behavioral detail annotations cannot convey.

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?

Front-loaded with an overview and clearly sectioned, but there is real duplication: 'per-night prices,' 'daily aggregation,' and 'multiple hotels' appear in both 'What You Get' and 'Key Features,' and multiple hotels is repeated again under parameters. Trimming the redundant sections would improve density.

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

Completeness5/5

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

No output schema exists, so the description has to explain return values, and it does via 'What You Get' (per-night price per calendar day, one entry per day, aggregated). Combined with rate limits, beta status, and defaults, an agent has everything needed to call and interpret this correctly.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters are already documented in the schema. The description restates them with the same detail (YYYY-MM-DD, defaults, 50-hotel max) and adds only the 'future check-in dates only' nuance, which is already in the schema. Baseline 3 is appropriate 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?

States a specific verb and resource: 'Retrieve historical price index data for a list of hotels,' and immediately scopes it to per-night averages aggregated by calendar day. This is clearly distinct from the sibling getPriceIndexCity by being hotel-list scoped rather than city scoped.

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

Usage Guidelines3/5

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

The 'When to Use' bullets describe scenarios (trend analysis, forecasting, market research) rather than conditions that select this tool over an alternative. It never points to getPriceIndexCity as the city-level counterpart, leaving the agent to infer routing.

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

getPublicPriceA
Read-onlyIdempotent
Inspect

Overview

Retrieve cached public price data for a specific hotel and occupancy. This endpoint returns pricing information sourced from public booking platforms (e.g., Booking.com, Expedia) that has been pre-fetched and cached. It applies occupancy canonicalization automatically, so callers don't need to replicate that logic.

⚠️ Beta Feature: This endpoint is currently in beta. The API structure and behavior may change in future versions.

Rate Limiting: This endpoint is rate-limited to 10 requests per minute for both sandbox and production API keys. Exceeding this limit will result in a 429 Too Many Requests response.

When to Use

  • Price comparison - Compare your negotiated rates against publicly available prices

  • Rate validation - Verify that your offered rates are competitive before displaying to end users

  • Market intelligence - Understand public pricing trends for specific hotels and dates

What You Get

  • amount - The best (lowest) cached public price for the stay in the specified currency

  • nightlyAmount - The best (lowest) nightly public price

  • currency - Currency code (USD)

  • provider - Normalized provider identifier for the best offer (e.g., cheaptickets)

  • rawObservedText - Raw observed price text from the source

  • offers - Public price offers from multiple booking providers

  • fetchedAt - When the price was last retrieved from the source

  • expiresAt - When this cached price expires and should no longer be used

Key Features

  • Occupancy-specific - Prices are stored per occupancy configuration; query params must match write-time occupancy

  • Negative cache aware - Returns 404 for both cache misses and negative cache entries (hotels with no public price found)

  • Low latency - Direct cache lookup, no upstream API calls

Parameters

  • hotelId (required): The liteAPI hotel ID (e.g., lpec902)

  • checkin (required): Check-in date in YYYY-MM-DD format

  • checkout (required): Check-out date in YYYY-MM-DD format

  • adults (required): Number of adult guests

  • childrenAges (optional): Comma-separated ages of children (e.g., 5,8)

  • currency (optional): Currency code; if present, must be USD

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsYesNumber of adult guests
checkinYesCheck-in date in YYYY-MM-DD format
hotelIdYesThe liteAPI hotel ID
checkoutYesCheck-out date in YYYY-MM-DD format
currencyNoCurrency code. If present, must be USD.
childrenAgesNoComma-separated ages of children (e.g., '5,8'). Occupancy params must match those used at write time.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), and the description still adds substantial behavior: a 10 req/min rate limit with a 429 outcome, beta status with possible API changes, 404 for both cache misses and negative-cache entries, automatic occupancy canonicalization, and a no-upstream-call low-latency guarantee. This is exactly the extra context annotations cannot express.

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?

Well front-loaded with headers, and the warning/rate-limit callouts are appropriately prominent. It is long and the 'Parameters' section largely restates the schema, which is the only redundancy; overall each block 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 no output schema, the 'What You Get' block documents the return fields (amount, nightlyAmount, provider, fetchedAt, expiresAt, offers), so the agent knows both what it receives and when the data expires. Combined with the rate-limit, beta, and 404 semantics, nothing needed to invoke this 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, but the description adds real meaning beyond the schema: a concrete hotelId example (`lpec902`), the constraint that query params must match write-time occupancy, the `5,8` childrenAges form, and the USD-only currency restriction. These are operational constraints not present in the schema.

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 and resource ('Retrieve cached public price data for a specific hotel and occupancy') and scopes it to pre-fetched public booking-platform data. This distinguishes it from live-rate siblings such as post_hotels_rates and post_rates_prebook without the agent opening a schema.

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

Usage Guidelines4/5

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

It provides three concrete use cases (price comparison, rate validation, market intelligence) that clearly frame when this tool applies. However, it never names an alternative tool or an explicit when-not-to-use condition, so routing against siblings like post_hotels_min_rates is still left to inference.

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

get_supply_customizationA
Read-onlyIdempotent
Inspect

Overview

Get your current supply customization preferences, including advanced accessibility options for hotel searches.

When to Use

  • Settings display - Show current customization settings in admin panels

  • Configuration checks - Verify your current preferences

  • Feature verification - Check if advanced accessibility is enabled

What You Get

  • Current settings - Your active supply customization configuration

  • Advanced accessibility flag - Whether advanced accessibility options are enabled

Quick Start

No parameters required. Returns your current supply customization settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive. Since there is no output schema, the description adds real value by disclosing the return contents (current settings plus an advanced-accessibility flag). It does not mention auth or permission requirements.

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 content is front-loaded, but four markdown sections are used to convey a single fact. The three 'When to Use' bullets (settings display, configuration checks, feature verification) restate essentially the same scenario, adding bulk without new information.

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

Completeness4/5

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

With no output schema and no parameters, the description correctly compensates by naming the returned values. For a simple read-only getter this is nearly sufficient; only auth/permission context 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?

Zero parameters, and the description explicitly states 'No parameters required,' which matches the empty schema. Baseline 4 applies for a parameterless tool.

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

Purpose4/5

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

States a specific verb (Get) and resource (supply customization preferences), and the name contrasts cleanly with the write sibling put_supply_customization. It is clear what the tool returns, though it never explicitly names its write counterpart.

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 'When to Use' section gives three concrete contexts (settings display, configuration checks, feature verification). There is no explicit 'when not to use' or named alternative, but the conditions for invoking it are clear enough.

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

get_vouchersB
Read-onlyIdempotent
Inspect

Overview

Get a paginated list of all vouchers in your system, including active and inactive vouchers with their current status.

When to Use

  • Voucher management - View all vouchers in your admin panel

  • Inventory overview - See all available discount codes

  • Status monitoring - Check which vouchers are active

  • Reporting - Generate lists of all vouchers for analysis

What You Get

  • Complete voucher list - All vouchers with full details

  • Discount information - Type, value, and currency for each voucher

  • Validity status - Start/end dates and current status

  • Usage tracking - Remaining uses for each voucher

Pagination

Results are paginated. Use the page and limit query parameters to navigate through the list, e.g. /vouchers?page=5&limit=10.

Quick Start

Optionally provide page and limit query parameters. Returns a paginated list of vouchers with complete details including codes, discounts, validity, and usage counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number to retrieve (1-based).
limitNoNumber of vouchers to return per page.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the read-only safety profile is fully covered by structured data. The description adds pagination behavior via page/limit and enumerates returned fields, which is genuinely useful, but it adds no permission requirements, rate limits, or default page size.

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

Conciseness2/5

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

The description is heavily padded with four markdown sections that repeat the same idea (list of vouchers with details) multiple times; 'What You Get' and 'Quick Start' restate the Overview. Front-loaded, but several bullets such as 'Inventory overview - See all available discount codes' earn no place.

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

Completeness3/5

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

With no output schema, the description reasonably carries the burden of describing return contents (codes, discounts, validity, usage counts) and pagination. But it omits practical details an agent needs — default page size, how to detect the last page, whether a total count is returned — leaving the listing behavior underspecified.

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% for both parameters and the schema already documents page (1-based) and limit (per page). The description's example `/vouchers?page=5&limit=10` adds a little concreteness but no semantics beyond the schema, and both params are optional with no stated defaults.

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 states a specific verb and resource — listing all vouchers with active/inactive status — so the agent knows it retrieves a collection. However, it never distinguishes itself from close siblings like get_vouchers_voucherid (single voucher) or get_vouchers_history, which an agent must infer from the name alone.

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

Usage Guidelines3/5

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

The 'When to Use' section provides context (voucher management, inventory overview, reporting), but these bullets are largely restatements of 'you want to list vouchers' rather than discriminating conditions. No alternative tool is named and no exclusion (e.g., use get_vouchers_voucherid for one voucher) is offered.

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

get_vouchers_historyA
Read-onlyIdempotent
Inspect

Overview

Get a complete history of all voucher redemptions across your system, showing which vouchers were used, when, and for which bookings.

When to Use

  • Usage analytics - Track voucher redemption patterns

  • Performance reporting - See which vouchers are most popular

  • Audit trail - Maintain records of voucher usage

  • Marketing insights - Understand voucher effectiveness

What You Get

  • Usage records - Each voucher redemption with full details

  • Booking information - Booking IDs and hotel or flight names where vouchers were used

  • Guest details - Email addresses of guests who used vouchers

  • Discount amounts - Total discount applied per usage

  • Timestamps - When each voucher was redeemed

Quick Start

No parameters required. Returns complete usage history for all vouchers across hotel and flight bookings, including booking details and discount amounts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description usefully enumerates what is returned (booking IDs, guest emails, discount amounts, timestamps), but for a query explicitly labeled 'complete history' it never mentions pagination, result size, or whether the whole dataset is dumped in one response.

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?

Headings make it scannable and the key point is front-loaded, but the content is padded for a no-argument tool: the 'Quick Start' paragraph largely restates the Overview and 'What You Get' sections, so several sentences do not earn their 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?

With no output schema, the 'What You Get' section appropriately carries the burden of describing the return payload, and no parameters need explaining. The main gap is the absence of any note on result volume or pagination for an unbounded 'all redemptions' query.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description correctly states 'No parameters required,' which matches the empty schema, and adds no misleading parameter claims.

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 states a specific verb and resource: 'Get a complete history of all voucher redemptions across your system, showing which vouchers were used, when, and for which bookings.' This distinguishes it from voucher-definition siblings like get_vouchers and get_vouchers_voucherid by emphasizing redemption records, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

The 'When to Use' section lists scenarios (usage analytics, performance reporting, audit trail, marketing insights) that imply context, but these are generic business purposes rather than decision guidance. It never says when to prefer this over get_vouchers_voucherid for a single voucher or get_guests_guestid_vouchers for per-guest usage.

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

get_vouchers_voucheridA
Read-onlyIdempotent
Inspect

Overview

Get complete details for a specific voucher by its ID, including discount rules, validity, and usage information.

When to Use

  • Voucher lookup - Find details for a specific voucher code

  • Validation - Verify voucher details before applying to bookings

  • Details display - Show voucher information to customers

  • Support - Look up voucher information during customer service

What You Get

  • Complete voucher details - All information about the voucher

  • Discount rules - Type, value, minimum spend, maximum discount

  • Validity information - Start/end dates and current status

  • Usage data - Current usage count and remaining uses

Quick Start

Provide the voucher ID in the URL path. Returns complete voucher information.

ParametersJSON Schema
NameRequiredDescriptionDefault
voucherIDYesUnique identifier of the voucher to retrieve

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered structurally. The description adds useful content disclosure ('What You Get') but no behavioral traits such as error cases, missing-ID behavior, or permission requirements 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.

Conciseness3/5

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

It is front-loaded and clearly sectioned, which helps scanning, but it is over-sized for a single-parameter lookup and contains tautological filler such as 'Complete voucher details - All information about the voucher' that duplicates the heading.

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 lookup with no output schema and one fully documented parameter, the description's 'What You Get' section usefully enumerates the expected return fields (discount rules, validity, usage counts). Nothing essential is missing, though pagination/error behavior is not addressed.

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

Parameters3/5

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

There is a single required parameter at 100% schema description coverage, so the schema fully documents voucherID. The 'Quick Start' line ('Provide the voucher ID in the URL path') only restates that it is a path parameter and adds no format or constraint detail beyond the schema; baseline 3 applies.

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

Purpose5/5

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

The Overview states a specific verb and resource ('Get complete details for a specific voucher by its ID') and enumerates the content scope (discount rules, validity, usage). This clearly distinguishes it from the sibling list tool get_vouchers and the history tool get_vouchers_history.

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

Usage Guidelines3/5

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

The 'When to Use' section lists four scenarios, but they are generic (lookup, validation, display, support) and read as filler rather than decision criteria. There is no guidance on when NOT to use it or when to prefer get_vouchers / get_vouchers_history instead.

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

listBookingsA
Read-onlyIdempotent
Inspect

Overview

Search for bookings by guest ID or client reference. Perfect for displaying a guest's booking history or finding bookings by your internal reference codes.

When to Use

  • Guest booking history - Show all bookings for a specific guest

  • Reference lookup - Find bookings by your internal reference codes

  • Booking management - List bookings for administrative purposes

  • Customer support - Quickly find bookings for support tickets

What You Get

  • Booking list - All matching bookings with complete details

  • Guest information - Name, email, and contact details

  • Stay details - Check-in/check-out dates and hotel information

  • Payment status - Current payment and booking status

  • Booking references - Booking IDs and confirmation codes

Search Options

  • By guest ID - Find all bookings for a specific guest

  • By client reference - Find bookings using your internal reference codes

  • By customTags - Narrow results by booking labels using customTags=KEY:VALUE,KEY2:VALUE2 (AND across keys)

  • Optional timeout - Set request timeout (default 4 seconds)

Quick Start

Provide either guestId or clientReference (or both). Returns matching bookings with full details.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestIdNo
timeoutNorequest timeout in seconds
customTagsNoFilter by customTags. Comma-separated `KEY:VALUE` pairs (e.g. `SOURCE:GOOGLE,TIER:GOLD`); all pairs are joined with AND. Keys must match `^[A-Z0-9_-]+$`, up to 5 keys, value up to 255 characters. Value matching is case-insensitive.
clientReferenceNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description usefully adds the 4-second default timeout and the AND semantics of customTags, but says nothing about result size limits, pagination, or sort order for a list-returning tool — meaningful gaps remain.

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?

Front-loaded with an Overview, which is good, but the 'What You Get' list largely restates the obvious output of a booking search and pads the definition. Headings help scanning, yet several bullets do not earn their 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?

With no output schema, the 'What You Get' section usefully describes return contents, and the search options cover the input contract. It omits whether guestId and clientReference combine as AND or OR when both are supplied, and omits pagination/limit behavior — small but real gaps for a list tool.

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

Parameters4/5

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

Schema description coverage is 50%: customTags is fully documented in the schema, while guestId and clientReference have no schema descriptions. The description compensates by documenting the either/or/both usage of guestId and clientReference and repeating the customTags KEY:VALUE format, so it adds real value over 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?

States a specific verb+resource and scope: 'Search for bookings by guest ID or client reference.' An agent knows exactly what it retrieves. It does not, however, differentiate itself from near-identical siblings such as searchBookings, get_bookings, or get_guests_guestid_bookings, so it falls short of a 5.

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

Usage Guidelines4/5

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

The 'When to Use' section gives four concrete scenarios (guest booking history, reference lookup, admin listing, support tickets), which is clear context for invocation. It stops short of exclusions or naming the alternative sibling tools to use instead, so it cannot reach 5.

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

post_analytics_hotelsB
Read-only
Inspect

Overview

Get a ranked list of your top-performing hotels by booking volume and sales. Perfect for identifying your best-selling properties.

When to Use

  • Hotel performance dashboards - Show top hotels by bookings

  • Sales analysis - Identify highest-revenue properties

  • Inventory insights - Understand which hotels drive business

  • Partnership optimization - Focus on high-performing hotel relationships

What You Get

  • Hotel rankings - Hotels sorted by total bookings

  • Booking counts - Total bookings per hotel

  • Sales totals - Revenue generated per hotel

  • Location data - City and country for each hotel

  • Hotel identifiers - Hotel ID and name for reference

Quick Start

Provide a date range. Returns hotels ranked by total bookings, including booking counts, sales, and location information.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd date YYYY-MM-DD (ISO 8601)
fromYesStart date YYYY-MM-DD (ISO 8601)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the ranking dimension and the returned fields, but says nothing about result limits, pagination, aggregation window behavior, or auth requirements — modest added value over 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.

Conciseness3/5

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

Front-loaded with a clear overview, which is good, but the content is heavily padded: 'Perfect for identifying your best-selling properties' is marketing filler, and the Quick Start section largely restates the Overview. The 'What You Get' list is useful given there is no output schema, but the overall piece is longer than its information content warrants.

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

Completeness4/5

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

With no output schema, the 'What You Get' section genuinely earns its place by enumerating the return shape: hotel rankings, booking counts, sales totals, city/country, and IDs. That covers the main gap. It would be complete with a note on result caps, ranking tie-breaks, or whether the date range is inclusive.

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% for both date parameters, each documented as ISO 8601 YYYY-MM-DD in the schema itself. The description only says 'Provide a date range,' adding no format, boundary, or timezone semantics beyond what the schema already provides, so the baseline of 3 applies.

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

Purpose4/5

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

The overview states a specific verb and resource: 'Get a ranked list of your top-performing hotels by booking volume and sales.' This is concrete enough to distinguish it from generic booking-retrieval siblings, but it never differentiates itself from close neighbors like get_bookings_hotels_sales_report or post_analytics_report, which the agent must disambiguate on its own.

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

Usage Guidelines3/5

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

The 'When to Use' section supplies scenario contexts (dashboards, sales analysis, inventory insights, partnership optimization) but frames them as audiences rather than conditions. It names no alternatives and gives no exclusion criteria, so the agent gets implied usage rather than routing guidance.

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

post_analytics_marketsB
Read-only
Inspect

Overview

Analyze your bookings and sales by customer nationality/market. Understand which countries drive the most business.

When to Use

  • Market analysis - Identify top-performing markets

  • Geographic insights - Understand customer distribution

  • Marketing optimization - Focus efforts on high-value markets

  • Business intelligence - Track performance by nationality

What You Get

  • Sales by nationality - Total sales per customer country

  • Booking counts - Number of bookings per market

  • Currency information - Sales currency for each market

  • Ranked results - Markets sorted by performance

Quick Start

Provide a date range. Returns sales and booking data grouped by customer nationality (ISO country code).

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd date for the market analytics YYYY-MM-DD (ISO 8601)
fromYesStart date for the market analytics YYYY-MM-DD (ISO 8601)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=false and destructiveHint=false, so the safety profile is covered and the POST-verb/read-only pairing is not contradictory. The description adds useful disclosure about result content (sales, booking counts, currency, ranked ordering), which matters because there is no output schema. It does not mention permissions, timezone handling, result size limits, or pagination.

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

Conciseness3/5

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

It is well front-loaded and sectioned, so an agent can scan it quickly, but the content is padded: 'Business intelligence - Track performance by nationality' merely restates the overview, and 'Ranked results - Markets sorted by performance' duplicates 'Ranked results'. Several bullets could be merged without losing information.

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

Completeness4/5

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

With no output schema, the description usefully compensates by enumerating the returned fields (sales by nationality, booking counts, currency, ranked ordering) and the grouping key (ISO country code). Combined with the required date range, an agent has enough to call it correctly. It is only slightly short on operational detail such as timezone and maximum range.

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%: both 'from' and 'to' are documented in the schema with the YYYY-MM-DD ISO 8601 format. The description only restates 'Provide a date range' and adds no format, timezone, or range-bound semantics beyond that. Baseline 3 is correct when the schema carries the parameter documentation.

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 overview states a specific verb and resource: analyze bookings and sales grouped by customer nationality/market. That is enough to separate it from post_analytics_hotels and post_analytics_weekly by subject matter. However, it never acknowledges the near-duplicate siblings get_bookings_guest_nationality_report and get_bookings_source_markets_report, so the distinction from those is left to the agent to guess.

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

Usage Guidelines3/5

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

The 'When to Use' block lists business scenarios (market analysis, geographic insights, marketing optimization) but none of them are tool-selection criteria — they describe what the output is good for, not when this tool beats an alternative. With several overlapping market/nationality report siblings present, the absence of any routing guidance is a real gap. Usage is implied at best.

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

post_analytics_reportA
Read-only
Inspect

Overview

Get comprehensive analytics covering sales, bookings, commissions, and revenue for your date range. This is your complete business intelligence endpoint.

When to Use

  • Executive dashboards - Complete business overview

  • Financial reporting - Track revenue, sales, and commissions

  • Booking analysis - Monitor confirmed vs cancelled bookings

  • Performance tracking - Daily breakdowns of key metrics

What You Get

  • Sales revenue - Daily sales totals with currency

  • Booking counts - Confirmed and cancelled bookings per day

  • Commission data - Commission earned per day

  • Revenue breakdown - Total revenue calculations

  • Aggregated totals - Summary statistics for the entire period

Key Features

  • Daily granularity - See day-by-day performance

  • Multiple currencies - Currency information included

  • Complete metrics - Sales, bookings, commissions, and revenue in one response

  • Time-series ready - Data formatted for easy charting

Quick Start

Provide start and end dates. Returns detailed daily analytics plus aggregated totals for the period.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd date for the report YYYY-MM-DD (ISO 8601)
fromYesStart date for the report YYYY-MM-DD (ISO 8601)

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds genuinely new behavioral context that the annotations cannot express: daily granularity, per-day confirmed/cancelled booking counts, per-day commission figures, currency inclusion, and aggregated period totals – which matters because there is no 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.

Conciseness2/5

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

At roughly 200 words across five markdown sections, the description is bloated and self-repeating: 'What You Get' and 'Key Features' both re-list sales, bookings, commissions and revenue, and the Overview already said the same thing. The front-loading is good, but much of the content does not earn 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?

With no output schema, the description carries the burden of describing results, and it does so credibly (daily sales, confirmed/cancelled counts, commissions, aggregated totals). What is missing for a reporting endpoint is whether the range is bounded, how timezone/currency selection works, and whether results can be large – but nothing essential to invoking it correctly is absent.

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 both parameters (from, to) are documented in the schema with ISO 8601 YYYY-MM-DD format. The description only repeats 'Provide start and end dates', adding no syntax, range limits, or timezone guidance, so this is the baseline case where the schema does the work.

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 Overview states a specific verb and resource ('Get comprehensive analytics covering sales, bookings, commissions, and revenue for your date range') and the scope (daily granularity for a date range), which distinguishes it from most data-lookup siblings. However, it never names the closely overlapping analytics siblings (post_analytics_hotels, post_analytics_markets, post_analytics_weekly, post_commissions_report), so the agent must infer why this one is 'complete' rather than specialized.

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

Usage Guidelines3/5

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

The 'When to Use' section lists contexts (executive dashboards, financial reporting, booking analysis), but those bullets largely restate the output categories rather than telling the agent when this tool wins over a sibling report. There is no exclusion, no 'use X instead when Y', and with five or more overlapping reporting tools that is a real routing gap.

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

post_analytics_weeklyA
Read-only
Inspect

Overview

Get weekly aggregated sales and booking data broken down by week. Perfect for tracking week-over-week performance trends.

When to Use

  • Weekly performance dashboards - Show sales trends by week

  • Week-over-week comparisons - Identify growth patterns

  • Business reporting - Generate weekly reports for stakeholders

  • Performance monitoring - Track weekly sales metrics

What You Get

  • Weekly sales totals - Aggregated sales revenue per week

  • Week labels - Human-readable week identifiers (e.g., "week 12")

  • Time-series data - Ordered by week for easy charting

Quick Start

Provide a date range (from and to dates). The endpoint returns sales data grouped by week within that range.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd date for the analytics data YYYY-MM-DD (ISO 8601)
fromYesStart date for the analytics data YYYY-MM-DD (ISO 8601)

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds genuinely useful behavior beyond that: the output is grouped and ordered by week, includes human-readable week labels, and reflects weekly revenue totals. It does not mention permissions, rate limits, or how weeks are bounded (Monday vs Sunday start).

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?

Structure is front-loaded with headers, but for a two-parameter read-only endpoint the markdown is padded: 'Perfect for tracking week-over-week performance trends' and the monitoring/reporting bullets largely repeat the Overview. Several sentences do not earn their 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?

With no output schema, the 'What You Get' section usefully compensates by describing the return shape (weekly totals, week labels, weekly ordering). The main remaining gap is the ambiguity of what constitutes a 'week' (start day, timezone) and behavior on empty or reversed ranges.

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 both `from` and `to` are already documented as ISO 8601 YYYY-MM-DD in the schema. The description only restates 'provide a date range (from and to dates)' without adding parsing, timezone, or boundary semantics. Baseline 3 applies when the schema does the heavy lifting.

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 states a clear verb+resource+grouping dimension: 'weekly aggregated sales and booking data broken down by week.' This implicitly separates it from siblings like post_analytics_hotels and post_analytics_markets (which group by hotel/market), but those siblings are never named, so an agent must infer the distinction from the grouping dimension alone.

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

Usage Guidelines3/5

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

The 'When to Use' section gives scenario context (dashboards, WoW comparisons, reporting, monitoring), which is useful but generic and largely restates the overview. It offers no when-not-to-use guidance and never names the sibling analytics tools (post_analytics_hotels, post_analytics_markets, post_analytics_report) that an agent must choose between.

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

post_bookings_bookingid_alternative_prebooksAInspect

Overview

Hard Amendment — Search for alternative rates at the same hotel and create ready-to-book prebook sessions for a confirmed booking. Used when the guest needs to change their check-in/check-out dates or room occupancy.

When to Use

  • Date changes — Guest needs different check-in or check-out dates

  • Occupancy changes — Guest needs a different number of adults or children

  • Hard amendments — Situations where the booking must be cancelled and re-booked with new parameters

How It Works

  1. The system searches for live availability at the same hotel with the new parameters.

  2. Up to maxPrebooks alternative rates are selected (sorted by price ascending). Defaults to 3 when omitted; capped at 10 (any larger value is silently clamped to 10).

  3. A prebook session is created for each rate.

  4. The caller receives a list of prebookId values ready to be used with POST /rates/rebook.

What You Get

  • Up to maxPrebooks prebook sessions — Each with a prebookId, final pricing, cancellation policies, and room details

  • Price comparison — priceDifferencePercent shows how each alternative compares to the original booking's selling price (negative = cheaper than what the guest paid, positive = more expensive)

  • Policy change flags — cancellationChanged and boardChanged highlight any policy differences

Completing the Amendment

Pass the chosen prebookId and the original bookingId as existingBookingId to POST /rates/rebook. On success, the new booking is created and the original booking is automatically cancelled — no separate cancellation call is needed.

Key Notes

  • The booking must be in CONFIRMED status.

  • If the original booking is non-refundable, only non-refundable alternatives are returned (unless overridden with refundableRatesOnly).

  • Payment type is honoured — only rates that support the original booking's payment type are returned. A pay-at-property booking only sees PROPERTY_PAY alternatives; every other booking (including pay-later, succeeded, credit_line) only sees NUITEE_PAY alternatives. Pay-later eligibility additionally requires a refundable rate, which is enforced automatically when the original booking was refundable.

  • The nationality and currency of the original booking are used for the availability search.

  • If the cancellation of the original booking fails after the new booking is created, the error is logged but the new booking is still returned.

Quick Start

  1. Call this endpoint with the bookingId and new occupancies/dates — get back up to maxPrebooks prebookId values.

  2. Call POST /rates/rebook with the chosen prebookId and existingBookingId — new booking confirmed, original cancelled.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkinNoThe new check-in date in YYYY-MM-DD format. Must be before `checkout`.
checkoutNoThe new check-out date in YYYY-MM-DD format. Must be after `checkin`.
boardTypeNoFilter results by board/meal-plan type (e.g. `RO` for Room Only, `BB` for Bed & Breakfast). Leave empty to return all board types.
bookingIdYes(Required) The unique identifier of the confirmed booking to amend.
maxPrebooksNoMaximum number of alternative prebook sessions to create. Defaults to 3 when omitted. Values above 10 are silently capped at 10; values ≤ 0 fall back to the default. The response may contain fewer entries when the hotel does not have enough distinct alternative offers.
occupanciesYesThe desired room occupancies for the amended stay. One entry per room.
refundableRatesOnlyNoWhen true, only fully refundable alternative rates are returned. Defaults to false (or true if the original booking was refundable).

TDQS

A4.6/5.0
Behavior5/5

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

Rich beyond the annotations: silent clamping of maxPrebooks to 10, default/≤0 fallback behavior, refundable-only restriction for non-refundable originals, payment-type honoring (PROPERTY_PAY vs NUITEE_PAY), use of original nationality/currency, and explicit partial-failure semantics ('cancellation failure logged but new booking returned'). This is consistent with readOnlyHint=false / destructiveHint=false / idempotentHint=false.

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?

Well front-loaded with Overview then When to Use / How It Works / What You Get / Key Notes. It is on the long side and some content repeats across 'How It Works', 'Completing the Amendment', and 'Quick Start', but every section carries distinct 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?

With no output schema, the 'What You Get' section fully describes the return payload (prebookId, final pricing, cancellation policies, room details, priceDifferencePercent, cancellationChanged/boardChanged). Given seven params, a mutation with open-world behavior, and async follow-up steps, the description covers everything needed 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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: maxPrebooks defaults/caps and 'sorted by price ascending', refundableRatesOnly default that depends on the original booking's refundability, and occupancy-driven search. These are behavioral semantics the schema does not convey.

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

Purpose5/5

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

States a specific verb+resource: 'Search for alternative rates at the same hotel and create ready-to-book prebook sessions for a confirmed booking,' and frames it as a 'Hard Amendment' with a one-line scenario (date/occupancy change). This lets an agent distinguish it from soft-amendment and rebook siblings without opening the schema.

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

Usage Guidelines4/5

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

The 'When to Use' section gives three concrete triggering conditions (date changes, occupancy changes, hard amendments) and the precondition (booking must be CONFIRMED). It clearly says what follows (POST /rates/rebook), though it never names a sibling like put_bookings_bookingid_amend for the soft-amendment alternative, so routing is implied rather than explicit.

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

post_commissions_reportA
Read-only
Inspect

Overview

Returns commission earnings on the account for the given date range. Each day in the range includes the total commission amount and the average commission percentage.

When to Use

  • Commission tracking - Monitor daily commission earnings

  • Revenue analysis - Understand commission as a percentage of sales

  • Financial reporting - Report commission totals and averages by day

  • Performance dashboards - Chart commission trends over time

What You Get

  • Daily amounts - Total commission earned per day

  • Daily percentage - Average commission percentage per day

  • Time-series data - One entry per day, ordered by date

Quick Start

Provide a date range (from and to) and optionally sandbox to filter by environment. Returns an array of daily commission amounts and percentages.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd date for the report YYYY-MM-DD (ISO 8601)
fromYesStart date for the report YYYY-MM-DD (ISO 8601)
sandboxNoFilter by environment: "true" for sandbox, "false" for production

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower. The description adds real value beyond that by describing the return shape in detail – one entry per day, ordered by date, with amount and average percentage – which matters specifically because no output schema exists.

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

Conciseness2/5

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

Four markdown sections for a three-parameter read tool, with heavy redundancy: the daily amount/average percentage return content is stated in the Overview, repeated in the 'What You Get' bullets, and repeated again in the Quick Start. It is front-loaded, but much of the text does not earn 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 a simple read-only date-range report with complete schema coverage, the definition covers inputs and return shape adequately. Minor gaps remain, such as timezone and how partial/missing days are handled, but nothing critical for correct 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 baseline is 3. The Quick Start section restates 'from and to' as a date range and sandbox as an environment filter, but the ISO 8601 format details and the sandbox true/false semantics live entirely in the schema, so the description adds nothing new.

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

Purpose4/5

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

States a specific verb and resource: 'Returns commission earnings on the account for the given date range,' with the granularity (daily amounts and average percentage). It is distinguishable from sibling reports like post_analytics_report or get_bookings_hotels_sales_report by subject matter, though it never names a sibling explicitly.

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

Usage Guidelines3/5

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

The 'When to Use' section gives four scenarios (commission tracking, revenue analysis, financial reporting, dashboards), which qualifies as implied usage context. It offers no when-not-to-use guidance and never points to an alternative report tool, so an agent choosing among the many reporting siblings gets no routing help.

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

post_data_hotel_highlightsAInspect

Overview

Beta Feature - Generate short, AI-written "Smart Highlight" cards for a hotel. Each highlight is a title plus a one or two sentence description, generated directly in the requested language.

Rate Limiting: This endpoint is rate-limited to 10 requests per minute per API key for both sandbox and production API keys. Exceeding this limit will result in a 429 Too Many Requests response.

When to Use

  • Hotel detail pages - Show a few compelling reasons to consider a property

  • Partner-specific tone - Adjust voice and emphasis per surface via tone, style and per-highlight context

What You Get

  • Exactly count highlights, always, in the requested order

  • type echoed back from the request so you can map each card to your own UI

  • generated indicating whether the copy is AI-generated or template fallback

Behaviour

Hotel facts (name, city, country, description) are resolved server-side from hotelId; the caller never supplies them. Generated copy is grounded in those facts.

If AI generation fails, the endpoint still returns 200 with the requested number of neutral template highlights and generated: false. It never returns an empty array for a valid hotel.

Results are cached, so repeated calls with an identical request body return identical copy.

Note: This is a beta feature and may be subject to changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
toneNoGlobal writing guidance, e.g. `professional and inviting` or `calm and practical`.
countNoNumber of highlights to generate. If `highlights` is supplied, `count` must equal its length.
styleNoFormatting preferences such as title or description length.
hotelIdYesUnique ID of the hotel (liteAPI format)
languageYesLanguage code. Highlights are generated directly in this language.
highlightsNoPer-highlight guidance. Omit for generic generation. When supplied, its length must equal `count` and the response preserves this order.

TDQS

A4.4/5.0
Behavior4/5

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

Strong disclosure beyond the annotations: 10 req/min rate limit with the exact 429 failure, server-side resolution of hotel facts from hotelId, graceful degradation to 200 with template highlights and generated:false, and caching of identical request bodies. The caching claim sits in mild tension with idempotentHint=false and the generation-oriented readOnlyHint=false, but the description never contradicts the annotations outright and instead supplies the observable behaviour an agent needs.

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 markdown headers (Overview, When to Use, What You Get, Behaviour) make it scannable and the beta/rate-limit warning is front-loaded. It is longer than strictly necessary and repeats a couple of points between 'What You Get' and 'Behaviour', but nearly every sentence carries usable 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?

With no output schema, the description correctly carries the return-value burden: exactly count highlights, the echoed type field, and the generated flag distinguishing AI copy from template fallback. Combined with rate-limit, fallback, and caching behaviour, an agent has everything needed to call this tool correctly and interpret the response.

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

Parameters4/5

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

Schema description coverage is already 100%, so the baseline is 3, but the description adds response-mapping semantics not present in the schema: 'type' is echoed back so cards can be mapped to a UI, exactly count highlights are always returned in order, and highlights entries are treated as topic guidance only (unsupported claims are not invented). That clarifies how inputs shape outputs, which the schema alone does not.

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 and output artifact: generate short AI-written 'Smart Highlight' cards (title + one or two sentence description) for a hotel, in a requested language. This is clearly distinguishable from sibling tools like get_data_hotel, get_data_hotel_ask, or get_data_reviews, which retrieve factual content rather than generate copy.

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 'When to Use' section gives concrete surfaces (hotel detail pages, partner-specific tone via tone/style/per-highlight context), which is stronger than most definitions. It does not, however, name any alternative tool or state when NOT to use it (e.g., when plain factual hotel data is wanted), so it falls short of explicit routing guidance.

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

post_flights_bookingsAInspect

Overview

Complete a flight reservation by confirming a prebook and processing payment. This is the final step in the booking flow.

When to Use

  • Final booking confirmation - Convert a prebook into a confirmed booking

  • Payment completion - Confirm with Stripe (TRANSACTION_ID), bill an enabled credit line (CREDIT), or pay with a credit card (CREDIT_CARD via the secure endpoint)

  • After service selection - Book after optionally attaching seats or baggage via the services endpoint

What You Get

  • Confirmed booking with a unique booking ID

  • Payment confirmation with transaction details

  • Full itinerary including all segments and passenger assignments

  • Provider confirmation reference number

Key Features

  • Idempotent: Returns the existing booking (HTTP 200 + data[0].message) if one already exists for the given prebookId. Transient book failures are retried in place without exposing a terminal failure status. Concurrent duplicate requests while a book is in progress return HTTP 409 (45035).

  • Payments: Stripe uses transactionId from prebook or attach-services after SDK confirmation; credit line uses CREDIT with server-side eligibility checks; CREDIT_CARD charges the provided card immediately — send card details in billingInfo via https://pci-book.liteapi.travel (contact the team to enable this on your API key)

  • Provider confirmation: Finalizes the reservation on the provider side

Quick Start

Required fields: prebookId (from POST /flights/prebooks), payment with method and, for Stripe, transactionId

Tip: If you used POST /flights/prebooks/{prebookId}/services to attach ancillary services, use the new transactionId from that response, not the original prebook transactionId.

ParametersJSON Schema
NameRequiredDescriptionDefault
paymentYesPayment for `POST /flights/bookings`: Stripe (`TRANSACTION_ID` + `transactionId`), credit line (`CREDIT`), whitelabel/CMI (`THIRD_PARTY` + `token`), or direct card via the secure endpoint (`CREDIT_CARD` + `billingInfo`).
metadataNoOptional. Encapsulates essential booking metadata, including IP, location, language, device details, and marketing parameters.
prebookIdYesThe prebookId returned by `POST /flights/prebooks` (prebook must have completed the book step).
customTagsNoOptional bag of up to 5 user-defined key/value labels persisted with the booking. Keys must match `^[A-Z0-9_-]+$` (uppercase letters, digits, `-`, `_`). Values are arbitrary strings up to 255 characters.

TDQS

A3.8/5.0
Behavior1/5

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

The description explicitly labels the tool 'Idempotent' and describes returning the existing booking for a given prebookId, while the annotations declare idempotentHint=false. This is a direct contradiction between description and structured data, which forces the lowest score regardless of the otherwise rich behavioral detail (409/45035 concurrency handling, transient retries, payment flows).

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?

Organized into scannable Overview / When to Use / What You Get / Key Features / Quick Start sections with the required fields front-loaded at the end. It is long, but nearly every sentence carries actionable content; minor redundancy between the Overview and Key Features sections keeps it from a 5.

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 complex payment/finalization tool with nested objects and no output schema, the description covers the booking flow position, required fields, idempotency, concurrency errors, retry behavior, and all four payment paths. An agent has enough to invoke it correctly without opening sibling tools.

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, but the description adds genuine operational meaning beyond the schema: which payment methods map to which fields, that CREDIT_CARD details go through the secure PCI endpoint, and the tip to use the new transactionId from the services endpoint rather than the prebook one.

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

Purpose5/5

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

States a specific verb+resource and scope: 'Complete a flight reservation by confirming a prebook and processing payment. This is the final step in the booking flow.' An agent can immediately distinguish this from read siblings like get_flights_bookings and the earlier post_flights_prebooks step.

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 'When to Use' section gives clear triggering conditions (final confirmation, payment completion, after service selection) and references the prebook and services endpoints that precede this call. It does not explicitly name an alternative sibling to use instead, or state when not to call it, so it falls short of full routing guidance.

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

post_flights_bookings_bookingid_cancellationsAInspect

Overview

Cancels a flight booking. Submits cancellation for an existing booking and returns the cancellation outcome. Call GET /flights/bookings/{bookingId}/cancellations first to preview the financial impact without committing.

If cancellation is accepted but not yet confirmed, this endpoint returns HTTP 202 with status: CONFIRMED (the booking is unchanged until the airline finalizes). Retries while cancellation is still pending are idempotent. While cancellation is awaiting confirmation, a subsequent GET /flights/bookings/{bookingId} includes cancelIntentAt (timestamp of the cancel request). When cancellation completes, the response is HTTP 200 with a final status of CANCELLED or CANCELLED_WITH_CHARGES. All asynchronous cancellation updates are delivered as webhook events — subscribe to flight booking webhooks to receive final confirmation and status changes.

When to Use

  • Confirmed cancellation — Cancel the booking with the airline after the cancel quote has been reviewed and agreed

What You Get

  • bookingId — The LiteAPI booking identifier

  • status — Current booking status: CONFIRMED while cancellation is awaiting airline confirmation (HTTP 202), or final CANCELLED / CANCELLED_WITH_CHARGES (HTTP 200)

  • cancellation_fee — Total cancellation penalty; often 0 on idempotent pending retries

  • refund_amount — Amount to be returned (if any)

  • currency — Currency of the fee and refund amounts

  • destination — Where refunded money goes (original_payment, agency_deposit, voucher, etc.)

  • vouchers[] — Airline travel vouchers when issued in lieu of cash; omitted when absent

Key Features

  • Hotel-parity response — Flat data object with bookingId, status, cancellation_fee, refund_amount, currency, plus optional destination / vouchers

  • Pending cancel intent — HTTP 202 when the airline accepts the cancel but has not confirmed it yet; booking stays CONFIRMED until cancellation is finalized, and GET /flights/bookings/{bookingId} returns cancelIntentAt

  • Fee-based final status — When cancellation completes (HTTP 200), the final status depends on cancellation_fee: if the fee is 0, the booking is fully cancelled (CANCELLED); if the fee is greater than 0, the booking is cancelled with charges retained (CANCELLED_WITH_CHARGES)

Quick Start

Provide the bookingId from POST /flights/bookings in the URL path. No request body is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookingIdYesThe unique booking identifier

TDQS

A4.1/5.0
Behavior2/5

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

The description discloses a lot beyond the annotations: HTTP 202 vs 200 semantics, cancelIntentAt on the follow-up GET, webhook delivery, and final status derivation from cancellation_fee. However, it states 'Retries while cancellation is still pending are idempotent', which conflicts with the annotation idempotentHint=false, so an agent could wrongly assume retry safety. That direct conflict with structured metadata is what caps this dimension.

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?

It is front-loaded with an Overview that leads with the action, which is good, but it is heavily padded with markdown headers and repeated content — the status semantics and pending-cancel behavior are explained in both 'What You Get' and 'Key Features'. For a single-parameter tool this is longer than it needs to be.

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?

There is no output schema, and the description compensates fully by enumerating the response fields (bookingId, status, cancellation_fee, refund_amount, currency, destination, vouchers[]) and explaining the asynchronous confirmation flow. Nothing an agent needs to invoke or interpret this endpoint 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% and there is only one parameter, so the schema already carries the baseline. The description still adds value by stating the parameter is a URL path segment taken from POST /flights/bookings and that no request body is required, which the schema does not express.

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 opening line states a specific verb and resource ('Cancels a flight booking') and immediately distinguishes the action from the read-only preview sibling by telling the agent to call GET /flights/bookings/{bookingId}/cancellations first. An agent can tell exactly what this does without opening the schema.

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

Usage Guidelines5/5

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

The 'When to Use' section gives the explicit precondition for calling ('after the cancel quote has been reviewed and agreed') and routes the agent to the preview endpoint (get_flights_bookings_bookingid_cancellations) for the non-committing case. When-to-use, when-not-to-use, and the alternative are all present.

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

post_flights_prebooksAInspect

Overview

Initiate a flight booking session by reserving the offer with the provider, creating a payment intent when you use the Stripe SDK, and discovering available ancillary services — all in a single request.

When to Use

  • Start the booking flow once a user has confirmed their flight selection

  • Collect passenger details and initiate payment processing

  • Discover add-ons like seat selection and extra baggage before final confirmation

What You Get

  • Prebook ID required to complete the booking at /flights/bookings

  • Payment intent (transactionId, secretKey) when usePaymentSdk is true — for Stripe SDK integration

  • Credit line snapshot (creditLine in the response) when you set includeCreditBalance: true and your account has an enabled credit line with payment bypass

  • Available services (servicesAttachable) including seats and baggage options

  • Booking confirmation from the provider with reservation details

Key Features

  • End-to-end prebook flow: Verifies offer → payment setup (Stripe payment intent or credit line) → books with provider → fetches services

  • Payment options: usePaymentSdk: true uses the Stripe SDK. usePaymentSdk: false is allowed when your user has payment bypass (sandbox or whitelabel) and either an enabled credit line or a whitelabel/CMI checkout (no Stripe intent; complete payment via WL and call /flights/bookings with payment.method: THIRD_PARTY and payment.token)

  • Ancillary services: Returns attachable services (seats, baggage) that can be added before final booking

  • Same shape as /book: Uses offerId instead of prebookId

Quick Start

Required fields: offerId (from search/verify), contact (name, email, phone), passengers (with birthday, document, and name details).

Payment: Send usePaymentSdk: true for Stripe (typical). Send usePaymentSdk: false when paying on credit line or via whitelabel/CMI (requires payment bypass); otherwise you receive a validation error.

Tip: Use the servicesAttachable in the response to offer seat selection or extra baggage before calling /flights/bookings.

ParametersJSON Schema
NameRequiredDescriptionDefault
contactYesPrimary contact person for the booking (receives confirmation emails)
offerIdYesThe offerId from the search results (msgpack-encoded; unpacks to provider offerId)
paymentNoPayment configuration options
passengersYesList of passengers travelling. Length must match the adults+children+infants counts from the search.
voucherCodeNoAn optional voucher code to apply discounts to the booking. The vouchers API allows creation of these discounts
travelPurposeNoOptional purpose of the trip.
usePaymentSdkNoIf true, a Stripe payment intent is created (`transactionId`, `secretKey`). If false, payment bypass must apply and the account must use credit line or whitelabel/CMI checkout (no Stripe intent); otherwise the request is rejected.
includeCreditBalanceNoOptional flag to include credit line information in the response. When set to true, credit line details will be returned if the user has a credit line available.

TDQS

A4.8/5.0
Behavior5/5

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

Although annotations already declare readOnly=false and openWorld=true, the description adds behaviour those hints cannot: the call actually books with the provider, creates a Stripe payment intent, requires entitlement (payment bypass / enabled credit line) or it 'receives a validation error', and returns a prebook ID plus payment secret. Concurrency is the only gap (non-idempotent retry semantics are not spelled out).

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?

Headers, bullets and a front-loaded Overview make it skimmable, and the Quick Start puts required fields and payment mode in one place. It is verbose for the job, though, with genuine duplication between 'Key Features' and 'Quick Start' (the usePaymentSdk true/false explanation appears three times).

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

Completeness5/5

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

With no output schema, the description carries the return burden and does so: prebook ID, `transactionId`/`secretKey`, `creditLine`, `servicesAttachable`, and provider confirmation. Combined with the workflow position and payment prerequisites, an agent has everything needed to call it correctly in sequence.

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 baseline is 3, but the description adds real meaning: `offerId` must come 'from search/verify', `passengers` length must match search counts is schema-side, and the description explains the conditional semantics of `usePaymentSdk` and what `includeCreditBalance` returns (`creditLine` snapshot). It largely restates required-field lists the schema already carries.

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 precise verb+resource statement: 'Initiate a flight booking session by reserving the offer with the provider...' and enumerates the three concrete actions (reserve, create payment intent, discover ancillaries). It explicitly distinguishes itself from the sibling endpoints it hands off to (`/flights/bookings`, search/verify), so an agent can place it in the booking flow without reading the schema.

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

Usage Guidelines5/5

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

The 'When to Use' section states the triggering condition ('once a user has confirmed their flight selection') and the follow-on step, and the payment section gives explicit when-this/when-that rules for `usePaymentSdk: true` vs `false` (payment bypass + credit line or whitelabel/CMI, else validation error). Alternatives and their preconditions are named rather than implied.

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

post_flights_prebooks_prebookid_servicesAInspect

Overview

Add ancillary services such as seat selection or extra baggage to an existing prebook before confirming the final booking.

When to Use

  • Seat selection - Allow users to choose specific seats after prebook

  • Extra baggage - Let users add additional luggage allowance

  • Price update - Required when services change the total booking cost

  • Voucher discount - Optional voucherCode when attaching services changes the total and you need the discount reflected on the new payment intent

What You Get

  • Updated prebook with the selected services attached

  • New payment intent (transactionId, secretKey) reflecting the updated total price (after any voucher discount)

  • Same response format as POST /flights/prebooks for easy integration

Key Features

  • Seat selection: Assign specific seats to each passenger and segment

  • Extra baggage: Add checked baggage or overweight allowances

  • Updated payment: Creates a new Stripe payment intent when the prebook used Stripe (usePaymentSdk: true). For whitelabel/CMI prebooks (used_custom_payment_keys), no new intent is returned — re-charge via WL and submit a fresh JWT at POST /flights/bookings

  • Voucher recalculation: When a voucher applies, the discount is recomputed against the updated total (journey + ancillaries); invalid or expired vouchers return 400 (same as prebook)

  • Modifies in place: Updates the existing prebook record in the database

Quick Start

Provide the prebookId in the URL path and selectedServices in the request body. Optionally pass voucherCode to apply a discount. Use the new transactionId from this response (not the original prebook transactionId) when confirming payment with Stripe and when calling POST /flights/bookings.

ParametersJSON Schema
NameRequiredDescriptionDefault
prebookIdYesThe prebook ID (must have provider_booking_id from initial prebook)
voucherCodeNoAn optional voucher code to apply discounts to the booking. The vouchers API allows creation of these discounts
selectedServicesYesServices to attach (from servicesAttachable.groups in prebook response)

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations (readOnly=false, idempotent=false, destructive=false, openWorld=true), the description discloses the mutation semantics in depth: it modifies the prebook in place, emits a new payment intent only when usePaymentSdk was true, returns nothing new for whitelabel/CMI prebooks, and surfaces 400s on invalid/expired vouchers.

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?

Well front-loaded with headed sections that let an agent scan to the relevant part, but it is noticeably long and the 'Key Features' bullets partly restate the 'When to Use' bullets.

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

Completeness5/5

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

With no output schema, the description carries the return-value burden and does so: updated prebook, new transactionId/secretKey, and the warning to use the new transactionId when confirming with Stripe and POST /flights/bookings. Nothing essential is missing for a mutation tool.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3; the description earns extra credit by explaining that voucherCode is optional and only relevant when attaching services changes the total, and by directing selectedServices to servicesAttachable.groups in the prebook response.

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 Overview states a specific verb+resource+scope: add ancillary services (seat selection, extra baggage) to an existing prebook. It differentiates from the plain prebook flow by specifying this operates on an existing prebookId and references 'POST /flights/prebooks' only as a response-format comparison.

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 'When to Use' section enumerates the concrete cases (seat selection, extra baggage, price update, voucher discount) and the Quick Start states exactly what to pass. It also implicitly gates usage on the prebook having provider_booking_id and on Stripe vs whitelabel payment paths.

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

post_flights_ratesA
Read-only
Inspect

Overview

Search for available flights with real-time pricing from multiple providers. The itinerary must be sent as a non-empty legs array. Each leg follows the provider SearchLeg shape: required origin, destination, and date (YYYY-MM-DD); optional direction (OUTBOUND or INBOUND); optional per-leg filters that override global filters for that leg only.

Not supported: top-level origin, destination, departureDate, or returnDate — use legs only.

When to Use

  • Listings — live prices for search results UI

  • One-way, round-trip, or multi-city — one leg per segment, in order

  • Filtering — cabin class, stops, price, refundability, times (globally or per leg)

  • Streaming — incremental provider results over SSE

What You Get

  • Offers from multiple providers

  • Itineraries with segments, layovers, and durations

  • Price breakdown (fares, taxes, fees) and baggage hints

Key Features

  • Multi-provider aggregation in one request

  • SSE: send header Accept: text/event-stream on POST /flights/rates, or POST /flights/rates/stream with the same JSON body

  • Global filters, sort

Quick Start

Required: legs (at least one object with origin, destination, date), adults (≥ 1), currency

Round-trip: two legs (e.g. outbound then return with direction OUTBOUND / INBOUND). One-way: one leg.

ParametersJSON Schema
NameRequiredDescriptionDefault
legsYesOrdered itinerary legs (provider SearchLeg). One-way: one entry. Round-trip: outbound then inbound. Multi-city / open-jaw: additional legs in travel order.
sortNoSort options for results
adultsYesNumber of adults (12+)
countryNoOptional ISO 3166-1 alpha-2 country code for point of sale
filtersNoOptional filters to refine search results
infantsNoNumber of infants (<2)
childrenNoNumber of children (2-11)
currencyYesISO 4217 currency code
cabinClassNoCabin class (provider SearchFilters codes only). Same enum as filters.cabinClass.
infantAgesNoAge of each infant (under 2, per IATA). Length must equal infants count. Optional — omit if ages are not relevant.
childrenAgesNoAge of each child (2–11 inclusive, per IATA). Length must equal children count. Optional — omit if ages are not relevant.

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, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds genuinely useful behavioral context the annotations cannot convey: multi-provider aggregation, SSE streaming via Accept header or the /stream path, and that per-leg filters override global filters. It does not mention rate limits or provider-specific quirks, keeping it short of a 5.

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?

Markdown headers give good structure and the Overview is front-loaded, but the required parameters (legs, adults, currency) are restated across Overview, Key Features, and Quick Start, and the 'What You Get' section partially duplicates what the schema already implies. It is informative but longer than it needs to be.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does so with a 'What You Get' section covering offers, itineraries, and price breakdowns. Combined with streaming and filter behavior, it is nearly complete for an 11-parameter tool, missing only error/empty-result behavior to reach a 5.

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 earns more by explaining that legs must be non-empty, that direction accepts OUTBOUND/INBOUND, and that per-leg filters override global ones. The explicit exclusion of top-level origin/destination/departureDate/returnDate adds meaning beyond the schema by steering agents away from invalid shapes.

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?

Opens with a specific verb+resource+scope: 'Search for available flights with real-time pricing from multiple providers.' It distinguishes itself from sibling tools like post_hotels_rates and get_flights_bookings, and the 'Not supported' note rules out common misuses. An agent knows exactly what this tool does.

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?

'When to Use' explicitly enumerates listings, one-way/round-trip/multi-city, filtering, and streaming. The 'Not supported' section gives a clear negative condition (no top-level origin/destination) and the Quick Start gives concrete input shapes, so when-to-use and when-not-to-use are both covered.

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

post_flights_verifyA
Read-only
Inspect

Overview

Confirm a flight offer is still available and retrieve the latest pricing before proceeding to booking. Always verify before prebooking to avoid price discrepancies.

When to Use

  • Pre-booking validation - Confirm offer availability after user selects a flight

  • Price confirmation - Show users the guaranteed price before they enter payment details

  • Fare rule retrieval - Get the latest cancellation and change policies

What You Get

  • Verified pricing with up-to-date fare breakdown

  • changes (when present) — cabin/fare flags, human-readable messages, and pricing (old / new full OfferPricing) instead of deprecated scalar currency/prices

  • Journey pricing — original (provider/PCC) and display (customer) price breakdown per provider FlattenedJourney

  • Fare family details including name and included amenities

  • Baggage policy for each passenger type and segment

  • Booking terms including cancellation and change fee rules

Key Features

  • Real-time price check: Confirms current availability and price with the provider

  • Updated baggage info: Returns the latest baggage allowances at time of verification

  • Fare rules: Includes cancellation and change fee policies before commitment

Quick Start

Provide the offerId from /flights/rates search results. Use the verified offer data to populate a booking summary page before proceeding to /flights/prebooks.

ParametersJSON Schema
NameRequiredDescriptionDefault
offerIdYesThe offerId from the search results

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, and open-world, so the safety profile is covered. The description adds real behavioral value beyond that: it is a live provider round-trip ('Real-time price check'), warns that prices can drift ('avoid price discrepancies'), and documents the `changes` payload replacing deprecated scalar currency/prices fields.

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?

Front-loaded with an Overview, but the body is padded and repetitive: 'Real-time price check', 'Fare rules', and baggage/price confirmation information are restated across Overview, What You Get, and Key Features. The markdown structure helps navigation but several sections earn less than their length.

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

Completeness4/5

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

With no output schema, the description legitimately carries the return-shape burden and does so in detail (pricing breakdown, journey pricing, fare family, baggage, booking terms). It still omits error handling, auth/permission needs, and rate limits for a live provider call.

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?

Only one parameter with 100% schema coverage; the schema already documents offerId. The description adds the source endpoint ('/flights/rates') and the downstream use ('populate a booking summary page'), which is marginally useful, but the schema does 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 Overview states a specific verb and resource ('Confirm a flight offer is still available and retrieve the latest pricing') and situates it in the booking pipeline ('before proceeding to booking'). Combined with the sibling list, an agent can distinguish this from post_flights_rates (search) and post_flights_prebooks (booking) without opening a schema.

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

Usage Guidelines4/5

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

The 'When to Use' section gives three concrete situations (pre-booking validation, price confirmation, fare rule retrieval) plus a 'Quick Start' naming the source endpoint. It lacks explicit when-not-to-use or named alternatives, which caps it below a 5.

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

post_guests_guestid_loyalty_points_redeemBInspect

Overview

Convert a guest's loyalty points into a discount voucher. Points are converted at a rate of 10 points = $1 USD (or equivalent in the specified currency).

When to Use

  • Points redemption - Allow guests to convert points to vouchers

  • Reward fulfillment - Create discount vouchers from points

  • Loyalty rewards - Enable points-to-cash conversion

What You Get

  • Voucher code - Unique code the guest can use for discounts

  • Voucher details - Discount type, value, validity period, and usage limits

  • Fixed amount voucher - Voucher with a specific discount value

  • Shareable voucher - Can be used by other guests

Key Features

  • Conversion rate - 10 points = $1 USD (or equivalent)

  • Currency support - Specify the currency for the voucher value

  • Shareable - Vouchers can be shared with other guests

  • Fixed amount - Creates a fixed discount amount voucher

Quick Start

Provide the guest ID and specify points (amount to redeem) and currency (e.g., "USD"). Returns a voucher code and details.

ParametersJSON Schema
NameRequiredDescriptionDefault
pointsYesAmount of points to redeem. 10 points = $1 USD.
guestIdYesNumeric ID of the guest to fetch
currencyYesCurrency in which the voucher value will be calculated.

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the mutation/repeatability profile is covered by structured data. The description adds the conversion rate and currency handling, which is genuine behavioral context, but says nothing about irreversibility of the point deduction, failure modes (insufficient points), or authorization needs.

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

Conciseness2/5

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

The Overview is correctly front-loaded, but the following sections are heavily padded and repetitive: the conversion rate appears three times, 'currency support' twice, and 'shareable'/'fixed amount' are each stated twice. Bullet headings like 'Reward Fulfillment - Create discount vouchers from points' duplicate the preceding bullet verbatim in meaning.

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

Completeness4/5

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

With no output schema, the 'What You Get' section usefully describes the returned voucher code and details, and the Quick Start covers required inputs, so an agent has enough to call it. It stops short of covering error conditions or whether the debit is atomic, which for a points-consuming mutation would be valuable.

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 all three parameters are documented in the schema, so the baseline is 3. The description's Quick Start restates points and currency without adding format constraints, bounds, or valid-currency guidance beyond what the schema already provides.

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 Overview states a specific verb and resource: convert a guest's loyalty points into a discount voucher, with a concrete conversion rate (10 points = $1). It is clear enough to act on, but it never distinguishes itself from nearby siblings like post_vouchers or get_guests_guestid_loyalty_points, so an agent must infer the boundary.

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

Usage Guidelines2/5

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

There is a 'When to Use' heading, but its three bullets ('points redemption', 'reward fulfillment', 'loyalty rewards') are the same action restated with different labels rather than distinct scenarios. No exclusions, no prerequisites (e.g., whether the guest must have sufficient balance), and no named alternative tool.

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

post_hotels_min_ratesA
Read-only
Inspect

Overview

Get the cheapest available rate for each hotel in your list. Perfect for displaying price comparisons without loading full rate details.

When to Use

  • Show price ranges on hotel listing pages

  • Quick price comparisons across multiple hotels

  • Optimize performance when you only need the lowest price, not all rate options

  • Build price filters or sorting by price

What You Get

  • Minimum rate per hotel - the cheapest available room option

  • Basic rate information - price, currency, and availability

  • Fast response - optimized for quick price lookups

Key Features

  • Lightweight - Returns only the minimum rate, not all options

  • Same parameters as the main rates endpoint for consistency

  • Perfect for listings - Ideal when displaying multiple hotels where users just need to see starting prices

Quick Start

Provide a list of hotel IDs, dates, and guest occupancy. The endpoint returns the cheapest rate available for each hotel.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkinYesCheck in date in YYYY-MM-DD (ISO 8601) format
timeoutNoRequest timeout in seconds
checkoutYesCheck out date in YYYY-MM-DD (ISO 8601) format
currencyYesBooking currency
hotelIdsYesList of hotel IDs
occupanciesYes
guestNationalityYesGuest nationality (ISO 2-code)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, and idempotentHint=false, covering the safety profile. The description adds useful behavioral context beyond annotations: it explains the return content (minimum rate, basic price/currency/availability) and emphasizes lightweight, fast responses.

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 description is front-loaded with an Overview, but it is bloated with redundant marketing phrases across multiple sections (e.g., 'Perfect for displaying price comparisons', 'Lightweight', 'Fast response', 'Ideal when displaying multiple hotels'). Each sentence does not earn its place, though the heading structure itself is clear.

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

Completeness4/5

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

With no output schema, the description usefully outlines the return shape (minimum rate, price, currency, availability) and overall purpose. Combined with rich annotations and 86% schema coverage, it is nearly complete for a read-only price lookup, though it omits minor operational details like timeout behavior or batch limits.

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 86%, so the schema itself documents nearly all parameters. The description only briefly mentions 'hotel IDs, dates, and guest occupancy' in Quick Start, adding little semantic detail beyond the structured fields.

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+resource: 'Get the cheapest available rate for each hotel in your list.' It distinguishes from the fuller sibling endpoint by contrasting 'without loading full rate details' and 'main rates endpoint'.

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?

A dedicated 'When to Use' section gives clear scenarios (price ranges, comparisons, performance optimization, price filters) and an implicit exclusion when full rate options are needed. However, it does not name the alternative tool (e.g., post_hotels_rates) explicitly.

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

post_hotels_ratesA
Read-only
Inspect

Overview

Search for hotel rates and availability across multiple hotels. This is your primary endpoint for finding bookable hotel rooms with real-time pricing.

When to Use

  • Display hotel listings with prices on your search results page

  • Show detailed rate options for specific hotels users are viewing

  • Support multi-room bookings for families or groups

  • Filter hotels by location, amenities, ratings, or AI-powered semantic search

What You Get

  • Real-time rates with availability and pricing

  • Multiple room options per hotel, sorted by price

  • Complete booking details including cancellation policies, meal plans, and room types

  • Hotel information (name, photos, address, ratings) when searching by filters

Key Features

  • Multiple search methods: Search by hotel IDs, city/country, coordinates, Place ID, IATA code, or natural language (AI search)

  • Flexible filtering: Filter by star rating, facilities, hotel chains, accessibility, and more

  • Multi-room support: Book multiple rooms with different guest configurations in one request

  • Performance optimized: Default limit of 200 hotels (expandable to 5,000), recommended timeout of 6-12 seconds

  • Price consistency: Optional sessionId ensures rates stay consistent across listing and detail searches within a user session (accounts with price consistency enabled)

Quick Start

Required fields: checkin, checkout, currency, guestNationality, occupancies, plus one location method (hotel IDs, city/country, coordinates, Place ID, or IATA code)

Tip: When searching by filters (like aiSearch or cityName), hotel data is automatically included. For direct hotel ID searches, set includeHotelData=true to include hotel names and photos.

Price consistency: Generate a unique sessionId per user search session and include it on every rates request in that session, using the same checkin, and checkout.

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNoThe zip code of the search location. This is a filter on top of the main query.
feedNoWhich feed to use when searching for rates. This applies only to accounts with multiple feeds enabled
sortNoSorting criteria for the results. Multiple criteria can be provided, processed in order. The default sorting is by top picks (weighted by search popularity, review quality, and content completeness). Use 'revenue' to sort by historical booking value and monetary performance.
limitNoThe maximum number of results to return. Defaults to 200, max allowed is 5000.
marginNoOverride the markup percentage for this specific request. When provided, this value takes precedence over your account-level margin setting, allowing you to dynamically adjust pricing based on your business logic, customer segments, or other factors. Specified as a percentage number (e.g., `10` for 10% commission).
offsetNoThe number of results to skip for pagination. This paginates the passed hotels not the results returned so the actual returned results will vary.
radiusNoThe search radius in meters for location-based searches. Pairs with latitude to do a lat/long search.
streamNoIf true, enables streaming mode where response data is sent incrementally instead of as a single payload.
checkinYesThe check-in date in YYYY-MM-DD format (ISO 8601).
placeIdNoThe unique Place ID of the search location. Instead of using hotel IDs, pass a Place ID to get all the hotels in the specified region. This is a valid main query.
timeoutNoThe maximum time in seconds before the request times out. This is when the live request for rates will cut off responses; it will take a few more ms to return the value.
aiSearchNoAI-powered hotel search based on a natural language query. Uses semantic search to find hotels matching the query intent. Examples: 'Romantic getaway with Italian vibes in London near the London Eye', 'hotels near Paris'. This is a valid main query.
bedTypesNoFilter results by bed types extracted from room names. Only rates from rooms matching the specified bed types will be returned. Example values: 'double', 'twin', 'king', 'queen', 'single'.
chainIdsNoAn array of hotel chain IDs to filter the search results. This is a filter on top of the main query.
checkoutYesThe check-out date in YYYY-MM-DD format (ISO 8601).
cityNameNoThe name of the city to search for hotels in. Pairs with countryCode to do a country/city search.
currencyYesThe currency in which the prices will be displayed.
hotelIdsNoAn array of hotel IDs to search for availability and pricing. These are usually pulled from https://docs.liteapi.travel/reference/get_data-hotels.
iataCodeNoThe IATA code of the search location, typically an airport code. Instead of using hotel IDs, you can search by IATA code. This is a valid main query.
latitudeNoThe latitude coordinate for location-based hotel searches. Instead of using hotel IDs, you can search by lat/long and a radius around that spot. This is a valid main query.
boardTypeNoFilter results by board type(s). Can be a single value (e.g., 'BI') or comma-separated values (e.g., 'BI,HB') for OR logic. Example values: RO (Room Only), BI (Breakfast Included), HB (Half Board), FB (Full Board), AI (All Inclusive), DI (Dinner Included), LI (Lunch Included), BDI (Breakfast and Dinner Included), BLI (Breakfast and Lunch Included), LDI (Lunch and Dinner Included).
hotelNameNoA case-insensitive search for a hotel's name (e.g., 'Hilton').
longitudeNoThe longitude coordinate for location-based hotel searches. Pairs with latitude to do a lat/long search.
minRatingNoThe minimum rating (on a scale of 0-5) required for hotels in search results. This is a filter on top of the main query.
sessionIdNoOptional client-generated session identifier that ensures price consistency for the user's search session. When your account has price consistency enabled, pass the same `sessionId` with the same `checkin` and `checkout` across related requests in that session. Has no effect when price consistency is not enabled for your account.
facilitiesNoAn array of facility IDs. Results will include hotels with at least one of these facilities by default. This is a filter on top of the main query.
starRatingNoAn array of hotel star ratings to include. Ratings are rounded to the nearest half-star (e.g., [3.5, 4.0, 4.5, 5.0]). This is a filter on top of the main query.
countryCodeNoThe country code in ISO 2-letter format (e.g., 'SG' for Singapore). Instead of using hotel IDs, you can search by country/city. This is a valid main query.
occupanciesYesAn array of objects specifying the number of guests per room. Required.
roomMappingNoEnable room mapping to retrieve the mappedRoomId for each room. This allows you to link a rate to its specific room by combining it with hotel details, providing access to room images and additional information
hotelTypeIdsNoAn array of hotel type IDs to filter the search results. This is a filter on top of the main query.
roomAmenitiesNoLegacy room-level amenity filter. Only rates from rooms that match the specified amenities will be returned. Use amenityFilterLogic to control flat AND/OR behavior. If roomAmenitiesFilter is provided, it takes precedence over this field.
loyaltyProgramNoLoyalty program identifier used to request loyalty-eligible rates from supported suppliers. When set, rates that support the program may return member pricing and benefits.
minReviewsCountNoThe minimum number of reviews a hotel must have to be included in results. This is a filter on top of the main query.
guestNationalityYesThe guest's nationality in ISO 2-letter country code format.
includeHotelDataNoIf `true`, includes hotel data (name, main photo, address, rating) in the response even when searching by direct hotel IDs. By default, hotel data is only included when searching by filters (e.g., using `aiSearch`, `countryCode`, `cityName`, etc.). Setting this to `true` enables hotel data inclusion for all search types.
maxRatesPerHotelNoThe number of room rates to return per hotel, sorted by price (cheapest first). Set to 1 to just get the cheapest rate for each hotel, this is helpful for listing pages.
amenityFilterLogicNoLegacy logic applied to roomAmenities. 'AND': room must have all specified amenities. 'OR': room must have at least one specified amenity. Ignored when roomAmenitiesFilter is provided.
refundableRatesOnlyNoIf true, only refundable rates (RFN) will be included in the response.
roomAmenitiesFilterNoGrouped room-level amenity filter. Use '-' for OR within a group and ',' for AND across groups. Example: '1-2,3-4' means (1 OR 2) AND (3 OR 4). If provided, this field takes precedence over roomAmenities and amenityFilterLogic.
loyaltyProgramDetailsNoLoyalty membership details forwarded to supported suppliers to unlock member rates and benefits. Provide one entry per loyalty program membership.
strictFacilityFilteringNoIf enabled, only hotels with all specified facilities will be returned.
advancedAccessibilityOnlyNoIf true, only hotels with advanced accessibility features will be returned.

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, openWorldHint=true, idempotentHint=false, and destructiveHint=false. The description adds meaningful behavioral context beyond those annotations: default limit of 200 with a max of 5,000, recommended timeout of 6–12 seconds, sessionId price consistency, and includeHotelData behavior.

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, but its length is justified by the tool's 43-parameter search surface. It is front-loaded with an overview and organized into useful sections, though there is some repetition between 'What You Get' and 'Key Features' that could be tightened.

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

Completeness5/5

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

For a complex search endpoint with 43 parameters and no output schema, the description is complete enough: it covers required inputs, search methods, key behaviors, return content, and quick-start guidance. It does not need to restate every schema-level parameter because schema coverage is full.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds useful cross-parameter semantics by stating the required base fields and the need for one location method among hotel IDs, city/country, coordinates, Place ID, or IATA code, plus sessionId usage across related requests.

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 and resource: 'Search for hotel rates and availability across multiple hotels,' and calls itself the 'primary endpoint for finding bookable hotel rooms with real-time pricing.' This clearly distinguishes it from adjacent tools such as post_hotels_min_rates and post_rates_book.

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 'When to Use' section gives explicit usage contexts, including displaying hotel listings, showing detailed rates, supporting multi-room bookings, and filtering hotels. However, it does not name exclusion cases or point to sibling alternatives when this tool is not appropriate.

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

post_rates_bookAInspect

Overview

Step 2 of 2 in the booking flow. Complete the booking by providing guest information and payment details. This confirms the reservation and creates the final booking.

When to Use

  • After prebook - Call this after creating a prebook session

  • Payment processing - Submit payment information to confirm booking

  • Booking confirmation - Finalize the reservation

What You Get

  • Booking ID - Unique identifier for the confirmed booking

  • Hotel confirmation code - Reference code from the hotel

  • Complete booking details - Dates, pricing, room information

  • Cancellation policies - Terms for cancelling the booking

  • Guest information - Confirmed guest details

Payment Methods

  • ACC_CREDIT_CARD - Direct credit card payment. In sandbox mode, this can be used to simulate a booking without getting charged.

  • TRANSACTION - Use when using Payment SDK (provide transactionId)

  • WALLET - Wallet payment method

  • CREDIT - Use account credit balance

  • CREDIT_CARD - Credit card payment via secure endpoint. Accepts any credit or debit card, including virtual credit cards. Send card details via https://pci-book.liteapi.travel using the billingInfo object. Contact the team to enable this on your API key.

Testing

When testing sandbox bookings, simply use the ACC_CREDIT_CARD payment method. This allows you to simulate a booking without getting charged.

Required Information

  • Prebook ID - From the prebook step

  • Guest details - First name, last name, and email

  • Payment information - Payment method and details

Quick Start

Provide the prebookId, guest information (firstName, lastName, email), and payment details. Returns confirmed booking with booking ID and confirmation code.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestsYesThis represents a list of all individuals included in the hotel reservation
holderYesInformation on the person responsible for making the payment. This may not necessarily be the traveler
paymentNoSpecifies the payment method for completing the booking
timeoutNo
metadataNoEncapsulates essential metadata for fraud detection and compliance, including IP, location, language, device details, and marketing parameters.
prebookIdYesThis identifier from the pre-booking step is used to confirm a booking rate
customTagsNoOptional bag of up to 5 user-defined key/value labels persisted with the booking. Keys must match `^[A-Z0-9_-]+$` (uppercase letters, digits, `-`, `_`). Values are arbitrary strings up to 255 characters. These labels are returned on booking responses and can be used to filter the list endpoints via the `customTags=KEY:VALUE,KEY2:VALUE2` query parameter.
guestPaymentNoThe payment method used for the transaction. This determines where the money for the booking comes from. Recommended to be added when you are merchant of record to improve the fraud detection system.
clientReferenceNoAn optional client-defined reference ID acts as an idempotency key to prevent duplicate bookings. If a booking already exists with the same client reference, the API will return a 4005 error.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly=false/idempotent=false/openWorld, so the description is not carrying the safety profile. It adds real behavioral value beyond that: which payment methods exist, that ACC_CREDIT_CARD is simulation-only in sandbox (no charge), the secure-endpoint requirement for CREDIT_CARD, and the fields returned on success. It doesn't call out auth/permission requirements or rate limits.

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?

Well front-loaded with the step and flow position, but the markdown sections overlap: 'Payment Methods' and 'Testing' repeat the same sandbox guidance, and 'Required Information' and 'Quick Start' restate the same inputs. Several sentences could be merged without losing meaning.

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

Completeness4/5

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

With no output schema, the 'What You Get' section usefully describes the return shape (booking ID, hotel confirmation code, policies). For a 9-parameter mutation with nested objects, it covers the required inputs and payment semantics adequately, though guest/holder field detail is left to the schema.

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 89%, so the baseline is 3, but the description goes further by enumerating the payment method values (ACC_CREDIT_CARD, TRANSACTION, WALLET, CREDIT, CREDIT_CARD) for the `payment` parameter, which has no type or enum in the schema. This materially compensates for the zero-enum schema and clarifies required 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?

States a specific verb+resource (complete a booking by confirming a rate) and explicitly positions itself as 'Step 2 of 2' in the booking flow. This cleanly distinguishes it from post_rates_prebook (step 1) and post_rates_rebook among the many booking-related 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?

'When to Use' gives clear context (after prebook, to process payment, to confirm a booking) and the flow prerequisites are unambiguous. It does not explicitly contrast with post_rates_rebook, which is the nearest ambiguous sibling, so it stops short of full routing guidance.

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

post_rates_prebookAInspect

Overview

Step 1 of 2 in the booking flow. Create a prebook session to check the availability of a rate and get final pricing before payment. This prebookId needed to complete the booking.

When to Use

  • Before payment - Always call this before completing a booking

  • Rate confirmation - Verify final pricing and availability

  • Session creation - Generate a checkout session for your payment flow

What You Get

  • Prebook ID - Required for the next step (completing the booking)

  • Final pricing - Confirmed rates with all fees and taxes

  • Terms and conditions - Cancellation policies and booking rules

  • Room details - Complete information about the selected rooms

Key Features

  • Live availability check - Verifies the rate is available before you collect payment

  • Payment SDK support - Set usePaymentSdk=true to use client-side payment forms

  • Reusable - PrebookId can be used for multiple bookings if needed

Quick Start

Provide the offerId from your hotel rates search and set usePaymentSdk (true/false). Returns a prebookId to use in the next step.

Next Step: Use the prebookId with /rates/book to complete the booking.

ParametersJSON Schema
NameRequiredDescriptionDefault
addonsNoA list of additional services or extras that can be added to the booking. For example, adding an Uber voucher or an esim card. The final booking amount is the sum of the offer's total price and the cost of any addons. Each addon's price is added individually to reflect all extras in the billed total.
offerIdYesThe unique identifier of the selected offer from the search results.
paymentNoOptional payment configuration when usePaymentSdk is true
timeoutNo
bedTypeIdsNoAn optional array of bed type IDs to specify preferred bed configurations for the rooms being booked. The availability of specific bed types depends on the hotel's inventory.
voucherCodeNoAn optional voucher code to apply discounts to the booking. The vouchers API allows creation of these discounts
usePaymentSdkYesSpecifies whether the fields needed to call the payment processing SDK are returned. Set to true if using the SDK for payment processing.
includeCreditBalanceNoOptional flag to include credit line information in the response. When set to true, credit line details will be returned if the user has a credit line available.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false. The description adds useful behavioral context beyond annotations, including that it creates a reusable prebook session, performs a live availability check, and returns final pricing and terms. It does not cover authentication, rate limits, or session expiration.

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 front-loaded with an Overview and uses clear sections, making it scannable. However, it is longer than necessary and repeats key points across When to Use, What You Get, Key Features, and Quick Start.

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?

There is no output schema, so the description appropriately lists what the tool returns: prebookId, final pricing, terms and conditions, and room details. It also covers the workflow position and next step, making it complete enough for an agent to call and use the result 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 88%, so the schema already documents nearly all parameters. The description adds minor usage context for the required offerId and usePaymentSdk parameters but does not explain the optional parameters (addons, payment, timeout, bedTypeIds, voucherCode, includeCreditBalance) beyond what the schema 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 states a specific verb and resource: create a prebook session to check rate availability and obtain final pricing. It also distinguishes the tool's role as Step 1 of 2 in the booking flow and names the next sibling endpoint, /rates/book.

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 when to use the tool: before payment, for rate confirmation, and for session creation. It also tells the agent to provide the offerId from hotel rates search and to use the resulting prebookId with /rates/book, making the workflow unambiguous.

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

post_rates_rebookAInspect

Overview

Step 2 of 2 in the hard amendment flow. Use a prebookId produced by POST /bookings/{bookingId}/alternative-prebooks to create the replacement booking. On success, the new booking is created and the original booking is automatically cancelled — you do not need to call the cancel endpoint.

When to Use

  • After alternative-prebooks — Once the guest has chosen one of the alternative prebooks returned by POST /bookings/{bookingId}/alternative-prebooks.

  • Date or occupancy changes — The guest needs different check-in/check-out dates or a different number of adults/children at the same hotel.

  • Hard amendments only — For simple guest-name updates use PUT /bookings/{bookingId}/amend instead.

How It Works

  1. The provided prebookId is validated against the booking referenced by existingBookingId (it must have been produced by an alternative-prebooks call for that booking).

  2. The new booking is created with the supplier using the alternative rate.

  3. The original booking is then automatically cancelled. If the cancellation fails after the new booking is confirmed, the error is logged but the new booking is still returned — contact support to reconcile.

Payment

  • No payment is collected on this endpoint. The payment.method value is ignored — the request body must still include a payment object to satisfy the schema, but the server forces the method to NONE internally. Any price delta between the original and new rate is settled out of band.

Refundable vs Non-refundable Originals

  • Refundable original — Returns 200 OK with the new booking, and the original is cancelled immediately.

  • Non-refundable original — Returns 202 Accepted with a booking amendment record. The request is queued for the Nuitee operations team to handle manually (the original booking may incur cancellation fees).

Required Information

  • prebookId — A prebook session returned by POST /bookings/{bookingId}/alternative-prebooks.

  • existingBookingId — The bookingId of the original confirmed booking being replaced. Must match the bookingId that produced the prebook.

  • holder and guests — Same structure as POST /rates/book. If holder fields are empty they are copied from the original booking.

Quick Start

  1. Call POST /bookings/{bookingId}/alternative-prebooks and pick one of the returned prebookId values.

  2. Call this endpoint with that prebookId, the original bookingId as existingBookingId, and guest information.

  3. On success, the new booking is confirmed and the original is cancelled — no further calls are needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestsYesList of guests for the new booking. There is a 1:1 mapping between guests and rooms (one guest entry per `occupancyNumber`).
holderYesInformation on the person responsible for the booking. Any field left empty is populated from the original booking's holder.
paymentYesRequired by the schema but ignored. The server forces the payment method to `NONE` for rebooks — no charge is taken on this endpoint. Send `{"method": "NONE"}` to be explicit.
timeoutNoOptional request timeout in seconds.
prebookIdYesA prebook session returned by `POST /bookings/{bookingId}/alternative-prebooks`. Must reference the same booking as `existingBookingId`.
customTagsNoOptional bag of up to 5 user-defined key/value labels persisted with the booking. Keys must match `^[A-Z0-9_-]+$` and values are strings up to 255 characters. See `POST /rates/book` for the full description.
trackingIdNoOptional tracking ID for analytics or partner attribution.
clientReferenceNoAn optional client-defined reference ID. Acts as an idempotency key to prevent duplicate rebooks. If a booking already exists with the same client reference, the API will return a 4005 error.
existingBookingIdYesThe `bookingId` of the confirmed booking being replaced. The original booking is cancelled automatically when the new booking is confirmed.

TDQS

A4/5.0
Behavior1/5

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

The description openly discloses that 'the original booking is automatically cancelled', that cancellation failures are logged while the new booking is still returned, and that non-refundable originals queue for manual handling. However, this directly contradicts the annotation destructiveHint=false, since cancelling a confirmed booking is a destructive side effect. Per the rules, a description that contradicts annotations scores 1.

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

Conciseness4/5

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

Front-loaded with markdown headers and ordered sections; the critical side effect (auto-cancellation) is stated early in the Overview. It is longer than strictly necessary (the 'Quick Start' largely repeats the numbered flow), but the length is justified by the multi-step, multi-outcome nature of the operation.

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 9-parameter, nested-object, no-output-schema mutation tool, this covers everything an agent needs: required vs defaulted fields, the 200 vs 202 branch by refundability, partial-failure behavior, and payment semantics. Nothing material 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 already 100%, so the baseline is 3, but the description adds real semantic value the schema lacks: payment.method is forced to NONE regardless of input, holder fields default from the original booking, clientReference acts as an idempotency key returning error 4005, and there is a 1:1 guest/occupancy mapping.

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 and resource ('create the replacement booking' via a `prebookId`), places it precisely as 'Step 2 of 2 in the hard amendment flow', and explicitly tells the agent it does NOT need to call cancel. It is unambiguously distinguishable from `put_bookings_bookingid_amend`, which it names.

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 'When to Use' section gives explicit triggers (after alternative-prebooks, date/occupancy changes) and an explicit exclusion with the alternative: 'For simple guest-name updates use PUT /bookings/{bookingId}/amend instead.' No inference required.

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

post_vouchersAInspect

Overview

Create discount vouchers that customers can apply to their hotel and flight bookings. Supports percentage discounts, fixed amounts, and points redemption vouchers.

When to Use

  • Promotional campaigns - Create discount codes for marketing

  • Customer rewards - Generate vouchers for loyal customers

  • Special offers - Create time-limited discount vouchers

  • Points redemption - Generate vouchers from loyalty points

What You Get

  • Voucher object - Complete voucher details including code and settings

  • Usage tracking - Remaining uses count

  • Validation - Confirmation that the voucher was created successfully

Key Features

  • Multiple discount types - Percentage, fixed amount, or points redemption

  • Flexible rules - Set minimum spend, maximum discount, and usage limits

  • Validity control - Define start and end dates

  • Guest assignment - Optionally assign to specific guests

  • Applies to hotels and flights - Pass the voucherCode in the voucherCode field of /rates/prebook (hotels) or /flights/prebooks (flights) to redeem the discount at checkout

Quick Start

Provide voucher code, discount type, value, currency, validity dates, usage limits, and status. Returns the created voucher with all details.

ParametersJSON Schema
NameRequiredDescriptionDefault
budgetNoTotal monetary pool the voucher can distribute across all redemptions, in the voucher's currency. If not set or 0, there is no monetary limit and usage is only controlled by usages_limit. When set, budget and usages_limit act as independent limits — whichever is exhausted first will reject the voucher.
statusYesCurrent status of the voucher (e.g., active, inactive)
currencyYesCurrency in which the discount is offered
guest_idNoThe unique identifier of the guest associated with the voucher
descriptionNoA brief description of the voucher, detailing its purpose or offer
usages_limitYesMaximum number of times the voucher can be redeemed
validity_endYesDate until which the voucher remains valid
voucher_codeYesA unique code for the new voucher. e.g. manhattan-holidays-100
discount_typeYesType of discount, such as percentage, or points_redemption
minimum_spendYesMinimum rate to apply the discount voucher in the voucher currency. e.g. a minimum_spend of USD$100 will only apply for bookings with a price USD$100 or more
discount_valueYesValue of the discount applied by the voucher. For percentage discounts, a value of 10 represents a 10% discount. For points_redemption, it indicates the fixed amount of points to be redeemed e.g. 10 equals 10 points
validity_startYesDate from which the voucher becomes valid
terms_and_conditionsNoTerms and conditions associated with the voucher
maximum_discount_amountYesMaximum discount amount that can be applied using the voucher in voucher currency. e.g. a with a maximum_discount_amount of 50 in USD, will discount from 0 to USD$50

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already disclose that this is a non-read-only, non-idempotent write operation, so the bar is lower. The description adds useful behavioral context by explaining what is returned (voucher object, usage tracking, validation confirmation) and how the voucher is redeemed in hotel and flight flows, though it does not discuss duplicate-call risk or permissions.

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 well-structured with front-loaded headings and an Overview that appears first. It is somewhat long and has some redundancy across 'What You Get' and 'Key Features,' but the length is defensible for a 14-parameter creation 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 the complexity of 14 parameters, 10 required fields, and no output schema, the description covers purpose, usage scenarios, return behavior, and redemption mechanics. It does not cover authentication, error cases, or non-idempotent duplicate-call risk, but it is largely complete for correct invocation.

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 already documents all 14 parameters thoroughly, including nuanced fields like budget, minimum_spend, and discount_value. The description mostly repeats required inputs in the Quick Start and does not add significant syntax or constraint detail beyond what the schema 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 opens with a specific verb and resource: 'Create discount vouchers that customers can apply to their hotel and flight bookings.' It also names the supported discount types, which makes the tool easily distinguishable from retrieval, update, and delete voucher siblings such as get_vouchers, put_vouchers_id, and delete_Voucher.

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 'When to Use' section gives clear contextual scenarios (promotional campaigns, customer rewards, special offers, points redemption), which helps an agent recognize appropriate calls. It does not state when not to use the tool or explicitly name alternative siblings, so it falls 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.

prebookExperienceTourAInspect

Overview

Create a temporary hold on the selected tour slot and a Stripe PaymentIntent for checkout.

When to Use

  • Checkout start — After the user picks option, slot, and participants from booking-options

  • Payment setup — Obtain transactionId and secretKey for Stripe SDK confirmation

  • Hold window — Reserve inventory for ~10 minutes before book

What You Get

  • Checkout context — tourId, optionId, dateTime, language, participants, and pricing echoed back

  • Provider refs — cartId, experienceBookingId, providerBookingId, status, reservationExpiresAt

  • Stripe fields — transactionId, secretKey, paymentTypes: ["TRANSACTION_ID"]

Quick Start

POST the same selection used for display pricing from booking-options with usePaymentSdk: true. Confirm payment with Stripe, then call POST /experiences/bookings.

ParametersJSON Schema
NameRequiredDescriptionDefault
paymentNoOptional Stripe metadata (e.g. statement descriptor suffix).
currencyYesISO 4217 currency code used for validate and downstream book cart.
languageYesISO language code used for validate and downstream book cart.
selectionYes
usePaymentSdkYesPhase 1 requires `true` to create a Stripe PaymentIntent.
clientReferenceIdNoPartner reference echoed in prebook response and stored on the checkout session.

TDQS

A4.5/5.0
Behavior5/5

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

With annotations already covering mutation/safety profile, the description adds meaningful behavior: a temporary inventory hold of about 10 minutes, creation of a Stripe PaymentIntent, and the returned provider and Stripe references. This goes well beyond the structured hints.

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 markdown structure is front-loaded with Overview, When to Use, What You Get, and Quick Start. Despite its length, every section serves a distinct purpose for a complex checkout-preparation tool.

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 nested-schema tool with no output schema, the description supplies the missing return context, the Stripe flow, and the next step after confirmation. It is complete enough for correct invocation and sequencing.

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 already 83%, so the schema carries most parameter meaning. The description adds only light context, mainly that the selection should match what was used for display pricing and that usePaymentSdk must be true, which is already documented in the schema.

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 and resource: 'Create a temporary hold on the selected tour slot and a Stripe PaymentIntent for checkout.' It clearly distinguishes this prebook/hold operation from the final booking step referenced later.

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 'When to Use' section gives clear triggering conditions (after booking-options selection, for payment setup, within the hold window) and the Quick Start sequences the next call. It lacks explicit when-not-to-use guidance or named sibling alternatives, but the context is strong.

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

prechargeFlightExtraChargesAInspect

Overview

Creates a pending post-booking extra-charge batch for an existing flight booking and returns an opaque chargesId. For Stripe-paid bookings, also creates a PaymentIntent (transactionId + secretKey) when usePaymentSdk is true.

Access

Requires Flights API access. Post-booking extra charges are not enabled by default — contact the LiteAPI support team to request access.

When to Use

  • Attach fees after confirmation (seat change, baggage, admin adjustment)

  • Obtain a Stripe client secret so the customer can confirm payment before POST .../extra-charges/charges

What You Get

  • chargesId — Opaque token required by /extra-charges/charges (do not re-send charge lines)

  • paymentTypes — Locked to the booking's original payment (TRANSACTION_ID or CREDIT)

  • transactionId / secretKey — Present for Stripe bookings when usePaymentSdk is true

  • Existing extras totals plus pending batch totals

Constraints

  • Booking status must be CONFIRMED or PENDING_CONFIRMATION

  • All lines in one request must share the same currency

  • Payment method on /charges must match the original booking payment

ParametersJSON Schema
NameRequiredDescriptionDefault
chargesYesCharge lines to attach. All lines must use the booking sellingCurrency.
bookingIdYesFlight booking identifier
usePaymentSdkNoRequired true for Stripe bookings so a PaymentIntent is created. Ignored for CREDIT bookings.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover safety/idempotency, and the description adds substantial non-obvious behavior on top: the batch is pending until the second call, the opaque `chargesId` must not be re-sent with charge lines, access is gated behind a support request, payment type is locked to the original booking payment, and Stripe PaymentIntent creation depends on `usePaymentSdk`. These are genuine operational preconditions not derivable from 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?

Headings (Overview, Access, When to Use, What You Get, Constraints) front-load the purpose and make scanning easy. It is somewhat long for three parameters, with mild overlap between the overview's PaymentIntent mention and the return-value list, but nearly every line carries 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?

There is no output schema, so the 'What You Get' section is essential and it fully enumerates the returned artifacts and their downstream use. Combined with the access gating, booking-status and currency constraints, and payment-matching rule, an agent has everything needed to invoke this correctly.

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

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, but the description still adds meaning: charge lines must all share the booking's sellingCurrency, and `usePaymentSdk` interacts with booking payment type (Stripe vs CREDIT) in a way the schema only partially conveys. It does not add syntax-level detail beyond that.

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

Purpose5/5

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

States a specific verb and resource ('Creates a pending post-booking extra-charge batch for an existing flight booking') and names the primary artifact returned (`chargesId`). It also fixes the tool's place in the two-step flow by referencing `/extra-charges/charges` as the subsequent call, which distinguishes it from the sibling `chargeFlightExtraCharges`.

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 'When to Use' section gives concrete triggers (seat change, baggage, admin adjustment, obtaining a Stripe client secret) and the Access section flags that the feature must be enabled by support. It stops short of explicitly saying when not to use this versus the sibling `chargeFlightExtraCharges`, referring to it only by path.

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

put_bookings_bookingidA
DestructiveIdempotent
Inspect

Overview

Cancel an existing confirmed booking. Cancellation policies determine whether a full refund, partial refund, or charges apply.

When to Use

  • Guest cancellation - Allow guests to cancel their bookings

  • Administrative cancellation - Cancel bookings from admin panels

  • Policy enforcement - Apply cancellation policies automatically

What You Get

  • Cancellation status - Success or failure of cancellation

  • Charges information - Any fees or charges that apply

  • Refund details - Amount refunded (if applicable)

  • Updated booking status - Booking marked as cancelled

Cancellation Outcomes

  • CANCELLED - Fully refundable, no charges

  • CANCELLED_WITH_CHARGES - Non-refundable or past cancellation deadline, charges apply

  • Cancellation policies - Applied automatically based on booking terms

Important Notes

  • Non-refundable bookings - Will be cancelled but still charged (status: CANCELLED_WITH_CHARGES)

  • Policy enforcement - Cancellation policies are automatically applied

  • Past deadline - Cancellations after the policy deadline may incur charges

Quick Start

Provide the bookingId in the URL path. Returns cancellation status and any applicable charges or refunds.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNorequest timeout in seconds
bookingIdYes

TDQS

A4/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description goes well beyond that: it explains that non-refundable bookings are still cancelled but charged (CANCELLED_WITH_CHARGES), that policies apply automatically, and that post-deadline cancellations incur fees. This is exactly the behavioral consequence detail an agent needs before invoking a destructive tool.

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 sectioned markdown is well front-loaded, but charges and refunds are restated across Overview, 'What You Get,' 'Cancellation Outcomes,' and 'Important Notes' — the same information three or four times for a one-parameter tool. It could be roughly halved without losing meaning.

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?

There is no output schema, and the description ably fills that gap by enumerating return content (cancellation status, charges, refunds, updated booking status). Behavior, outcomes, and side effects are covered; only the timeout parameter and sibling differentiation remain unaddressed.

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?

With two parameters and 50% schema coverage, the bookingId field has no schema description — but the description compensates by specifying that it is provided 'in the URL path.' The timeout parameter is undocumented in both schema and description. Adequate but not complete.

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 states a specific verb and resource: 'Cancel an existing confirmed booking,' which is unambiguous. However, it never differentiates itself from the closely related sibling put_bookings_bookingid_amend, which an agent could easily confuse with this cancellation endpoint.

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?

A dedicated 'When to Use' section gives clear scenarios (guest cancellation, administrative cancellation, policy enforcement), which is solid context. It stops short of exclusions or routing rules — it never says when to use amend instead, or when cancellation is NOT permitted.

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

put_bookings_bookingid_amendA
Idempotent
Inspect

Overview

Update guest information (name and email) for an existing booking. Useful for correcting typos or updating guest details after booking.

When to Use

  • Name corrections - Fix typos in guest names

  • Email updates - Update guest email addresses

  • Guest changes - Change guest information after booking

  • Support requests - Update booking details per customer requests

What You Get

  • Confirmation - Success message when amendment is complete

  • Updated booking - Booking reflects the new guest information

Editable Fields

  • First name - Guest's first name

  • Last name - Guest's last name

  • Email - Guest's email address

  • Remarks - Optional additional notes

Limitations

  • Holder only - Only the booking holder's information can be updated

  • Name and email - Other guest details cannot be amended

Quick Start

Provide the bookingId and updated guest information (firstName, lastName, email). Optionally include remarks. Returns confirmation of the update.

ParametersJSON Schema
NameRequiredDescriptionDefault
holderYes
remarksNoOptional remarks for the amendment request.
bookingIdYes(Required) The unique identifier of the booking to amend.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds real beyond-annotation behavior: a holder-only limitation and the statement that other guest details cannot be amended, which materially constrains the call.

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

Conciseness2/5

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

The overview is front-loaded, but four markdown sections restate the same content: 'When to Use' bullets repeat the overview, 'What You Get' and 'Quick Start' repeat the editable-fields/quick-start information again. Roughly half the text is redundant padding for a 3-parameter 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?

With no output schema, the description usefully states what is returned (a confirmation and the updated booking). It covers the key limitation and required inputs, though it never mentions idempotency and misstates the editable field set by excluding phone.

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 67% with a documented nested holder object, so the schema carries most parameter meaning and baseline 3 applies. The description enumerates editable fields but actively omits 'phone' (present in the schema) while claiming 'other guest details cannot be amended', which is a mild inconsistency rather than added clarity.

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 Overview states a specific verb+resource (update guest information - name and email - for an existing booking), which is clear and distinct from read siblings like get_bookings_bookingid. It does not name the close sibling put_bookings_bookingid or explain how 'amend' differs from the full update, so it stops short of full sibling differentiation.

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?

A dedicated 'When to Use' section gives concrete contexts (typo fixes, email updates, support requests), which is more than implied usage. However it offers no exclusions or alternatives (e.g., when to use put_bookings_bookingid instead), so it stays at clear-context without guidance.

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

put_loyaltiesA
Idempotent
Inspect

Overview

Configure your loyalty program settings, including enabling/disabling the program and setting cashback rates.

When to Use

  • Program activation - Enable or disable your loyalty program

  • Rate adjustments - Update cashback percentages

  • Program management - Change loyalty program configuration

  • A/B testing - Test different cashback rates

What You Get

  • Confirmation - Updated program settings

  • Status - Current program status (enabled/disabled)

  • Cashback rate - Active cashback percentage

Key Features

  • Enable/disable - Turn your loyalty program on or off

  • Cashback control - Set the percentage guests earn (e.g., 0.1 = 10%)

  • Immediate effect - Changes apply to new bookings right away

Quick Start

Send the new status ("enabled" or "disabled") and cashbackRate (decimal, e.g., 0.1 for 10%). Both fields are required.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYesLoyalty program status, either enabled or disabled
cashbackRateYesCashback rate in percentage, e.g. 0.1 = 10%

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations, including 'Immediate effect - Changes apply to new bookings right away' and the return information in 'What You Get.' It does not cover permissions or error behavior, but the annotations lower the bar.

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 markdown structure is front-loaded with an Overview and useful sections, but the content is repetitive for a simple two-parameter tool. Enable/disable and cashback rate concepts are repeated across 'When to Use,' 'Key Features,' and 'Quick Start,' reducing conciseness. It is adequately structured but not tight.

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 low complexity, 100% schema coverage, rich annotations, and no output schema, the description is mostly complete. It explains parameters, required fields, immediate effect, and expected confirmation/status results. It omits permission or error context, but the definition is sufficient for correct invocation.

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 both parameters are documented in the schema with enum and example details. The description repeats the same required fields and examples ('status' as 'enabled' or 'disabled', 'cashbackRate' as decimal e.g. 0.1 for 10%) without adding constraints or syntax beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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 a specific verb and resource: 'Configure your loyalty program settings, including enabling/disabling the program and setting cashback rates.' This distinguishes the tool from read-oriented siblings like get_loyalties, though it does not explicitly name an alternative or contrast with them. The purpose is clear and actionable.

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 'When to Use' section provides clear contexts: program activation, rate adjustments, program management, and A/B testing. It does not state when not to use the tool or name alternative siblings, but it gives sufficient positive guidance for an agent to select it correctly.

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

put_supply_customizationB
Idempotent
Inspect

Overview

Configure your supply customization preferences, including enabling or disabling advanced accessibility options for hotel searches.

When to Use

  • Enable features - Turn on advanced accessibility filtering

  • Customize supply - Adjust how hotel results are filtered

  • Accessibility control - Control whether advanced accessibility hotels are included

What You Get

  • Updated settings - Confirmation with your new configuration

  • Current state - Your active supply customization settings

Key Features

  • Advanced accessibility - Enable/disable filtering for hotels with advanced accessibility features

  • Search impact - Settings affect hotel search results

Quick Start

Provide advancedAccessibility (boolean) to enable or disable advanced accessibility options. Returns updated settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
advancedAccessibilityYesIndicates if advanced accessibility options should be enabled for the user

TDQS

B3.3/5.0
Behavior3/5

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

The annotations already disclose that this is a non-readonly, idempotent mutation that is not destructive and operates in an open world. The description adds some useful context, namely that settings affect hotel search results and that updated settings are returned, but it does not add deep behavioral detail beyond that.

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

Conciseness2/5

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

The description is heavily formatted with many sections and repetitive bullet points for a tool that takes only one boolean parameter. While it is front-loaded with an Overview, the amount of redundant prose makes it far from concise.

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 simple one-parameter mutation tool with 100% schema coverage and annotations, the description is more than sufficient. It covers what the tool does, when to use it, and what it returns; the only minor gap is that it does not reference the sibling read tool.

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 fully documents the single parameter advancedAccessibility, including its boolean type and meaning. The description repeats this in the Quick Start section without adding syntax, format, or side-effect details beyond what the schema already provides.

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 configures supply customization preferences, specifically enabling or disabling advanced accessibility options for hotel searches. It uses a specific verb and resource, but it does not distinguish itself from the sibling read tool get_supply_customization.

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

Usage Guidelines3/5

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

A 'When to Use' section exists, but its bullets largely restate the purpose rather than providing true when-to-use guidance. It doesn't name alternatives such as get_supply_customization or specify when not to use this tool.

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

put_vouchers_idA
Idempotent
Inspect

Overview

Modify an existing voucher's settings, including discount values, validity periods, usage limits, and status.

When to Use

  • Extend validity - Update voucher end dates

  • Adjust discounts - Change discount values or types

  • Update limits - Modify usage limits or minimum spend

  • Status changes - Activate or deactivate vouchers

What You Get

  • Confirmation - Success message when voucher is updated

  • Updated voucher - Voucher reflects the new settings

Important Notes

  • Read-only if used - Vouchers that have been used in bookings cannot be modified (returns 404)

  • All fields required - Must provide all required fields, not just the ones you want to change

Quick Start

Provide the voucher ID and updated fields. Returns confirmation of the update.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique identifier of the voucher to update
budgetNoTotal monetary pool the voucher can distribute across all redemptions, in the voucher's currency. If not set or 0, there is no monetary limit and usage is only controlled by usages_limit. When set, budget and usages_limit act as independent limits — whichever is exhausted first will reject the voucher.
statusYesUpdated status of the voucher (e.g., active, inactive)
currencyYesCurrency of the discount
usages_limitYesUpdated usage limit for the voucher
validity_endYesUpdated end date of the voucher's validity
voucher_codeYesA unique code for the new voucher. e.g. manhattan-holidays-100
discount_typeYesType of discount, such as percentage or points redemption
minimum_spendYesMinimum rate to apply the discount voucher in the voucher currency. e.g. a minimum_spend of USD$100 will only apply for bookings with a price USD$100 or more
discount_valueYesValue of the discount applied by the voucher. For percentage discounts, a value of 10 represents a 10% discount. For points_redemption, it indicates the fixed amount of points to be redeemed e.g. 10 equals 10 points
validity_startYesUpdated start date of the voucher's validity
maximum_discount_amountYesMaximum discount amount that can be applied using the voucher in voucher currency. e.g. a with a maximum_discount_amount of 50 in USD, will discount from 0 to USD$50

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnly=false, idempotent=true, destructive=false, openWorld=true. The description adds genuinely non-redundant behavior: vouchers already used in bookings cannot be modified and return 404, and the update is a full replace requiring every required field to be resent. That is exactly the kind of state/permission context annotations don't carry.

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?

Front-loaded with an Overview, then scannable sections for when-to-use, return values, and caveats. Sections are short and each carries content; the Quick Start paragraph lightly restates earlier material but does not bloat the definition.

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 12-parameter mutation with no output schema, the description covers what it needs to: it explains the return (success confirmation plus the updated voucher), the full-replace semantics, and the 404 constraint on used vouchers. The only omission is routing between this tool and the status-specific sibling.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema documents all 12 parameters and the baseline is 3. The description adds a nuance the schema cannot express: this is a full-replace update where all required fields must be provided, not just the ones being changed, which prevents a partial-update mistake.

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

Purpose4/5

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

States a specific verb (modify) and resource (an existing voucher's settings) and enumerates the modifiable surfaces: discount values, validity periods, usage limits, status. An agent can tell it apart from read siblings like get_vouchers_voucherid, but it does not distinguish itself from the dedicated put_vouchers_id_status sibling even though it claims status changes as a use case.

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

Usage Guidelines3/5

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

The 'When to Use' bullets give real context (extend validity, adjust discounts, update limits, status changes), which is better than nothing. However, no when-not conditions are stated and no alternatives are named, and the status-change bullet collides with the put_vouchers_id_status sibling without explaining when to prefer one over the other.

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

put_vouchers_id_statusA
Idempotent
Inspect

Overview

Quickly activate or deactivate a voucher without updating other fields. Perfect for temporarily disabling vouchers.

When to Use

  • Temporary disable - Deactivate vouchers without deleting them

  • Reactivate vouchers - Turn inactive vouchers back on

  • Status management - Quickly toggle voucher availability

What You Get

  • Confirmation - Success message confirming status change

  • Updated status - Voucher status changed to active or inactive

Quick Start

Provide the voucher ID and the new status ("active" or "inactive"). Returns confirmation of the status update.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique identifier of the voucher for which the status is being updated
statusYesNew status of the voucher

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior: the operation touches only the status field and returns a success confirmation - information not derivable from the annotations. Permissions and error behavior remain unstated, keeping it below 5.

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?

Front-loaded well with the Overview, but the four markdown sections are heavy for a two-parameter tool and repeat the same idea: the status values and the confirmation are restated in 'What You Get' and again in 'Quick Start'. Content is not wrong, just padded.

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 simple two-field mutation with no output schema, the description covers what the call does, what it changes, and what it returns (a confirmation and the new status). Missing only error/permission context, which keeps it from a 5.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (id, status) are already documented in the schema, including the enum values. The description restates the same enum ('active' or 'inactive') without adding format, validation, or side-effect detail, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('activate or deactivate a voucher') and adds the distinguishing scope constraint 'without updating other fields', which implicitly separates it from the full-update sibling put_vouchers_id. It does not name that sibling explicitly, so an agent must infer the routing from the scope phrase alone.

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 'When to Use' section gives three concrete scenarios (temporary disable, reactivate, status management) that clearly frame the intent. It lacks any explicit when-not-use or named alternative (e.g. 'for full edits use put_vouchers_id'), so the routing guidance is contextual rather than explicit.

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

searchBookingsA
Read-only
Inspect

Overview

Search for bookings by free-text query. Matches guest names, booking IDs, hotel names, and other booking-related fields. Results are paginated.

When to Use

  • Admin or support lookup - Find bookings by guest name, hotel name, or partial ID

  • Text search - Search across multiple fields with a single query string

  • Paginated results - Control page size and page index via request body

What You Get

  • Matching bookings - List of bookings matching the query with key fields

  • Pagination - page, rowsPerPage, and the search query echoed back

  • Credit line billing - When applicable, billing info (credit line ID, billed amount USD, billed at date, payment ID)

Request Body

  • query (required) - Text to search for (e.g. guest name, hotel name, booking ID)

  • page - Zero-based page index (default 0)

  • rowsPerPage - Number of results per page (e.g. 5)

  • sand_box - Filter by environment (e.g. "false" for production)

Quick Start

POST a JSON body with query, page, and rowsPerPage. Response includes data array, success, and pagination fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page index for pagination.
queryYesText to search for (guest name, hotel name, booking ID, etc.).
sand_boxNoFilter by sandbox environment (e.g. "true" or "false").
rowsPerPageNoNumber of results per page.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering the safety and openness profile. The description adds useful context beyond those: it discloses pagination behavior, the credit line billing fields returned, and the sandbox environment filter. It does not describe rate limits or ordering guarantees, but for a read-only search with rich annotations, this is solid extra 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 description is well-organized with markdown headers ('Overview', 'When to Use', 'What You Get', 'Request Body', 'Quick Start'), which front-loads the purpose effectively. However, it is longer than necessary for a tool with 4 parameters and full schema coverage, repeating field definitions already in the schema and including a 'Quick Start' section that duplicates the request body details. The structure is clear but not tight.

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 search tool with full schema coverage and rich annotations, the description covers the essential aspects: what it searches, how pagination works, and what the response includes (data array, success, pagination fields, credit line billing). No output schema exists, so the 'What You Get' section fills a real gap. It is largely complete, though it could mention whether results are ordered or how to handle empty result sets.

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 already documents all four parameters. The description largely repeats those definitions ('query (required) - Text to search for', 'page - Zero-based page index', 'rowsPerPage - Number of results per page', 'sand_box - Filter by environment'), adding only minor examples like '(e.g. "false" for production)'. Baseline 3 is appropriate when the schema carries the full load.

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 states a specific verb and resource: 'Search for bookings by free-text query', and specifies which fields are matched (guest names, booking IDs, hotel names, and other booking-related fields). It clearly distinguishes itself from get_bookings or listBookings by emphasizing free-text search rather than filtered retrieval. However, it does not explicitly name a sibling as an alternative, so it falls short of a 5.

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

Usage Guidelines3/5

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

The 'When to Use' section provides contexts like 'Admin or support lookup' and 'Text search', which imply usage scenarios but stop short of explicitly stating when to prefer this tool over get_bookings or listBookings. No exclusions or alternatives are named, leaving the agent to infer the appropriate selection criteria on its own.

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

searchExperienceToursA
Read-onlyIdempotent
Inspect

Overview

Search available tours and activities with localized content and prices in your chosen currency.

When to Use

  • Search results - Populate a tours listing or map view

  • Destination pages - Show activities available in a city or region

  • Category browsing - Filter tours by type, duration, or rating

What You Get

  • Tour listings - Titles, descriptions, images, and ratings

  • Localized content - Names and descriptions in the requested language

  • Prices - Amounts in the requested currency

Quick Start

Provide required language and currency query parameters. Returns a paginated list of matching tours.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: results are paginated, content is localized to the requested language, and prices are returned in the requested currency. It does not describe pagination mechanics or rate limits, keeping it out of 5 territory.

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

Conciseness3/5

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

Markdown headers make it scannable, but there is meaningful redundancy: 'What You Get' largely restates the Overview (localized content, prices in currency). The Quick Start contradicts the actual schema, so a full sentence is spent on unusable advice.

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

Completeness3/5

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

For a read-only search with annotations covering safety and no output schema, the description does describe return content (titles, descriptions, images, ratings) reasonably well. The gap is the phantom required query parameters and undisclosed pagination/filter mechanics, which leaves an agent unsure how to actually invoke it.

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?

With zero parameters the baseline would be 4, but the description asserts that 'required `language` and `currency` query parameters' must be provided while the input schema exposes an empty properties object. That guidance is unverifiable and potentially misleading to an agent, pulling the score down to a 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 states a specific verb+resource ('Search available tours and activities') with the added scope of localized content and currency pricing. It is clearly distinguishable from sibling reads like getExperienceTour or getExperienceTourAvailability. However, it does not explicitly contrast itself against those siblings, so it stops short of a 5.

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

Usage Guidelines3/5

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

The 'When to Use' block gives real context (tours listing, destination pages, category browsing), which is better than nothing. But it never names an alternative tool or a when-not-to-use condition, and it advertises filtering 'by type, duration, or rating' that no sibling/schema actually exposes, so the routing guidance is partly unactionable.

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

searchFlightsMatrixAInspect

Overview

Search the cheapest fare for each departure (and, on round-trips, return) date combination across a grid of nearby dates — ±flexDays around the dates in your request. Accepts the same legs-based body as POST /flights/rates plus optional flexDays (1–3, default 3).

Supported: one-way (1 leg) or round-trip (2 legs) only. Multi-city (3+ legs) is not supported.

Not supported: top-level origin, destination, departureDate, or returnDate — use legs only.

Access

Requires Flights API access and matrix enablement on your account. Matrix search is not enabled by default — contact the LiteAPI support team to request access.

When to Use

  • Flexible-date calendars — price heatmap when the traveller can shift dates

  • Cheap-date discovery — find the lowest fare in a ±N day window before a full /flights/rates search

  • Round-trip date pairing — compare outbound × return combinations on one grid

  • Progressive UI — stream cells over SSE as each underlying search completes

What You Get

  • cells — one entry per valid date combination, sorted by (outboundOffset, returnOffset)

  • cheapest — globally lowest-priced cell (null when nothing was priced)

  • currency — currency of the global cheapest cell

  • baseOutboundDate / baseReturnDate — the originally requested dates

  • flexDays, roundTrip — grid metadata

  • Per-cell price, currency, date offsets, and whether the underlying search was cached or success

  • Margined prices — cell price, cheapest, and currency include the authenticated user's rate-search margin (same as /flights/rates)

Key Features

  • Probes ±flexDays (1–3) around requested departure and return dates

  • Each underlying date pair uses normal provider caching — a later POST /flights/rates for a matrix date is served from warm cache

  • SSE: send header Accept: text/event-stream for incremental events: matrix-start (grid skeleton), matrix-chunk (one priced cell), matrix-complete (full sorted grid + cheapest)

  • Same global filters, sort, and options as /flights/rates where applicable

Quick Start

Required: legs (1 leg for one-way or 2 for round-trip, each with origin, destination, date), adults (≥ 1), currency

Optional: flexDays (1–3, default 3), country, passenger counts, filters, sort

Round-trip: two legs — outbound then return with optional direction OUTBOUND / INBOUND. One-way: one leg.

After choosing a date pair from the matrix, call POST /flights/rates with legs set to those dates for full offer details.

ParametersJSON Schema
NameRequiredDescriptionDefault
legsYesOne leg (one-way) or two legs (round-trip). Multi-city is not supported.
adultsYesNumber of adult passengers (≥ 1).
countryNoISO country code for point of sale
infantsNoNumber of infant passengers (under 2).
childrenNoNumber of child passengers (ages 2-11).
currencyYesISO 4217 currency for point of sale and displayed prices.
flexDaysNoDays before/after requested dates to probe

TDQS

A4.8/5.0
Behavior5/5

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

Despite annotations being present, the description adds substantial behavioral context they cannot convey: matrix access is not enabled by default and requires contacting LiteAPI support, underlying searches are provider-cached so a later /flights/rates call is served from warm cache, returned prices include the user's margin, and SSE streaming events are enumerated. This is exactly the kind of extra disclosure the annotations cannot carry.

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?

It is lengthy, but the markdown structure is clean and front-loaded: Overview, Access, When to Use, What You Get, Quick Start. Some content repeats between 'Key Features' and 'Overview' (flexDays probing, caching), which costs a point, but every section is navigable and 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 no output schema, the description fully carries the return-value burden: it enumerates cells, cheapest, currency, baseOutboundDate/baseReturnDate, flexDays, roundTrip, and per-cell price/currency/offsets/cached status. Access prerequisites and SSE behavior are also covered, leaving nothing an agent needs 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?

Schema coverage is 100%, so the baseline is 3, but the description adds real value beyond the schema: flexDays is documented as 1–3 with a default of 3 (the schema omits the default), legs must be exactly one or two with outbound/return ordering, and required vs optional fields are restated coherently.

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 overview states a specific verb and resource: 'Search the cheapest fare for each departure... date combination across a grid of nearby dates.' It precisely scopes the operation (±flexDays around requested dates) and distinguishes itself from the related /flights/rates endpoint, which it names explicitly.

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?

A dedicated 'When to Use' section lists four concrete scenarios (flexible-date calendars, cheap-date discovery, round-trip pairing, progressive UI), plus explicit 'Supported' (1–2 legs) and 'Not supported' (multi-city, top-level date/origin fields) boundaries. It also tells the agent what to call next — POST /flights/rates for full offer details.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 89 tool updates
    • First observedchargeFlightExtraCharges
    • First observedcreateExperienceBooking
    • First observeddelete_Voucher
    • First observedget_bookings
    • First observedget_bookings_bookingid
    • First observedget_bookings_guest_nationality_report
    • First observedget_bookings_hotels_sales_report
    • First observedget_bookings_source_markets_report
    • First observedget_data_chains
    • First observedget_data_cities
    • First observedget_data_countries
    • First observedget_data_currencies
    • First observedget_data_facilities
    • First observedget_data_flights_airlines
    • First observedget_data_flights_airlines_iatas
    • First observedget_data_flights_airlines_iatas_iatacode
    • First observedget_data_flights_airports
    • First observedget_data_flights_airports_iatas
    • First observedget_data_flights_airports_iatas_iatacode
    • First observedget_data_hotel
    • First observedget_data_hotel_ask
    • First observedget_data_hotel_search
    • First observedget_data_hotels
    • First observedget_data_hotels_room_search
    • First observedget_data_hotels_semantic_search
    • First observedget_data_hoteltypes
    • First observedget_data_iatacodes
    • First observedget_data_languages
    • First observedget_data_places
    • First observedget_data_places_placeid
    • First observedget_data_reviews
    • First observedget_data_weather
    • First observedget_flights_bookings
    • First observedget_flights_bookings_bookingid
    • First observedget_flights_bookings_bookingid_cancellations
    • First observedget_flights_bookings_bookingid_services
    • First observedget_guests
    • First observedget_guests_guestid
    • First observedget_guests_guestid_bookings
    • First observedget_guests_guestid_loyalty_points
    • First observedget_guests_guestid_vouchers
    • First observedget_loyalties
    • First observedget_prebooks_prebookid
    • First observedget_supply_customization
    • First observedget_vouchers
    • First observedget_vouchers_history
    • First observedget_vouchers_voucherid
    • First observedgetExperienceBooking
    • First observedgetExperienceTour
    • First observedgetExperienceTourAvailability
    • First observedgetExperienceTourBookingOptions
    • First observedgetExperienceTourReviews
    • First observedgetFlightPrebook
    • First observedgetHotelTaxSchema
    • First observedgetPriceIndexCity
    • First observedgetPriceIndexHotels
    • First observedgetPublicPrice
    • First observedlistBookings
    • First observedpost_analytics_hotels
    • First observedpost_analytics_markets
    • First observedpost_analytics_report
    • First observedpost_analytics_weekly
    • First observedpost_bookings_bookingid_alternative_prebooks
    • First observedpost_commissions_report
    • First observedpost_data_hotel_highlights
    • First observedpost_flights_bookings
    • First observedpost_flights_bookings_bookingid_cancellations
    • First observedpost_flights_prebooks
    • First observedpost_flights_prebooks_prebookid_services
    • First observedpost_flights_rates
    • First observedpost_flights_verify
    • First observedpost_guests_guestid_loyalty_points_redeem
    • First observedpost_hotels_min_rates
    • First observedpost_hotels_rates
    • First observedpost_rates_book
    • First observedpost_rates_prebook
    • First observedpost_rates_rebook
    • First observedpost_vouchers
    • First observedprebookExperienceTour
    • First observedprechargeFlightExtraCharges
    • First observedput_bookings_bookingid
    • First observedput_bookings_bookingid_amend
    • First observedput_loyalties
    • First observedput_supply_customization
    • First observedput_vouchers_id
    • First observedput_vouchers_id_status
    • First observedsearchBookings
    • First observedsearchExperienceTours
    • First observedsearchFlightsMatrix

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    7 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables tracking competitor websites, changelogs, blog feeds, and pricing pages with meaningful diffs, classification, and Markdown digests via MCP tools for listing, adding, removing competitors, running checks, and retrieving digests or changes.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources