Skip to main content
Glama

Server Details

ATA Travel: agent-first direct booking for accommodations, hotels, and vacation rentals.

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
Uptime
99.9% over 61 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.6/5.0

Scored across 29 tools

Disambiguation3/5

Several tools overlap significantly: get_available_room_cards vs show_available_rooms and get_photo_gallery vs show_property_photos are near-duplicates differentiated only by rendering behavior; multiple availability searches (network, flexible, property, catalog) also risk misselection. Descriptions provide clues, but boundaries are not crisp for an agent.

Naming Consistency5/5

All names use snake_case with a verb-first pattern (get_*, search_*, create_*, start_*, etc.), and no mixed conventions appear. 'ping' is the only outlier, which is negligible.

Tool Count2/5

29 tools is above the 25-tool threshold and feels heavy; many are granular read-only or verification utilities that could be consolidated. While the travel domain is complex, the set is over-scoped.

Completeness3/5

Core discovery and provisional booking are covered, but there is no update, cancel, or payment tool, and booking management after creation is read-only. An agent cannot modify or cancel a reservation, which is a notable gap for a travel booking server.

Available Tools

29 tools
create_provisional_bookingAInspect

Secure a reservation or create a host-approval enquiry on behalf of a traveler. policyAcknowledged is required as an explicit boolean and must be true for financially binding flows after the exact total, payment schedule, and cancellation terms are shown; identity verification is not consent. A host-approval enquiry may pass false because payment is not due unless accepted. Also requires the traveler’s full name, email, and country (guestCountry, required for bookings; optional for quotes) plus travelerAssertion or approved internal BOOKING_HOLD agentHandoffId. If verification is needed, keep internal tool details private; tell the traveler to confirm their email and follow the code or link instructions returned by verification. If instant book is enabled and payment is ready, creates an inventory-holding provisional booking and returns payment/manual-payment next steps. If instant book is disabled or Stripe checkout is not ready, creates an enquiry hold for host approval/payment follow-up.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoOptional traveler comments, questions, or requests for the host. Especially useful for host-approval enquiries.
adultsYes
roomIdYes
checkInYes
checkOutYes
childrenNo
guestNameYesTraveler’s full name, as supplied by the traveler.
guestEmailYes
guestPhoneNo
ratePlanIdNoRate plan ID. If omitted, the system auto-selects the default active rate plan per night, then the cheapest active auto-selectable fallback.
guestCountryYesRequired traveler country, as supplied by the traveler. Ask only if missing. Do not infer it from the property location, language, currency, or phone number. Quotes do not require country.
priceAudienceNo
propertyTokenYes
agentHandoffIdNoApproved ATA traveler handoff ID from start_traveler_handoff/get_traveler_handoff_status. Required for third-party agents before inventory-holding booking actions.
displayCurrencyNoOptional 3-letter currency for approximate traveler-facing display conversion. Native property currency remains authoritative.
internalAgentKeyNo
bookingAssistanceNoInternal Little John booking attribution; requires the internal agent credential.
selectedRoomCountNoFor direct-booking room-count configurations, the number of rooms the traveler selected. Use defaultSelectedRoomCount from availability results.
travelerAssertionNoSigned traveler email verification assertion from ATA.
policyAcknowledgedYesExplicit policy-consent state. Set true only after the traveler agrees to the exact price, payment schedule, and cancellation terms. Required before creating either an instant-book hold or a host-approval enquiry.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only supply generic mutation flags (readOnly=false, idempotent=false); the description adds substantial context beyond them: consent semantics (identity verification is not consent), auth requirements (travelerAssertion or approved agentHandoffId), privacy guidance during verification, and the two distinct side-effect paths (inventory-holding provisional booking vs enquiry hold). No contradiction with destructiveHint=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?

Front-loaded with the core action and the consent rule, then the required identity fields, then branch behavior. It is dense but every sentence carries operational meaning; only slight redundancy with policyAcknowledged's schema description 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?

For a 20-parameter mutation with no output schema, the description supplies the essential consent, identity, and branch semantics and even sketches the return (payment/manual-payment next steps, or host-approval follow-up). Return-value detail and a few opaque parameters remain undocumented, but nothing critical is missing for correct invocation.

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

Parameters4/5

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

With 20 params at 50% schema coverage, the description carries part of the load: it explains policyAcknowledged's consent conditions, guestCountry's requirement/profile and that it must not be inferred, and the travelerAssertion/agentHandoffId alternatives. It leaves several params (priceAudience, displayCurrency, selectedRoomCount, bookingAssistance, internalAgentKey) to the schema, so it does not fully compensate for the coverage gap.

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 with scope: secure a reservation OR create a host-approval enquiry on behalf of a traveler. The two branches (instant-book vs enquiry hold) are named, and the sibling create_quote is implicitly distinguished by the description's own handling of quotes vs bookings.

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

Usage Guidelines4/5

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

Gives explicit conditions: policyAcknowledged must be true for financially binding flows but may be false for host-approval enquiries; country is required for bookings but optional for quotes; instant book enabled vs disabled determines which hold is created. It stops short of naming create_quote as the alternative for quote-only flows, but the when-to-use logic is unusually complete.

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

create_quoteAInspect

Generate a non-binding reference quote for a traveler. Requires guest name/email plus a current travelerAssertion or fresh approved internal QUOTE agentHandoffId. If verification is needed, keep internal tool details private; tell the traveler to confirm their email and follow the code or link instructions returned by verification. Quotes do not hold inventory or guarantee future availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsYes
roomIdYes
checkInYes
checkOutYes
childrenNo
guestNameYes
guestEmailYes
guestPhoneNo
ratePlanIdNoRate plan ID. Optional.
guestCountryNoOptional for a quote. If omitted, the traveler supplies it when completing the booking.
priceAudienceNo
propertyTokenYes
agentHandoffIdNoFresh approved ATA traveler handoff ID from start_traveler_handoff/get_traveler_handoff_status. Required for third-party quote creation without a current traveler assertion.
displayCurrencyNoOptional 3-letter currency for approximate traveler-facing display conversion. Native property currency remains authoritative.
internalAgentKeyNo
selectedRoomCountNoFor direct-booking room-count configurations, the number of rooms the traveler selected. Use defaultSelectedRoomCount from availability results.
travelerAssertionNoSigned traveler email verification assertion from ATA.

TDQS

A3.8/5.0
Behavior4/5

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

The description goes beyond the annotations by disclosing that the quote is non-binding, that it does not hold inventory or guarantee availability, and that verification steps may require keeping internal details private. These are meaningful behavioral traits beyond what readOnlyHint/openWorldHint/idempotentHint reveal. It does not contradict any annotation.

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

Conciseness5/5

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

Three sentences convey the core purpose, prerequisites, and key behavioral caveats with no filler. The most important information is front-loaded, and every clause earns its place. The density is appropriate for the tool's complexity.

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?

The description covers the main behavioral caveats and verification-handling guidance, but with 17 parameters, no output schema, and only 35% schema coverage, it is not complete enough on its own. It omits what the tool returns, how optional parameters like priceAudience or selectedRoomCount behave, and how to handle failure cases. It is adequate for tool selection but not fully sufficient for correct invocation.

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?

The schema has only 35% parameter description coverage, so the description must compensate, but it only adds nuance for guestName/guestEmail and the travelerAssertion/agentHandoffId auth path. With 17 parameters, the description leaves required fields like propertyToken, roomId, checkIn, checkOut, and adults without any explanatory context. This is a significant gap for correct invocation.

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 outcome: 'Generate a non-binding reference quote for a traveler.' It clearly distinguishes this tool from booking-related siblings by emphasizing the quote is non-binding and does not hold inventory. The purpose is immediately understandable and not a tautology of the tool name.

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

Usage Guidelines3/5

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

The description gives clear operational context by specifying prerequisites (guest name/email plus travelerAssertion or agentHandoffId) and notes that quotes do not hold inventory, implying this is not for provisional bookings. However, it never explicitly names an alternative tool like create_provisional_booking or states 'use this when...' versus 'use that when...'. The usage guidance 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.

get_available_room_cardsRead available room cardsA
Read-onlyIdempotent
Inspect

Data-only: read a page inside an already mounted comparison. For initial presentation use show_available_rooms; do not page this tool to assemble Markdown thumbnails. Read-only room comparison presentation. First search availability, then select returned property/room/rate/count IDs and preserve the exact dates, guests, budget and display currency. Rechecks the existing property availability tool for current authoritative stay totals; never accepts prices or quote data. Up to3 properties,4 cards/page,60 offers maximum. show_available_rooms renders once; get_available_room_cards is data-only for mounted-card pagination. Photo selection opens only the selected room gallery. No bookings, holds, quotes, emails or payments.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsYes
budgetNoOptional additional budget constraint. Clarify missing currency or basis before calling. Do not combine with legacy maxPrice/maxPriceCurrency.
offsetNo
checkInYes
checkOutYes
childrenNo
selectionsYesProperties and exact room/rate/count selections from prior availability. Omit offers to compare currently available offers at that property.
displayCurrencyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindYes
cardsYes
queryYes
totalYes
adultsYes
offsetYes
checkInYes
messageYes
versionYes
checkOutYes
childrenYes
checkedAtYes
expiresAtYes
truncatedYes
nextOffsetYes
previousOffsetYes
unavailablePropertiesYes

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, and closed-world, so the safety profile is covered. The description adds genuinely new context: hard limits (3 properties, 4 cards/page, 60 offers), that it rechecks availability for authoritative totals, that it 'never accepts prices or quote data', and that it performs no bookings/holds/quotes/payments. This is useful behavioral disclosure 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.

Conciseness3/5

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

The scoping statement is front-loaded, but the text is a dense run-on with real redundancy: 'data-only' appears twice, show_available_rooms is explained twice, and 'never accepts prices or quote data' overlaps with 'No bookings, holds, quotes, emails or payments.' 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?

An output schema exists, so return values need no explanation, and annotations cover safety. The description supplies limits, prerequisites, sibling routing, and negative exclusions, making it largely complete for a nested-object pagination tool. Minor gaps remain around offset/children semantics, which are neither in the description nor the schema.

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

Parameters3/5

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

Schema coverage is only 25% across 8 parameters, so the description carries some burden. It adds meaning for selections (property/room/rate/count IDs), and the need to preserve exact dates, guests, budget, and display currency, plus the 3-property/4-card/60-offer caps. However, it does not explain offset pagination or children, leaving notable gaps relative to the low schema coverage.

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: reading a page of room comparison cards inside an already mounted comparison. It explicitly differentiates itself from sibling show_available_rooms ('data-only for mounted-card pagination' vs 'renders once'), so an agent can distinguish them. The 'mounted comparison' framing is jargon-heavy but still conveys the operation.

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 names the alternative (show_available_rooms) and the condition that selects it ('For initial presentation'), plus an explicit prohibition ('do not page this tool to assemble Markdown thumbnails'). It also gives the prerequisite workflow ('First search availability, then select returned property/room/rate/count IDs'), leaving little to inference.

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

get_booking_detailsA
Read-onlyIdempotent
Inspect

Read an existing booking by its ATA confirmation code returned by a successful booking or supplied by the traveler. Never invent a code. Requires a current signed ATA traveler assertion, a verified legacy MCP session, or an approved BOOKING_READ handoff with matching booking email and code. For stateless third-party clients, use start_traveler_handoff with action BOOKING_READ and confirmationCode, then poll get_traveler_handoff_status. Returns booked stay, prices, payments and cancellation terms. Cannot modify, cancel, pay, or create inventory holds. Never use a confirmation code as holdId in get_reservation_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyTokenNoKnown property public token; required to match a property-scoped connection.
agentHandoffIdNoApproved BOOKING_READ handoff for this confirmation code. No write scope is accepted.
confirmationCodeYesATA confirmation code from the booking email.
travelerAssertionNoCurrent signed ATA traveler verification assertion; never a typed email or model claim.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark it read-only and non-destructive, but the description adds beyond that: it requires an authentication path, returns specific booking data, cannot modify/cancel/pay/create holds, and warns not to misuse the confirmation code as a holdId. No contradiction with the annotations exists.

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

Conciseness5/5

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

Although seven sentences long, every sentence earns its place: purpose, prohibition, auth requirements, alternative routing, return contents, and sibling-tool warning. The main action is front-loaded and no filler is present.

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

Completeness5/5

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

Given there is no output schema and the tool has multiple authentication modes plus a sibling flow, the description is complete. It covers prerequisite inputs, expected return data, permitted and prohibited behaviors, and the specific alternative to use for stateless clients.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds extra semantic context on top of the schema, such as 'Never invent a code,' the requirement of matching booking email and code, and the explicit handoff flow involving confirmationCode. It mostly reinforces and contextualizes schema descriptions rather than substantially extending them.

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: 'Read an existing booking by its ATA confirmation code.' It clearly differentiates from siblings by warning against using a confirmation code as holdId in get_reservation_status and by naming the alternative handoff flow.

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

Usage Guidelines5/5

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

It gives explicit eligibility requirements (signed traveler assertion, verified MCP session, or approved BOOKING_READ handoff) and tells stateless third-party clients to use start_traveler_handoff with action BOOKING_READ then poll get_traveler_handoff_status. It also states what the tool cannot do, so an agent knows when to look elsewhere.

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

get_building_details
Read-onlyIdempotent
Inspect

Get a published ATA building/complex profile with assigned stays and map coordinates. Use slug from search_buildings or property search results. For ordinary stay comparisons, get live availability then default to one show_available_rooms comparison. For focused property/room discussion, get details then show_property_photos when useful. Respect text-only/unsupported clients and avoid repeated widgets.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
get_company_missionA
Read-onlyIdempotent
Inspect

Returns the official ATA company mission and description. Call this when a user asks what ATA is, what we do, our vision, or about the company.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is fully covered. Description adds only that it returns 'official' content, but doesn't disclose any additional behavioral traits beyond annotations.

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

Conciseness5/5

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

Two concise sentences: one states purpose, one gives usage guidance. No wasted words, front-loaded with key action. Every sentence adds 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?

Given no output schema, description could hint at return type (e.g., 'returns a string with the mission text'). However, for a simple informational query, the description is sufficient. No missing critical context for the agent to use 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?

Tool has zero parameters. According to guidelines, baseline is 4 for no parameters. Description does not need to add parameter information, and schema coverage is 100% trivially.

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

Purpose5/5

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

Description clearly states it returns the official ATA company mission and description, with specific usage scenarios (user asks what ATA is, vision, company). Distinct from all siblings which are unrelated (bookings, quotes, properties, etc.).

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

Usage Guidelines4/5

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

Explicitly tells when to call: 'when a user asks what ATA is, what we do, our vision, or about the company.' Does not mention when not to call or alternatives, but no sibling provides similar functionality, so it's clear this is the only tool for company info.

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

get_network_discovery_context
Read-onlyIdempotent
Inspect

Return a compact, live summary of destinations, stay types, capacity, amenities, views, and published suitability guidance currently available on the ATA network. Use this before offering discovery shortcuts or asking a vague traveler to choose from options. For ordinary stay comparisons, get live availability then default to one show_available_rooms comparison. For focused property/room discussion, get details then show_property_photos when useful. Respect text-only/unsupported clients and avoid repeated widgets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

get_property_details
Read-onlyIdempotent
Inspect

Get date-free property and room details, including traveler-facing amenities, property-authored direct-booking benefits, policies, Events & Weddings, room profiles, published image links and up to two bounded image previews (property and uniquely matched room). Missing previews retain links. When the traveler names a room or unit, pass that wording as roomQuery before treating it as another property. For a focused property/room discussion, proactively use show_property_photos when published photos help. Use PROPERTY or the uniquely matched ROOM; preserve room identity. Skip missing/ambiguous photos, unsupported UI, text-only preferences and already-shown galleries. Image links are fallback references, not a replacement for the supported viewer.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomQueryNoOptional traveler-provided room or unit name, such as '5B Casita Vista'. No stay dates are required.
propertyTokenYes
get_quote_detailsA
Read-onlyIdempotent
Inspect

Read a previously created quote using its actual quoteId, quoteHash or quoteUrl. Requires a current signed traveler assertion, verified legacy session, or the still-valid USED QUOTE handoff that created this exact quote. A quote is not a booking or inventory hold. Returns stored prices and payment terms; never substitute another room's payment schedule.

ParametersJSON Schema
NameRequiredDescriptionDefault
quoteIdNo
quoteUrlNoExisting ATA /stays/quote/ link supplied by the traveler or returned by create_quote.
quoteHashNo
propertyTokenNo
agentHandoffIdNoStill-valid USED QUOTE handoff that created this quote. Read-only access grants no additional writes; expired handoffs require fresh traveler verification.
travelerAssertionNoCurrent signed ATA traveler assertion for the quote owner.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description adds meaningful behavioral detail: it names the required authentication/authorization paths, states that the tool returns 'stored prices and payment terms,' and explicitly clarifies that a quote is not a booking or inventory hold. This enriches the agent's mental model of the tool's state and side effects without contradicting any annotation.

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

Conciseness5/5

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

Three dense sentences with zero filler: the first states the purpose and identifiers, the second enumerates auth prerequisites, and the third sets expectations about return values and limitation. Information is front-loaded and every sentence earns its place.

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

Completeness4/5

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

In the absence of an output schema, the description covers the main return type ('stored prices and payment terms') and all auth paths. It does not specify whether the three identifiers are mutually exclusive or what happens when multiple are provided, nor does it state a precedence order. For a 6-parameter tool with no required fields and no output schema, this is a minor but meaningful 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?

With schema description coverage at only 50%, the description compensates by explaining that quoteId, quoteHash, and quoteUrl are interchangeable identifiers ('using its actual quoteId, quoteHash or quoteUrl'). It also clarifies that agentHandoffId must be a 'still-valid USED QUOTE handoff' and travelerAssertion must be 'current signed.' However, propertyToken remains undescribed in both schema and description, so compensation is incomplete.

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 ('Read'), resource ('previously created quote'), and the three accepted identifiers, immediately distinguishing it from sibling tools like create_quote and get_booking_details. The clarifying sentence 'A quote is not a booking or inventory hold' reinforces the differentiation. No ambiguity remains about what operation this tool performs.

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

Usage Guidelines4/5

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

The description explicitly states the conditions under which the tool can be used ('Requires a current signed traveler assertion, verified legacy session, or the still-valid USED QUOTE handoff'), and warns against misuse ('never substitute another room's payment schedule'). It does not name sibling alternatives explicitly, but the caveat about quotes vs bookings implies when not to use it. Clear context with a minor exclusion makes this a 4.

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

get_reservation_statusA
Read-onlyIdempotent
Inspect

Return the current status and exact stay, price, payment schedule, and cancellation terms for a reservation previously created through ATA. Requires the hold ID plus the same verified traveler context/assertion or the secure booking handoff that created it. This tool is read-only and cannot change, pay, cancel, check in, or check out a reservation.

ParametersJSON Schema
NameRequiredDescriptionDefault
holdIdYesHold ID returned by create_provisional_booking.
guestEmailNoTraveler email. Required when using travelerAssertion; populated automatically for a verified MCP session.
propertyTokenNoKnown public property token for this reservation; must match the hold property when supplied.
agentHandoffIdNoSecure BOOKING_HOLD handoff ID that created this reservation.
displayCurrencyNoOptional 3-letter currency for approximate display conversion. Native property currency remains authoritative.
travelerAssertionNoCurrent signed ATA traveler verification assertion for the reservation guest.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint, non-destructive), the description explicitly states the tool cannot change, pay, cancel, check in, or check out a reservation. It also discloses the authentication/context requirement, which is meaningful behavioral information the agent needs before calling.

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

Conciseness5/5

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

Three sentences, each earning its place: what the tool returns, what it requires, and what it cannot do. The most important scoping information is front-loaded, and there is no redundancy with the schema or annotations.

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?

Even without an output schema, the description enumerates the returned content (status, stay, price, payment schedule, cancellation terms), covers prerequisites, and clarifies limitations. For a read-only lookup tool, this is sufficient for an agent to select and invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds semantic value by explaining that the hold ID must be paired with the same verified traveler context/assertion or the secure booking handoff that created the reservation, which clarifies the relationship between holdId, travelerAssertion, agentHandoffId, and guestEmail.

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

Purpose5/5

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

The description names a specific verb ('return') and a precise resource: the status, exact stay, price, payment schedule, and cancellation terms for an ATA-created reservation. This clearly separates it from quote, building, property, and traveler-verification tools among the siblings.

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

Usage Guidelines4/5

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

The description gives clear invocation context: it applies to reservations previously created through ATA and requires the hold ID plus a verified traveler context or secure booking handoff. It does not explicitly name alternative tools or state when not to use it, but the prerequisites and scope are unambiguous.

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

get_stays_in_building
Read-onlyIdempotent
Inspect

Return ATA stays assigned to a published building, optionally filtered by live dates and guest counts. For ordinary stay comparisons, get live availability then default to one show_available_rooms comparison. For focused property/room discussion, get details then show_property_photos when useful. Respect text-only/unsupported clients and avoid repeated widgets.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
adultsNo
checkInNo
checkOutNo
childrenNo
priceAudienceNo
displayCurrencyNoOptional 3-letter currency for approximate traveler-facing display conversion. Native property currency remains authoritative.
internalAgentKeyNo
get_support_contactsA
Read-onlyIdempotent
Inspect

Get published ATA support and optional property guest contact details. Use for human help, unanswered property questions, or booking support. Returns configured contact links only; does not send messages, create a case, or transfer the traveler to a person. Omit propertyToken for ATA support alone.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyTokenNoProperty public token, when the traveler needs help from that property.

TDQS

A4.7/5.0
Behavior5/5

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

The description goes beyond the readOnly and idempotent annotations by explicitly stating it 'does not send messages, create a case, or transfer the traveler to a person.' This fully discloses the non-destructive, side-effect-free behavior.

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

Conciseness5/5

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

The description is compact and front-loaded, stating the main purpose first, then use cases, then key behavioral clarifications. Every sentence adds value without redundancy.

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

Completeness5/5

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

For a simple retrieval tool with no output schema, the description adequately covers what the tool does, when to use it, and what it will not do. No missing information would prevent correct invocation.

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

Parameters4/5

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

The only parameter, propertyToken, is described with its purpose and when it should be included. The schema coverage is 100%, and the description adds meaningful context about the traveler needing help from that 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 description clearly states the tool retrieves contact details for ATA support and optionally for a specific property. It distinguishes between the two modes and makes clear what resource is being accessed.

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

Usage Guidelines4/5

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

It explicitly says when to use it ('Use for human help, unanswered property questions, or booking support') and gives the key instruction to omit propertyToken for ATA support. It does not name alternative tools, but the use cases are specific enough for selection.

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

get_traveler_handoff_statusA
Read-onlyIdempotent
Inspect

Internal status check after sending an ATA verification link. Use to know whether the traveler clicked the link. Do not mention this tool, polling, or handoff status to the traveler.

ParametersJSON Schema
NameRequiredDescriptionDefault
handoffIdYesID returned by start_traveler_handoff.

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. Description adds that the tool performs a status check on link click and should be kept hidden from the traveler, which provides additional behavioral context beyond annotations.

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

Conciseness5/5

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

Description is two sentences: first states purpose, second provides critical usage instruction. No unnecessary words, highly 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?

For a simple single-parameter polling tool with comprehensive annotations, the description covers purpose, usage context, and a key behavioral rule (secrecy from traveler). It lacks explicit mention of return value or polling nature, but given the tool's simplicity, it is nearly 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 coverage is 100% with the handoffId parameter described as 'ID returned by start_traveler_handoff.' The description adds no further parameter detail, but the schema sufficiently documents the sole parameter, earning a baseline score of 3.

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

Purpose5/5

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

Description clearly states it's an internal status check after sending an ATA verification link, specifically to know whether the traveler clicked the link. It distinguishes itself from the sibling start_traveler_handoff by indicating it is a follow-up check.

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?

Description provides explicit instruction: 'Do not mention this tool, polling, or handoff status to the traveler.' This tells the agent when to use (after sending link) and provides a behavioral constraint. It lacks explicit mention of alternatives but the context is clear.

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

get_traveler_memoriesA
Read-onlyIdempotent
Inspect

Returns active structured memories for a verified traveler. Use this when you need durable personalization beyond the context already provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
travelerIdYesVerified traveler ID from the private traveler context.
travelerAssertionNoCurrent signed ATA traveler assertion matching travelerId; required on shared transports.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful filtering context ('active' memories, 'verified traveler'), but it does not disclose what happens on failure, authentication requirements beyond the schema hint, or open-world variability.

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

Conciseness5/5

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

The description is two sentences with no filler. The primary function is front-loaded, and the usage guidance earns its place.

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

Completeness4/5

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

Given the annotations cover safety and the schema fully documents the parameters, the description is largely complete. It explains the return concept ('active structured memories') since there is no output schema, though it does not describe memory shape or pagination.

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 travelerId and travelerAssertion. The description's phrase 'verified traveler' loosely maps to travelerId but adds no new parameter-level meaning 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 names a specific verb ('Returns') and a specific resource ('active structured memories for a verified traveler'), so the tool's function is immediately clear. It also gives a use-case hint ('durable personalization beyond the context already provided') that helps distinguish it from related memory or traveler tools.

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

Usage Guidelines4/5

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

The description provides an explicit 'Use this when...' condition tied to needing durable personalization beyond current context. It does not name an alternative or state a clear when-not-to-use case, but the guidance is concrete enough for an agent to select the tool.

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

get_traveler_verification_statusA
Read-onlyIdempotent
Inspect

Check whether a code or email-link challenge started in this MCP session has completed. A completed link binds the traveler privately to this MCP session.

ParametersJSON Schema
NameRequiredDescriptionDefault
challengeRefYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context by explaining the consequence of a completed challenge, namely the private binding of the traveler to this MCP session. No contradiction with annotations exists.

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

Conciseness5/5

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

Two tight sentences with no filler. The main purpose is front-loaded ('Check whether...'), and the additional binding context is compact and relevant.

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, read-only status check, the description provides enough context about what the challenge is and its scope. There is no output schema, so a slightly more explicit statement about the returned status shape would strengthen it, but this omission is minor given how straightforward the tool's purpose is.

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 0%, so the description must compensate, and it partially does by clarifying that the challenge is a code or email-link challenge within this session. However, it never explicitly says challengeRef is the identifier returned from start_traveler_verification or how to obtain it, leaving that connection implied rather than direct.

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

Purpose5/5

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

The description uses a specific verb ('check whether') and names the exact resource: 'a code or email-link challenge started in this MCP session.' It clearly targets completion status and even explains what completion means ('binds the traveler privately'), distinguishing this from sibling tools like start_traveler_verification and verify_traveler_code.

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

Usage Guidelines3/5

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

The description gives useful scope ('started in this MCP session') but never explicitly says when to use this tool instead of a sibling or what steps should precede it. The workflow is implied rather than stated, so an agent must infer that this follows starting a challenge and that it is not for verifying codes or checking handoff status.

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

list_property_extrasA
Read-onlyIdempotent
Inspect

List date-free published events, services, activities, day passes, experiences, dining, wellness, packages, transfers, and other extras for a known property. Returns read-only offer details and ATA purchase links when the property is published on ATA; it does not create an order.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional exact offer category filter, such as DAY_PASS, EXPERIENCE, WELLNESS, TRANSPORT, or PACKAGE.
propertyTokenYes
standaloneOnlyNoWhen true, exclude offers that require a stay.

TDQS

A4/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint:false. The description adds useful context beyond these by explaining the 'date-free' scope, the 'published on ATA' condition, and explicitly stating it 'does not create an order.' This goes beyond simply restating the annotations.

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

Conciseness5/5

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

Two sentences, no fluff. The first sentence states the primary function and scope; the second clarifies return details and non-mutation. Every phrase contributes to understanding without repetition.

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

Completeness4/5

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

For a list tool with no output schema, the description adequately covers the return values (read-only details and ATA purchase links) and the key condition (published on ATA). It could mention pagination or sorting, but these are not critical for selection. The description is complete enough for an agent to decide when to call 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?

Input schema coverage is 67% (two of three parameters have descriptions). The description adds domain context like 'date-free' and 'for a known property,' which informally ties to parameters, but it does not explain the propertyToken parameter or any parameter-specific behavior beyond what is in the schema. The description is helpful but doesn't fully compensate for the missing schema descriptions.

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

Purpose5/5

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

The description clearly identifies the verb 'List' and specific resources (date-free published events, services, etc.) for a known property, with scope indicated by 'for a known property' and non-mutating behavior stated. This distinguishes it from sibling tools like search_property_catalog, though it doesn't name alternatives 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 description implies when to use the tool (when you have a known property) and mentions a condition (when the property is published on ATA), but it does not reference any alternative tools or exclusionary criteria. There is no explicit 'when not to use' or naming of siblings, so the 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.

pingA
Read-onlyIdempotent
Inspect

A simple ping tool

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, covering the main behavioral traits. The description adds no extra context but does not contradict annotations. For a simple tool with 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.

Conciseness5/5

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

The description is a single, concise sentence that perfectly front-loads the purpose without any unnecessary words.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, clear annotations, standard ping behavior), the description is complete enough. No output schema is needed for a basic connectivity check.

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 schema coverage is 100%. The description does not need to elaborate on parameters; the baseline of 4 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 name 'ping' and description 'A simple ping tool' clearly indicate a health-check or connectivity test. It is distinct from all sibling tools which focus on business operations like bookings and availability.

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

Usage Guidelines3/5

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

The description provides no explicit guidance on when to use or when not to use this tool. However, the purpose is self-evident for a ping tool, and there are no alternative ping-like tools among siblings, so the ambiguity is minimal.

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

search_buildingsA
Read-onlyIdempotent
Inspect

Find published ATA building/complex profiles by destination, neighborhood, tag, amenity, or free-text. Use this for questions about buildings, condo towers, complexes, gated communities, marina developments, or neighborhoods.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNo
tagsNo
queryNoBuilding name, neighborhood, city, or text query.
amenitiesNo
maxResultsNo
neighborhoodNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description doesn't need to restate safety. It adds context about the data source ('published ATA building/complex profiles') but doesn't discuss any other behavioral traits like pagination 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.

Conciseness5/5

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

Two sentences, front-loaded with purpose and usage. No wasted words; the structure is efficient and clear.

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?

Given the lack of output schema and 6 parameters, the description is adequate for a search tool but could be more complete by mentioning what the response contains (e.g., building IDs, names) or any result 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?

With only 17% schema description coverage, the description compensates by mapping search dimensions (destination, neighborhood, tag, amenity, free-text) to parameters, but it does not detail individual parameters or formats.

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 verb 'Find' and the resource 'published ATA building/complex profiles' and lists multiple search dimensions. However, it doesn't explicitly differentiate from sibling tools like get_building_details or search_property_catalog.

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

Usage Guidelines3/5

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

The description provides clear usage context ('Use this for questions about buildings...') but does not specify when not to use or mention alternative tools for specific functions, such as get_building_details for detailed info on a single building.

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

search_flexible_network_availability
Read-onlyIdempotent
Inspect

Find real, priced ATA stays when the traveler is flexible. Defaults to a window 28–56 days from today, three nights, and two adults only when those values are missing; always return those defaults as explicit assumptions. Preferences are soft ranking signals, not a closed taxonomy. Default next step for a useful comparison: show_available_rooms with returned IDs and unchanged criteria; do not wait for a photo request or repeat this search just to render. One view after final results; skip unsupported UI, text-only preferences, no priced offers, legacy maxPrice caps and already-visible comparisons.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewsNoOptional soft view preferences for flexible discovery.
adultsNoAdult guests. Defaults to 2.
nightsNoLength of stay. Defaults to 3 nights.
childrenNoChild guests. Defaults to 0.
locationNoOptional city, state, country, neighborhood, or building. Omit when the traveler is open to ATA's current destinations.
maxPriceNoMaximum total stay price.
amenitiesNoOptional soft amenity preferences for flexible discovery.
maxResultsNoMaximum priced stays to return. Defaults to 4.
preferencesNoOpen-ended soft preferences inferred from the traveler's own words or live network facets.
propertyTypeNoOptional soft property-type preference; it ranks results and is reported as a difference when unavailable.
latestCheckInNoLatest acceptable check-in date. Defaults to 56 days from today.
priceAudienceNo
displayCurrencyNoOptional traveler-facing display currency.
earliestCheckInNoEarliest acceptable check-in date. Defaults to 28 days from today.
internalAgentKeyNo
maxPriceCurrencyNoCurrency for maxPrice when filtering mixed native currencies.
search_network_availability
Read-onlyIdempotent
Inspect

Find accommodations across the ATA Travel Network with real-time pricing. Use when dates are known. Supports filtering by amenities, views, property type, and free-text keyword to handle vague requests. Default next step for a useful comparison: show_available_rooms with returned IDs and unchanged criteria; do not wait for a photo request or repeat this search just to render. One view after final results; skip unsupported UI, text-only preferences, no priced offers, legacy maxPrice caps and already-visible comparisons.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewsNoFilter by room views. e.g. ['Ocean', 'Mountain', 'Garden', 'City']
adultsNoNumber of adults
budgetNoOptional additional budget constraint. Clarify missing currency or basis before calling. Do not combine with legacy maxPrice/maxPriceCurrency.
checkInYesCheck-in date (YYYY-MM-DD)
keywordNoFree-text keyword matched against property name/description. Great for vibe searches like 'boutique', 'beachside', 'romantic'.
checkOutYesCheck-out date (YYYY-MM-DD)
childrenNoNumber of children
locationNoOptional city, state, or country. Omit when the traveler knows dates but is open to ATA's current destinations.
maxPriceNoMaximum total price filter
amenitiesNoFilter by amenities on property or rooms. e.g. ['Pool', 'Gym', 'Pet Friendly', 'Spa']
preferencesNoOpen-ended soft ranking signals. These do not exclude otherwise valid stays.
propertyTypeNoe.g. 'Hotel', 'Apartment', 'Villa'
priceAudienceNo
displayCurrencyNoOptional 3-letter currency for approximate traveler-facing display conversion. Native property currency remains authoritative.
internalAgentKeyNo
maxPriceCurrencyNoCurrency for maxPrice when filtering across mixed property currencies. If omitted, maxPrice is compared to each property's native currency.
search_property_availability
Read-onlyIdempotent
Inspect

Search specific dates and occupancy for a known property using its propertyToken. Default next step for a useful comparison: show_available_rooms with returned IDs and unchanged criteria; do not wait for a photo request or repeat this search just to render. One view after final results; skip unsupported UI, text-only preferences, no priced offers, legacy maxPrice caps and already-visible comparisons.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsNo
budgetNoOptional additional budget constraint. Clarify missing currency or basis before calling. Do not combine with legacy maxPrice/maxPriceCurrency.
checkInYesCheck-in date (YYYY-MM-DD)
checkOutYesCheck-out date (YYYY-MM-DD)
childrenNo
priceAudienceNo
propertyTokenYesExact public propertyToken returned by discovery or property context. Never add a prefix or invent a token.
displayCurrencyNoOptional 3-letter currency for approximate traveler-facing display conversion. Native property currency remains authoritative.
internalAgentKeyNo
search_property_catalog
Read-onlyIdempotent
Inspect

Browse the ATA property catalog WITHOUT needing dates. Fast, lightweight — no availability or pricing check. Use this for vague exploration, browsing by type/amenity/view, or when the traveler has no dates yet. For ordinary stay comparisons, get live availability then default to one show_available_rooms comparison. For focused property/room discussion, get details then show_property_photos when useful. Respect text-only/unsupported clients and avoid repeated widgets.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewsNoe.g. ['Ocean', 'Mountain', 'Garden']
adultsNoOptional adults for occupancy-safe catalog suggestions.
keywordNoFree-text matched against name/description. e.g. 'boutique', 'beachside', 'romantic'
childrenNoOptional children for occupancy-safe catalog suggestions.
locationNoCity, State, or Country to filter by. Omit for a global search.
amenitiesNoe.g. ['Pool', 'Spa', 'Pet Friendly', 'Gym']
maxResultsNoMax number of properties to return (default 10)
preferencesNoOpen-ended soft ranking signals inferred from traveler language or current network facets.
propertyTypeNoe.g. 'Hotel', 'Villa', 'Apartment'
show_available_roomsShow available room cardsA
Read-onlyIdempotent
Inspect

Default visual presentation after the final useful availability comparison when UI is supported and text-only was not requested. Render once without waiting for a photo request; narrate ordinary follow-ups without repeating searches or widgets. Read-only room comparison presentation. First search availability, then select returned property/room/rate/count IDs and preserve the exact dates, guests, budget and display currency. Rechecks the existing property availability tool for current authoritative stay totals; never accepts prices or quote data. Up to3 properties,4 cards/page,60 offers maximum. show_available_rooms renders once; get_available_room_cards is data-only for mounted-card pagination. Photo selection opens only the selected room gallery. No bookings, holds, quotes, emails or payments.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsYes
budgetNoOptional additional budget constraint. Clarify missing currency or basis before calling. Do not combine with legacy maxPrice/maxPriceCurrency.
offsetNo
checkInYes
checkOutYes
childrenNo
selectionsYesProperties and exact room/rate/count selections from prior availability. Omit offers to compare currently available offers at that property.
displayCurrencyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindYes
cardsYes
queryYes
totalYes
adultsYes
offsetYes
checkInYes
messageYes
versionYes
checkOutYes
childrenYes
checkedAtYes
expiresAtYes
truncatedYes
nextOffsetYes
previousOffsetYes
unavailablePropertiesYes

TDQS

A4.2/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=false, but the description adds real behavioral context: it rechecks authoritative stay totals and refuses price/quote data, renders only once, caps at 3 properties / 4 cards per page / 60 offers, and enumerates what it will never do (bookings, holds, quotes, emails, payments). Some of this is workflow narration rather than behavior, which keeps it from a clean 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?

Every sentence carries information — limits, exclusions, sibling routing — and the when-to-use condition leads. However it is a dense run-on with mild redundancy ('Render once' is restated as 'show_available_rooms renders once') and a typo ('Up to3 properties') that slightly impede scanning.

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 complex nested-object tool with an output schema (so return values need no explanation), the description covers workflow ordering, caps, sibling routing and hard exclusions. The only gap is the offset parameter and how first-page vs. paginated rendering is bounded, which is only handled indirectly via the sibling reference.

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 only 25%, so the description must compensate, and it does: it maps the caller's obligations to selections (property/room/rate/count IDs), exact dates, guests, budget and display currency. The offset/pagination parameter is not addressed here (it is delegated to the sibling), so coverage is strong 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+resource — a read-only visual room-comparison presentation that renders once — and explicitly differentiates itself from the sibling get_available_room_cards ('data-only for mounted-card pagination'). The core purpose is front-loaded but wrapped in workflow phrasing ('Default visual presentation after the final useful availability comparison...'), so it takes parsing to extract the plain 'what it 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?

It gives explicit preconditions (after the final useful availability comparison, when UI is supported, when text-only was not requested) and explicit exclusions (no photo request needed, no repeat searches or widgets). It names the alternative sibling and the condition that selects it: get_available_room_cards for mounted-card pagination, plus a stated ordering dependency on search_property_availability.

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

show_property_photosShow property or room photosA
Read-onlyIdempotent
Inspect

Default visual presentation for a focused property or room discussion when photos help, UI is supported and text-only was not requested. Render once; reuse the same returned room identity for explicit retries. Read only: show a PROPERTY-only or ROOM-only gallery of actual published photos. Default ROOM when roomId/roomQuery is supplied, PROPERTY otherwise. A room never includes property photos. Use exact room IDs from availability or a unique room name; no substitutions. Pages contain at most12 photos. No dates required. get_photo_gallery is data-only for in-card pagination; show_property_photos intentionally renders once.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoPROPERTY only or ROOM only. Omit to infer ROOM when a room is supplied, PROPERTY otherwise.
offsetNo
roomIdNoExact roomId from availability; must belong to this property.
roomQueryNo
propertyTokenYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
viewYes
totalYes
offsetYes
photosYes
roomIdYes
messageYes
versionYes
roomNameYes
roomMatchYes
nextOffsetYes
propertyNameYes
propertyTokenYes
previousOffsetYes
mediaPropertyIdYes

TDQS

A4.3/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 the description reinforces this with 'Read only'. It adds real behavioral context beyond the annotations: render once, reuse the same returned room identity for explicit retries, pages capped at 12 photos, no dates required, and that a room gallery never includes property photos.

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?

Dense and front-loaded, with the routing/default logic and the render-once constraint stated up front. Slightly jargon-heavy ('explicit retries', 'in-card pagination'), but each sentence carries a distinct constraint.

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?

An output schema exists so return values need not be described, and the description covers mode inference, ID requirements, pagination cap, and the render-once contract. Only the offset/propertyToken semantics remain vague, a minor gap for a 5-param 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?

Schema coverage is only 40%, and the description compensates for the important parameters: it explains view inference (ROOM when roomId/roomQuery supplied, PROPERTY otherwise) and that roomId must be an exact ID from availability or a unique room name. However, offset and propertyToken are left undocumented, so the 5-param tool is only partially covered.

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 (show/render) and resource (published photos of a property or room), and explicitly distinguishes it from the sibling get_photo_gallery ('data-only for in-card pagination'). An agent can pick between the two 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 Guidelines5/5

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

Gives explicit when-to-use conditions (focused property/room discussion, photos help, UI supported, text-only not requested) and names the alternative get_photo_gallery with the condition that selects it. It also dictates when-not to substitute: 'no substitutions' for room IDs.

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

start_traveler_handoffAInspect

Internal approval step for quote or booking tools. Before calling, read guestEmail back to the traveler and confirm it is correct; then set emailConfirmedByTraveler=true. If an email is sent, tell the traveler only to check their inbox and click the secure ATA link. Do not mention handoffs/tool details to the traveler.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesUse BOOKING_HOLD before creating a reservation; BOOKING_READ grants only read access to an existing booking for questions.
adultsNo
roomIdNo
checkInNo
quoteIdNo
checkOutNo
childrenNo
agentNameNoAgent/application display name when known.
guestNameYesTraveler name collected by the agent.
quoteHashNo
guestEmailYesTraveler email. ATA sends the verification/approval link here.
guestPhoneNo
ratePlanIdNo
mcpSessionIdNoOptional client-side MCP/session correlation ID.
agentProviderNoAgent platform or provider name when known.
intentSummaryNoShort traveler-facing summary of what ATA is verifying, without mentioning internal handoff/tool details.
propertyTokenNo
confirmationCodeNoRequired for BOOKING_READ: the ATA confirmation code printed on the booking confirmation.
selectedRoomCountNo
emailConfirmedByTravelerNoSet true only after reading guestEmail back to the traveler and they confirm it is correct.

TDQS

A4.4/5.0
Behavior5/5

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

Given that annotations only indicate non-readOnly, non-destructive, non-idempotent, the description adds crucial transparency by revealing side effects: sending an email and setting the emailConfirmedByTraveler flag. It also clarifies the tool's internal nature, exceeding what annotations provide.

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

Conciseness5/5

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

The description is a single paragraph that conveys all essential instructions without redundancy. It is tightly worded and each sentence contributes operational guidance, making it efficient and easy to parse.

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?

While the description provides the core workflow and constraints, it does not elaborate on the broader context (e.g., what constitutes a 'handoff', how this fits with other tools, or expected inputs beyond the two mentioned). However, given the tool's focused purpose and the presence of a schema, the description is largely sufficient for an agent to execute correctly.

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

Parameters2/5

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

The description only clarifies the usage of guestEmail and emailConfirmedByTraveler, while many other parameters (e.g., action, checkIn, checkOut, quoteId, ratePlanId) remain unaddressed. With schema description coverage at 45%, the description does not sufficiently compensate for the missing parameter semantics.

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

Purpose5/5

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

Clearly states it is an internal approval step for quote or booking tools, and enumerates the exact actions to perform (read back email, confirm, set flag, send email). This distinguishes it from other tools by outlining its specific role and workflow.

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?

Provides explicit step-by-step instructions on when and how to use the tool, including prerequisites (read back guestEmail, set emailConfirmedByTraveler after confirmation) and post-conditions (send email, instruct traveler). Also includes a clear directive on what not to mention, which is valuable guidance for the agent.

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

start_traveler_verificationBInspect

Start general traveler verification for this MCP session after the traveler confirms their email address. Uses the property’s configured verification method. This does not create a quote, enquiry, hold, or booking.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodNo
agentNameNo
guestNameYes
guestEmailYes
guestPhoneNo
agentProviderNo
propertyTokenNo
emailConfirmedByTravelerYesTrue only after the traveler confirms the exact email address.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already provide readOnly, idempotent, and destructive hints, so the bar is lower. The description adds useful context: it operates for this MCP session, uses the property's configured verification method, and has no booking creation side effects. However, it does not explain what happens when emailConfirmedByTraveler is false or what the verification flow entails, and the statement about using the property's configured method is ambiguous given the optional method enum in the schema.

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

Conciseness5/5

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

The description is three short, front-loaded sentences with no filler. Every sentence contributes meaningful information: when to call, what it does, and what it does not do.

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

Completeness2/5

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

For a tool with 8 parameters, 3 required fields, no output schema, and sibling tools like verify_traveler_code, this description is undersized. It does not explain return behavior, what starting verification actually does for the traveler, how method interacts with the configured verification method, or what follow-up call is expected next. An agent cannot fully predict the result of invoking this tool.

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 13%, and the description does not compensate. It clarifies emailConfirmedByTraveler by tying it to traveler email confirmation, but leaves method, guestName, guestEmail, guestPhone, agentName, agentProvider, and propertyToken semantically unsupported. The phrase 'uses the property's configured verification method' actually conflicts with the schema's optional method enum, which needs explanation.

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 action—starting traveler verification for the MCP session after email confirmation—and distinguishes itself from booking/quote creation with an explicit negative list. However, it does not explicitly differentiate itself from sibling tools like verify_traveler_code or start_traveler_handoff, and the word 'general' is somewhat vague.

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

Usage Guidelines4/5

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

It gives an explicit precondition ('after the traveler confirms their email address') and explicit exclusions ('does not create a quote, enquiry, hold, or booking'). It does not directly name sibling alternatives such as verify_traveler_code or get_traveler_verification_status, which would make the routing fully explicit.

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

suggest_traveler_memoryAInspect

Save or update one durable traveler memory for personalization. Use only for stable, travel-relevant preferences or constraints explicitly stated by the traveler.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesStable normalized memory key. Choose the closest allowed key.
typeYesMemory category.
valueYesSmall JSON value, e.g. {"hasServiceDog":true} or {"typicalAdults":2,"typicalChildren":1}.
sourceNoUSER_STATED
summaryYesShort practical note, without speculation or sensitive details.
confidenceNoConfidence in this memory. Use 1 for explicit user statements, lower for inferred patterns.
travelerIdYesVerified traveler ID from the private traveler context.
visibilityNoAGENT_ONLY
travelerAssertionNoCurrent signed ATA traveler assertion matching travelerId; required on shared transports.

TDQS

A3.7/5.0
Behavior3/5

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

The description adds 'durable' and confirms write/update semantics, which is consistent with readOnlyHint=false and idempotentHint=false. But it does not disclose return behavior, side effects, or the fact that the schema explicitly permits inferred memories, and the 'explicitly stated' restriction is potentially misleading.

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

Conciseness5/5

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

The description is two short sentences with the core action front-loaded and no redundant phrasing. Every sentence adds essential selection or invocation context.

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 tool with 9 parameters, no output schema, and many sibling tools, the description is minimal but mostly adequate for selecting it. It is incomplete because it does not clarify upsert behavior, expected response, or how to handle the schema's INFERRED source option, leaving an internal inconsistency for the agent to resolve.

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 78%, so the schema already documents most parameters. The description itself adds no per-parameter detail, and its 'explicitly stated by the traveler' guidance may actually conflict with the source and confidence parameters that allow inferred input.

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

Purpose5/5

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

The description clearly states the action ('Save or update') and the resource ('one durable traveler memory for personalization'), which is specific and distinguishable from read-only siblings like get_traveler_memories. It also clarifies the arguably ambiguous tool name 'suggest_traveler_memory' by indicating it is actually a persistence operation.

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

Usage Guidelines3/5

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

The phrase 'Use only for stable, travel-relevant preferences or constraints explicitly stated by the traveler' provides a useful eligibility rule. However, it does not mention alternatives such as get_traveler_memories, and it conflicts with the schema's support for source='INFERRED' and confidence guidance for inferred patterns, making the usage boundary inconsistent.

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

verify_traveler_codeAInspect

Consume the six-digit code for a challenge started in this MCP session. On success, ATA privately binds the verified traveler to this MCP session; no reusable bearer credential is returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
challengeRefYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations mark this as a mutation (readOnlyHint=false) and non-destructive. The description adds valuable behavioral detail: 'On success, ATA privately binds the verified traveler to this MCP session; no reusable bearer credential is returned.' This explains the side effect (session binding) and the absence of a token, which is critical for an agent. However, it does not describe failure behavior or what happens if the code is invalid, so it's not fully transparent.

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

Conciseness5/5

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

The description is two sentences with no fluff. The primary action and side effect are front-loaded, and the security note about no bearer token is a single concise sentence. Every word contributes to understanding.

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?

This is a mutation with no output schema, so the description should ideally mention what is returned or emitted. It notes that no reusable credential is returned, implying a success indication, but does not specify the return format or error conditions. The flow context (part of traveler verification) is partially covered via the session-bound challenge, but the agent lacks guidance on failure handling and expected response, leaving some 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?

With schema description coverage at 0%, the description must compensate for parameter meanings. It does connect challengeRef to 'a challenge started in this MCP session' and identifies code as 'six-digit,' which aligns with the schema patterns. But it does not explain how to obtain the challengeRef, what constitutes a valid code beyond the pattern, or error semantics. The added context is helpful but minimal for a 0% coverage scenario.

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

Purpose5/5

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

The description clearly states the action: 'Consume the six-digit code for a challenge started in this MCP session.' It names the specific resource (challenge) and the context (this session), and clarifies the outcome (binds traveler to session). This distinguishes it from sibling tools like start_traveler_verification and get_traveler_verification_status by focusing on the code consumption step.

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

Usage Guidelines3/5

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

The description implies that this tool is used after a challenge is started in the same MCP session, which selects it from the verification flow. However, it does not explicitly state when to use it versus alternatives (e.g., 'after start_traveler_verification') or when not to use it. The context is clear but exclusions are absent, leaving some inference to the agent.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • Addedget_available_room_cards
    • Addedget_photo_gallery
    • Addedshow_available_rooms
    • Changedshow_property_photos20 fields changed
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "maximum": 100000,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / roomId
        Added value: +{
        +  "description": "Exact roomId from availability; must belong to this property.",
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / view
        Added value: +{
        +  "description": "PROPERTY only or ROOM only. Omit to infer ROOM when a room is supplied, PROPERTY otherwise.",
        +  "enum": [
        +    "PROPERTY",
        +    "ROOM"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / nextOffset
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 9007199254740991,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / offset
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / photos / items / properties / id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / photos / items / properties / status / const
        Added value: +"PUBLISHED"
      • removedOutput schema / properties / photos / items / properties / status / enum
        Removed value: -[
        -  "PUBLISHED",
        -  "UNAVAILABLE"
        -]
      • removedOutput schema / properties / photos / items / properties / url / anyOf
        Removed value: -[
        -  {
        -    "format": "uri",
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / photos / items / properties / url / format
        Added value: +"uri"
      • addedOutput schema / properties / photos / items / properties / url / type
        Added value: +"string"
      • changedOutput schema / properties / photos / items / required
        Previous value: -[
        -  "subject",
        -  "caption",
        -  "status",
        -  "url"
        -]New value: +[
        +  "id",
        +  "subject",
        +  "caption",
        +  "status",
        +  "url"
        +]
      • changedOutput schema / properties / photos / maxItems
        Previous value: -2New value: +12
      • removedOutput schema / properties / photos / minItems
        Removed value: -2
      • addedOutput schema / properties / previousOffset
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 9007199254740991,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / roomId
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / total
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedOutput schema / properties / version / const
        Previous value: -1New value: +2
      • addedOutput schema / properties / view
        Added value: +{
        +  "enum": [
        +    "PROPERTY",
        +    "ROOM"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "version",
        -  "propertyToken",
        -  "propertyName",
        -  "mediaPropertyId",
        -  "roomName",
        -  "roomMatch",
        -  "message",
        -  "photos"
        -]New value: +[
        +  "version",
        +  "view",
        +  "propertyToken",
        +  "propertyName",
        +  "mediaPropertyId",
        +  "roomId",
        +  "roomName",
        +  "roomMatch",
        +  "message",
        +  "offset",
        +  "total",
        +  "previousOffset",
        +  "nextOffset",
        +  "photos"
        +]
  2. 1 tool update
    • Addedshow_property_photos
  3. 2 tool updates
    • Changedsearch_network_availability1 field changed
      • addedInput schema / properties / budget
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Optional additional budget constraint. Clarify missing currency or basis before calling. Do not combine with legacy maxPrice/maxPriceCurrency.",
        +  "properties": {
        +    "amount": {
        +      "description": "Maximum amount in the explicitly supplied currency and basis.",
        +      "exclusiveMinimum": 0,
        +      "type": "number"
        +    },
        +    "basis": {
        +      "description": "Required explicit basis. Per-night means a stay-average allowance, not a ceiling on each night. Per-person means every adult and child equally; clarify other interpretations.",
        +      "enum": [
        +        "TOTAL_STAY",
        +        "PER_NIGHT",
        +        "PER_PERSON_STAY",
        +        "PER_PERSON_PER_NIGHT"
        +      ],
        +      "type": "string"
        +    },
        +    "currency": {
        +      "description": "Required 3-letter budget currency. Never infer from location or displayCurrency.",
        +      "pattern": "^[A-Za-z]{3}$",
        +      "type": "string"
        +    },
        +    "scope": {
        +      "default": "PRICED_STAY",
        +      "description": "PRICED_STAY compares the accommodation total including configured taxes/fees. ALL_IN requires complete mandatory charges; currently ATA cannot verify completeness and will return labeled alternatives only.",
        +      "enum": [
        +        "PRICED_STAY",
        +        "ALL_IN"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "amount",
        +    "currency",
        +    "basis"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_property_availability1 field changed
      • addedInput schema / properties / budget
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Optional additional budget constraint. Clarify missing currency or basis before calling. Do not combine with legacy maxPrice/maxPriceCurrency.",
        +  "properties": {
        +    "amount": {
        +      "description": "Maximum amount in the explicitly supplied currency and basis.",
        +      "exclusiveMinimum": 0,
        +      "type": "number"
        +    },
        +    "basis": {
        +      "description": "Required explicit basis. Per-night means a stay-average allowance, not a ceiling on each night. Per-person means every adult and child equally; clarify other interpretations.",
        +      "enum": [
        +        "TOTAL_STAY",
        +        "PER_NIGHT",
        +        "PER_PERSON_STAY",
        +        "PER_PERSON_PER_NIGHT"
        +      ],
        +      "type": "string"
        +    },
        +    "currency": {
        +      "description": "Required 3-letter budget currency. Never infer from location or displayCurrency.",
        +      "pattern": "^[A-Za-z]{3}$",
        +      "type": "string"
        +    },
        +    "scope": {
        +      "default": "PRICED_STAY",
        +      "description": "PRICED_STAY compares the accommodation total including configured taxes/fees. ALL_IN requires complete mandatory charges; currently ATA cannot verify completeness and will return labeled alternatives only.",
        +      "enum": [
        +        "PRICED_STAY",
        +        "ALL_IN"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "amount",
        +    "currency",
        +    "basis"
        +  ],
        +  "type": "object"
        +}
  4. 1 tool update
    • Changedcreate_provisional_booking1 field changed
      • addedInput schema / properties / bookingAssistance
        Added value: +{
        +  "description": "Internal Little John booking attribution; requires the internal agent credential.",
        +  "enum": [
        +    "AI_ASSIST"
        +  ],
        +  "type": "string"
        +}
  5. 5 tool updates
    • Addedget_quote_details
    • Changedget_reservation_status1 field changed
      • addedInput schema / properties / propertyToken
        Added value: +{
        +  "description": "Known public property token for this reservation; must match the hold property when supplied.",
        +  "type": "string"
        +}
    • Changedget_traveler_memories1 field changed
      • addedInput schema / properties / travelerAssertion
        Added value: +{
        +  "description": "Current signed ATA traveler assertion matching travelerId; required on shared transports.",
        +  "type": "string"
        +}
    • Changedsearch_property_availability1 field changed
      • changedInput schema / properties / propertyToken / description
        Previous value: -"Public property token (e.g., pk_live_...)"New value: +"Exact public propertyToken returned by discovery or property context. Never add a prefix or invent a token."
    • Changedsuggest_traveler_memory1 field changed
      • addedInput schema / properties / travelerAssertion
        Added value: +{
        +  "description": "Current signed ATA traveler assertion matching travelerId; required on shared transports.",
        +  "type": "string"
        +}
  6. 1 tool update
    • Changedcreate_provisional_booking4 fields changed
      • addedInput schema / properties / guestCountry
        Added value: +{
        +  "description": "Required traveler country, as supplied by the traveler. Ask only if missing. Do not infer it from the property location, language, currency, or phone number. Quotes do not require country.",
        +  "maxLength": 80,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / guestName / description
        Added value: +"Traveler’s full name, as supplied by the traveler."
      • addedInput schema / properties / guestName / minLength
        Added value: +1
      • changedInput schema / required
        Previous value: -[
        -  "propertyToken",
        -  "roomId",
        -  "checkIn",
        -  "checkOut",
        -  "guestName",
        -  "guestEmail",
        -  "adults",
        -  "policyAcknowledged"
        -]New value: +[
        +  "propertyToken",
        +  "roomId",
        +  "checkIn",
        +  "checkOut",
        +  "guestName",
        +  "guestEmail",
        +  "guestCountry",
        +  "adults",
        +  "policyAcknowledged"
        +]
  7. 3 tool updates
    • Addedget_booking_details
    • Addedget_support_contacts
    • Changedstart_traveler_handoff3 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The action the traveler is being asked to approve. Use BOOKING_HOLD before create_provisional_booking."New value: +"Use BOOKING_HOLD before creating a reservation; BOOKING_READ grants only read access to an existing booking for questions."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "QUOTE",
        -  "BOOKING_HOLD"
        -]New value: +[
        +  "QUOTE",
        +  "BOOKING_HOLD",
        +  "BOOKING_READ"
        +]
      • addedInput schema / properties / confirmationCode
        Added value: +{
        +  "description": "Required for BOOKING_READ: the ATA confirmation code printed on the booking confirmation.",
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "type": "string"
        +}
  8. 1 tool update
    • Changedcreate_quote1 field changed
      • addedInput schema / properties / guestCountry
        Added value: +{
        +  "description": "Optional for a quote. If omitted, the traveler supplies it when completing the booking.",
        +  "maxLength": 80,
        +  "type": "string"
        +}
  9. 2 tool updates
    • Changedcreate_provisional_booking2 fields changed
      • addedInput schema / properties / policyAcknowledged
        Added value: +{
        +  "description": "Explicit policy-consent state. Set true only after the traveler agrees to the exact price, payment schedule, and cancellation terms. Required before creating either an instant-book hold or a host-approval enquiry.",
        +  "type": "boolean"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "propertyToken",
        -  "roomId",
        -  "checkIn",
        -  "checkOut",
        -  "guestName",
        -  "guestEmail",
        -  "adults"
        -]New value: +[
        +  "propertyToken",
        +  "roomId",
        +  "checkIn",
        +  "checkOut",
        +  "guestName",
        +  "guestEmail",
        +  "adults",
        +  "policyAcknowledged"
        +]
    • Addedget_reservation_status
  10. 3 tool updates
    • Addedget_traveler_verification_status
    • Addedstart_traveler_verification
    • Addedverify_traveler_code
  11. 1 tool update
    • Changedget_property_details1 field changed
      • addedInput schema / properties / roomQuery
        Added value: +{
        +  "description": "Optional traveler-provided room or unit name, such as '5B Casita Vista'. No stay dates are required.",
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "type": "string"
        +}
  12. 1 tool update
    • Addedlist_property_extras
  13. 4 tool updates
    • Addedget_network_discovery_context
    • Addedsearch_flexible_network_availability
    • Changedsearch_network_availability3 fields changed
      • changedInput schema / properties / location / description
        Previous value: -"City, State, or Country (e.g. 'Puerto Vallarta', 'Mexico', 'California')"New value: +"Optional city, state, or country. Omit when the traveler knows dates but is open to ATA's current destinations."
      • addedInput schema / properties / preferences
        Added value: +{
        +  "description": "Open-ended soft ranking signals. These do not exclude otherwise valid stays.",
        +  "items": {
        +    "maxLength": 120,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 6,
        +  "type": "array"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "location",
        -  "checkIn",
        -  "checkOut"
        -]New value: +[
        +  "checkIn",
        +  "checkOut"
        +]
    • Changedsearch_property_catalog3 fields changed
      • addedInput schema / properties / adults
        Added value: +{
        +  "description": "Optional adults for occupancy-safe catalog suggestions.",
        +  "maximum": 40,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / children
        Added value: +{
        +  "description": "Optional children for occupancy-safe catalog suggestions.",
        +  "maximum": 40,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / preferences
        Added value: +{
        +  "description": "Open-ended soft ranking signals inferred from traveler language or current network facets.",
        +  "items": {
        +    "maxLength": 120,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 6,
        +  "type": "array"
        +}
  14. 1 tool update
    • Changedcreate_quote1 field changed
      • changedInput schema / properties / agentHandoffId / description
        Previous value: -"Approved ATA traveler handoff ID from start_traveler_handoff/get_traveler_handoff_status. Required for first-time third-party quote creation; repeat verified traveler emails can quote without a new handoff."New value: +"Fresh approved ATA traveler handoff ID from start_traveler_handoff/get_traveler_handoff_status. Required for third-party quote creation without a current traveler assertion."

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources