ATA Travel
ATA Travel: agent-first direct booking for accommodations, hotels, and vacation rentals.
Should I use this
Quality & Safety
Findings (2)
- LOWin search_flexible_network_availability
- LOWin get_traveler_verification_status
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"travel-agency": {
"url": "https://atatravel.cloud/mcp"
}
}
}Remote endpoints
https://atatravel.cloud/mcpstreamable-httpWhat it can do
Tool inventory
Tools (25)
π’ping
Check whether the ATA MCP server responds. Returns 'pong'; does not search properties or change quotes or bookings.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_network_discovery_context
Return a summary of ATA's current destinations, property types, capacity, amenities, views, and published suitability information. Use to identify supported discovery options when the traveler has not specified a property or destination. Does not check availability for specific dates.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}π’search_flexible_network_availability(location, earliestCheckIn, latestCheckIn, nights, adults, ...)
Search participating ATA properties for availability and prices across a flexible date window. 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.
Input Schema
{
"type": "object",
"properties": {
"location": {
"description": "Optional city, state, country, neighborhood, or building. Omit when the traveler is open to ATA's current destinations.",
"type": "string"
},
"earliestCheckIn": {
"description": "Earliest acceptable check-in date. Defaults to 28 days from today.",
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"latestCheckIn": {
"description": "Latest acceptable check-in date. Defaults to 56 days from today.",
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"nights": {
"description": "Length of stay. Defaults to 3 nights.",
"type": "integer",
"minimum": 1,
"maximum": 30
},
"adults": {
"description": "Adult guests. Defaults to 2.",
"type": "integer",
"minimum": 1,
"maximum": 40
},
"children": {
"description": "Child guests. Defaults to 0.",
"type": "integer",
"minimum": 0,
"maximum": 40
},
"propertyType": {
"description": "Optional soft property-type preference; it ranks results and is reported as a difference when unavailable.",
"type": "string"
},
"amenities": {
"description": "Optional soft amenity preferences for flexible discovery.",
"type": "array",
"items": {
"type": "string"
}
},
"views": {
"description": "Optional soft view preferences for flexible discovery.",
"type": "array",
"items": {
"type": "string"
}
},
"preferences": {
"description": "Open-ended soft preferences inferred from the traveler's own words or live network facets.",
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
},
"maxPrice": {
"description": "Maximum total stay price.",
"type": "number",
"minimum": 0.01
},
"maxPriceCurrency": {
"description": "Currency for maxPrice when filtering mixed native currencies.",
"type": "string"
},
"displayCurrency": {
"description": "Optional traveler-facing display currency.",
"type": "string"
},
"maxResults": {
"description": "Maximum priced stays to return. Defaults to 4.",
"type": "integer",
"minimum": 1,
"maximum": 6
},
"priceAudience": {
"type": "string",
"enum": [
"PUBLIC",
"VERIFIED_TRAVELER"
]
},
"internalAgentKey": {
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_company_mission
Read ATA's published company mission and company description. Use for questions about ATA's purpose or services.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_traveler_memories(travelerId, travelerAssertion)
Returns active structured memories for a verified traveler. Use this when you need durable personalization beyond the context already provided.
Input Schema
{
"type": "object",
"properties": {
"travelerId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Verified traveler ID from the private traveler context."
},
"travelerAssertion": {
"description": "Current signed ATA traveler assertion matching travelerId; required on shared transports.",
"type": "string"
}
},
"required": [
"travelerId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π‘suggest_traveler_memory(travelerId, travelerAssertion, type, key, value, ...)
Save or update one durable traveler memory for personalization. Use only for stable, travel-relevant preferences or constraints explicitly stated by the traveler.
Input Schema
{
"type": "object",
"properties": {
"travelerId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Verified traveler ID from the private traveler context."
},
"travelerAssertion": {
"description": "Current signed ATA traveler assertion matching travelerId; required on shared transports.",
"type": "string"
},
"type": {
"type": "string",
"enum": [
"PREFERENCE",
"PROFILE_FACT",
"TRAVEL_STYLE",
"SERVICE_NOTE"
],
"description": "Memory category."
},
"key": {
"type": "string",
"enum": [
"accessibility",
"budget",
"children",
"diet",
"guest_count",
"language",
"occasion",
"pace",
"pets",
"room_features",
"service_animal",
"stay_length",
"travel_party",
"travel_purpose",
"view"
],
"description": "Stable normalized memory key. Choose the closest allowed key."
},
"value": {
"description": "Small JSON value, e.g. {\"hasServiceDog\":true} or {\"typicalAdults\":2,\"typicalChildren\":1}."
},
"summary": {
"type": "string",
"minLength": 8,
"maxLength": 240,
"description": "Short practical note, without speculation or sensitive details."
},
"confidence": {
"default": 0.8,
"description": "Confidence in this memory. Use 1 for explicit user statements, lower for inferred patterns.",
"type": "number",
"minimum": 0,
"maximum": 1
},
"source": {
"default": "USER_STATED",
"type": "string",
"enum": [
"USER_STATED",
"INFERRED",
"BOOKING_HISTORY",
"AGENT_NOTE"
]
},
"visibility": {
"default": "AGENT_ONLY",
"type": "string",
"enum": [
"AGENT_ONLY",
"STAFF_VISIBLE",
"USER_VISIBLE"
]
}
},
"required": [
"travelerId",
"type",
"key",
"value",
"summary"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π’search_property_availability(propertyToken, checkIn, checkOut, adults, children, ...)
Search specific dates and occupancy for a known property using its propertyToken.
Input Schema
{
"type": "object",
"properties": {
"propertyToken": {
"type": "string",
"description": "Exact public propertyToken returned by discovery or property context. Never add a prefix or invent a token."
},
"checkIn": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Check-in date (YYYY-MM-DD)"
},
"checkOut": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Check-out date (YYYY-MM-DD)"
},
"adults": {
"default": 1,
"type": "number"
},
"children": {
"default": 0,
"type": "number"
},
"budget": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Maximum amount in the explicitly supplied currency and basis."
},
"currency": {
"description": "Required 3-letter budget currency. Never infer from location or displayCurrency.",
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
"basis": {
"type": "string",
"enum": [
"TOTAL_STAY",
"PER_NIGHT",
"PER_PERSON_STAY",
"PER_PERSON_PER_NIGHT"
],
"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."
},
"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.",
"type": "string",
"enum": [
"PRICED_STAY",
"ALL_IN"
]
}
},
"required": [
"amount",
"currency",
"basis"
],
"additionalProperties": false,
"description": "Optional additional budget constraint. Clarify missing currency or basis before calling. Do not combine with legacy maxPrice/maxPriceCurrency."
},
"displayCurrency": {
"description": "Optional 3-letter currency for approximate traveler-facing display conversion. Native property currency remains authoritative.",
"type": "string"
},
"priceAudience": {
"type": "string",
"enum": [
"PUBLIC",
"VERIFIED_TRAVELER"
]
},
"internalAgentKey": {
"type": "string"
}
},
"required": [
"propertyToken",
"checkIn",
"checkOut"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π’search_network_availability(location, checkIn, checkOut, adults, children, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"location": {
"description": "Optional city, state, or country. Omit when the traveler knows dates but is open to ATA's current destinations.",
"type": "string"
},
"checkIn": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Check-in date (YYYY-MM-DD)"
},
"checkOut": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Check-out date (YYYY-MM-DD)"
},
"adults": {
"default": 1,
"description": "Number of adults",
"type": "number"
},
"children": {
"default": 0,
"description": "Number of children",
"type": "number"
},
"budget": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Maximum amount in the explicitly supplied currency and basis."
},
"currency": {
"description": "Required 3-letter budget currency. Never infer from location or displayCurrency.",
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
"basis": {
"type": "string",
"enum": [
"TOTAL_STAY",
"PER_NIGHT",
"PER_PERSON_STAY",
"PER_PERSON_PER_NIGHT"
],
"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."
},
"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.",
"type": "string",
"enum": [
"PRICED_STAY",
"ALL_IN"
]
}
},
"required": [
"amount",
"currency",
"basis"
],
"additionalProperties": false,
"description": "Optional additional budget constraint. Clarify missing currency or basis before calling. Do not combine with legacy maxPrice/maxPriceCurrency."
},
"maxPrice": {
"description": "Maximum total price filter",
"type": "number"
},
"maxPriceCurrency": {
"description": "Currency for maxPrice when filtering across mixed property currencies. If omitted, maxPrice is compared to each property's native currency.",
"type": "string"
},
"displayCurrency": {
"description": "Optional 3-letter currency for approximate traveler-facing display conversion. Native property currency remains authoritative.",
"type": "string"
},
"amenities": {
"description": "Filter by amenities on property or rooms. e.g. ['Pool', 'Gym', 'Pet Friendly', 'Spa']",
"type": "array",
"items": {
"type": "string"
}
},
"views": {
"description": "Filter by room views. e.g. ['Ocean', 'Mountain', 'Garden', 'City']",
"type": "array",
"items": {
"type": "string"
}
},
"propertyType": {
"description": "e.g. 'Hotel', 'Apartment', 'Villa'",
"type": "string"
},
"keyword": {
"description": "Text matched against property name/description. Use for a required text match; use preferences for optional style preferences.",
"type": "string"
},
"preferences": {
"description": "Open-ended soft ranking signals. These do not exclude otherwise valid stays.",
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
},
"priceAudience": {
"type": "string",
"enum": [
"PUBLIC",
"VERIFIED_TRAVELER"
]
},
"internalAgentKey": {
"type": "string"
}
},
"required": [
"checkIn",
"checkOut"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π’search_buildings(query, city, neighborhood, tags, amenities, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Building name, neighborhood, city, or text query.",
"type": "string"
},
"city": {
"type": "string"
},
"neighborhood": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"amenities": {
"type": "array",
"items": {
"type": "string"
}
},
"maxResults": {
"default": 10,
"type": "number"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_building_details(slug)
Get a published ATA building/complex profile with assigned stays and map coordinates. Use slug from search_buildings or property search results.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string"
}
},
"required": [
"slug"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_stays_in_building(slug, checkIn, checkOut, adults, children, ...)
Return ATA stays assigned to a published building, optionally filtered by live dates and guest counts.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"checkIn": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"checkOut": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"adults": {
"default": 1,
"type": "number"
},
"children": {
"default": 0,
"type": "number"
},
"displayCurrency": {
"description": "Optional 3-letter currency for approximate traveler-facing display conversion. Native property currency remains authoritative.",
"type": "string"
},
"priceAudience": {
"type": "string",
"enum": [
"PUBLIC",
"VERIFIED_TRAVELER"
]
},
"internalAgentKey": {
"type": "string"
}
},
"required": [
"slug"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π’search_property_catalog(location, propertyType, amenities, views, keyword, ...)
Browse participating ATA properties without stay dates. Filter by location, property type, amenities, views, or keyword. Does not check date-specific availability or prices.
Input Schema
{
"type": "object",
"properties": {
"location": {
"description": "City, state, or country to filter by. Omit to search all participating ATA destinations.",
"type": "string"
},
"propertyType": {
"description": "e.g. 'Hotel', 'Villa', 'Apartment'",
"type": "string"
},
"amenities": {
"description": "e.g. ['Pool', 'Spa', 'Pet Friendly', 'Gym']",
"type": "array",
"items": {
"type": "string"
}
},
"views": {
"description": "e.g. ['Ocean', 'Mountain', 'Garden']",
"type": "array",
"items": {
"type": "string"
}
},
"keyword": {
"description": "Text matched against property name/description. Use for a required text match; use preferences for optional style preferences.",
"type": "string"
},
"preferences": {
"description": "Open-ended soft ranking signals inferred from traveler language or current network facets.",
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
},
"adults": {
"description": "Optional adults for occupancy-safe catalog suggestions.",
"type": "integer",
"minimum": 1,
"maximum": 40
},
"children": {
"description": "Optional children for occupancy-safe catalog suggestions.",
"type": "integer",
"minimum": 0,
"maximum": 40
},
"maxResults": {
"default": 10,
"description": "Max number of properties to return (default 10)",
"type": "number"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_property_details(propertyToken, roomQuery)
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.
Input Schema
{
"type": "object",
"properties": {
"propertyToken": {
"type": "string"
},
"roomQuery": {
"description": "Optional traveler-provided room or unit name, such as '5B Casita Vista'. No stay dates are required.",
"type": "string",
"minLength": 1,
"maxLength": 160
}
},
"required": [
"propertyToken"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_support_contacts(propertyToken)
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.
Input Schema
{
"type": "object",
"properties": {
"propertyToken": {
"description": "Property public token, when the traveler needs help from that property.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}π’list_property_extras(propertyToken, category, standaloneOnly)
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.
Input Schema
{
"type": "object",
"properties": {
"propertyToken": {
"type": "string"
},
"category": {
"description": "Optional exact offer category filter, such as DAY_PASS, EXPERIENCE, WELLNESS, TRANSPORT, or PACKAGE.",
"type": "string"
},
"standaloneOnly": {
"default": false,
"description": "When true, exclude offers that require a stay.",
"type": "boolean"
}
},
"required": [
"propertyToken"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π‘start_traveler_verification(guestName, guestEmail, emailConfirmedByTraveler, guestPhone, propertyToken, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"guestName": {
"type": "string",
"minLength": 1
},
"guestEmail": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"emailConfirmedByTraveler": {
"type": "boolean",
"description": "True only after the traveler confirms the exact email address."
},
"guestPhone": {
"type": "string"
},
"propertyToken": {
"type": "string"
},
"method": {
"type": "string",
"enum": [
"EMAIL_CODE",
"EMAIL_LINK",
"SMS_CODE",
"WHATSAPP_CODE"
]
},
"agentProvider": {
"type": "string"
},
"agentName": {
"type": "string"
}
},
"required": [
"guestName",
"guestEmail",
"emailConfirmedByTraveler"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}βͺverify_traveler_code(challengeRef, code)
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.
Input Schema
{
"type": "object",
"properties": {
"challengeRef": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"code": {
"type": "string",
"pattern": "^\\d{6}$"
}
},
"required": [
"challengeRef",
"code"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_traveler_verification_status(challengeRef)
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.
Input Schema
{
"type": "object",
"properties": {
"challengeRef": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"challengeRef"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π‘start_traveler_handoff(action, confirmationCode, guestName, guestEmail, emailConfirmedByTraveler, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"QUOTE",
"BOOKING_HOLD",
"BOOKING_READ"
],
"description": "Use BOOKING_HOLD before creating a reservation; BOOKING_READ grants only read access to an existing booking for questions."
},
"confirmationCode": {
"description": "Required for BOOKING_READ: the ATA confirmation code printed on the booking confirmation.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"guestName": {
"type": "string",
"description": "Traveler name collected by the agent."
},
"guestEmail": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Traveler-provided email address for the action-specific ATA verification link."
},
"emailConfirmedByTraveler": {
"description": "Set true only after reading guestEmail back to the traveler and they confirm it is correct.",
"type": "boolean"
},
"guestPhone": {
"type": "string"
},
"propertyToken": {
"type": "string"
},
"roomId": {
"type": "string"
},
"ratePlanId": {
"type": "string"
},
"selectedRoomCount": {
"type": "number"
},
"checkIn": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"checkOut": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"adults": {
"type": "number"
},
"children": {
"default": 0,
"type": "number"
},
"quoteId": {
"type": "string"
},
"quoteHash": {
"type": "string"
},
"agentProvider": {
"description": "Agent platform or provider name when known.",
"type": "string"
},
"agentName": {
"description": "Agent/application display name when known.",
"type": "string"
},
"mcpSessionId": {
"description": "Optional client-side MCP/session correlation ID.",
"type": "string"
},
"intentSummary": {
"description": "Short traveler-facing summary of what ATA is verifying, without mentioning internal handoff/tool details.",
"type": "string"
}
},
"required": [
"action",
"guestName",
"guestEmail"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_traveler_handoff_status(handoffId)
Check the verification status and permitted next actions for an existing ATA traveler handoff. Use the handoffId returned by start_traveler_handoff. Does not send email or create a quote or booking.
Input Schema
{
"type": "object",
"properties": {
"handoffId": {
"type": "string",
"description": "ID returned by start_traveler_handoff."
}
},
"required": [
"handoffId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_quote_details(quoteId, quoteHash, quoteUrl, propertyToken, travelerAssertion, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"quoteId": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"quoteHash": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"quoteUrl": {
"description": "Existing ATA /stays/quote/ link supplied by the traveler or returned by create_quote.",
"type": "string",
"maxLength": 2048,
"format": "uri"
},
"propertyToken": {
"type": "string"
},
"travelerAssertion": {
"description": "Current signed ATA traveler assertion for the quote owner.",
"type": "string"
},
"agentHandoffId": {
"description": "Still-valid USED QUOTE handoff that created this quote. Read-only access grants no additional writes; expired handoffs require fresh traveler verification.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_booking_details(confirmationCode, propertyToken, travelerAssertion, agentHandoffId)
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.
Input Schema
{
"type": "object",
"properties": {
"confirmationCode": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "ATA confirmation code from the booking email."
},
"propertyToken": {
"description": "Known property public token; required to match a property-scoped connection.",
"type": "string"
},
"travelerAssertion": {
"description": "Current signed ATA traveler verification assertion; never a typed email or model claim.",
"type": "string"
},
"agentHandoffId": {
"description": "Approved BOOKING_READ handoff for this confirmation code. No write scope is accepted.",
"type": "string"
}
},
"required": [
"confirmationCode"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π’get_reservation_status(holdId, propertyToken, guestEmail, travelerAssertion, agentHandoffId, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"holdId": {
"type": "string",
"minLength": 1,
"description": "Hold ID returned by create_provisional_booking."
},
"propertyToken": {
"description": "Known public property token for this reservation; must match the hold property when supplied.",
"type": "string"
},
"guestEmail": {
"description": "Traveler email. Required when using travelerAssertion; populated automatically for a verified MCP session.",
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"travelerAssertion": {
"description": "Current signed ATA traveler verification assertion for the reservation guest.",
"type": "string"
},
"agentHandoffId": {
"description": "Secure BOOKING_HOLD handoff ID that created this reservation.",
"type": "string"
},
"displayCurrency": {
"description": "Optional 3-letter currency for approximate display conversion. Native property currency remains authoritative.",
"type": "string"
}
},
"required": [
"holdId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π‘create_provisional_booking(propertyToken, roomId, ratePlanId, selectedRoomCount, checkIn, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"propertyToken": {
"type": "string"
},
"roomId": {
"type": "string"
},
"ratePlanId": {
"description": "Rate plan ID. If omitted, the system auto-selects the default active rate plan per night, then the cheapest active auto-selectable fallback.",
"type": "string"
},
"selectedRoomCount": {
"description": "For direct-booking room-count configurations, the number of rooms the traveler selected. Use defaultSelectedRoomCount from availability results.",
"type": "number"
},
"checkIn": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"checkOut": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"guestName": {
"type": "string",
"minLength": 1,
"description": "Travelerβs full name, as supplied by the traveler."
},
"guestEmail": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"guestPhone": {
"type": "string"
},
"guestCountry": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"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."
},
"notes": {
"description": "Optional traveler comments, questions, or requests for the host. Especially useful for host-approval enquiries.",
"type": "string"
},
"adults": {
"type": "number"
},
"children": {
"default": 0,
"type": "number"
},
"policyAcknowledged": {
"type": "boolean",
"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."
},
"displayCurrency": {
"description": "Optional 3-letter currency for approximate traveler-facing display conversion. Native property currency remains authoritative.",
"type": "string"
},
"travelerAssertion": {
"description": "Signed traveler email verification assertion from ATA.",
"type": "string"
},
"agentHandoffId": {
"description": "Approved ATA traveler handoff ID from start_traveler_handoff/get_traveler_handoff_status. Required for third-party agents before inventory-holding booking actions.",
"type": "string"
},
"priceAudience": {
"type": "string",
"enum": [
"PUBLIC",
"VERIFIED_TRAVELER"
]
},
"internalAgentKey": {
"type": "string"
},
"bookingAssistance": {
"description": "Internal Little John booking attribution; requires the internal agent credential.",
"type": "string",
"enum": [
"AI_ASSIST"
]
}
},
"required": [
"propertyToken",
"roomId",
"checkIn",
"checkOut",
"guestName",
"guestEmail",
"guestCountry",
"adults",
"policyAcknowledged"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}π‘create_quote(propertyToken, roomId, ratePlanId, selectedRoomCount, checkIn, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"propertyToken": {
"type": "string"
},
"roomId": {
"type": "string"
},
"ratePlanId": {
"description": "Rate plan ID. Optional.",
"type": "string"
},
"selectedRoomCount": {
"description": "For direct-booking room-count configurations, the number of rooms the traveler selected. Use defaultSelectedRoomCount from availability results.",
"type": "number"
},
"checkIn": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"checkOut": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"guestName": {
"type": "string"
},
"guestEmail": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"guestPhone": {
"type": "string"
},
"guestCountry": {
"description": "Optional for a quote. If omitted, the traveler supplies it when completing the booking.",
"type": "string",
"maxLength": 80
},
"adults": {
"type": "number"
},
"children": {
"default": 0,
"type": "number"
},
"displayCurrency": {
"description": "Optional 3-letter currency for approximate traveler-facing display conversion. Native property currency remains authoritative.",
"type": "string"
},
"travelerAssertion": {
"description": "Signed traveler email verification assertion from ATA.",
"type": "string"
},
"agentHandoffId": {
"description": "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.",
"type": "string"
},
"priceAudience": {
"type": "string",
"enum": [
"PUBLIC",
"VERIFIED_TRAVELER"
]
},
"internalAgentKey": {
"type": "string"
}
},
"required": [
"propertyToken",
"roomId",
"checkIn",
"checkOut",
"guestName",
"guestEmail",
"adults"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Recommended Prompts
list_property_extrasget_network_discovery_contextsearch_flexible_network_availabilitysearch_flexible_network_availabilityget_network_discovery_contextCommunity
Evidence