# ATA Travel

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

- name: cloud.atatravel/travel-agency
- version: 2.4.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 70/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/cloud.atatravel%2Ftravel-agency
- tools: https://api.protogrid.dev/v1/servers/cloud.atatravel%2Ftravel-agency/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "travel-agency": {
      "type": "http",
      "url": "https://atatravel.cloud/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-28d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 70/100 (needs work)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 79 (weight 30)

- warn `tools.descriptions`: 1 of 24 tools have a description under 20 characters
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 24 of 24 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- warn `tools.token_cost`: about 11,107 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 21 tool changes in 30 days
- fail `stability.rug_pull`: 5 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 24, about 11,107 tokens to load them all
- tool set hash: 8a02fea8a3c70835608a1821ba70bd87
- tools last changed: 2026-10-17T02:54:23.057Z
- badge: [![protogrid quality](https://protogrid.dev/badge/cloud.atatravel/travel-agency.svg)](https://protogrid.dev/servers/cloud.atatravel/travel-agency)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-17 `get_property_details` changed (description)
  - before: 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.
  - after: 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.
- 2026-10-17 `search_property_catalog` changed (description)
  - before: 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.
  - after: 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.
- 2026-10-17 `get_stays_in_building` changed (description) **meaning changed**
  - before: Return ATA stays assigned to a published building, optionally filtered by live dates and guest counts.
  - after: 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.
- 2026-10-17 `get_building_details` changed (description) **meaning changed**
  - before: Get a published ATA building/complex profile with assigned stays and map coordinates. Use slug from search_buildings or property search results.
  - after: 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.
- 2026-10-17 `search_network_availability` changed (description) **meaning changed**
  - before: 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.
  - after: 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.
- 2026-10-17 `search_property_availability` changed (description) **meaning changed**
  - before: Search specific dates and occupancy for a known property using its propertyToken.
  - after: 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.
- 2026-10-17 `search_flexible_network_availability` changed (description)
  - before: 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.
  - after: 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.
- 2026-10-17 `get_network_discovery_context` changed (description)
  - before: 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.
  - after: 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.
- 2026-10-17 `get_available_room_cards` added
  - 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.
- 2026-10-17 `show_available_rooms` added
  - 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.

Full history: https://api.protogrid.dev/v1/servers/cloud.atatravel%2Ftravel-agency/changes

## Remotes

- https://atatravel.cloud/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (24)

- `create_provisional_booking`: 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. Modern clients must provide a UUID idempotencyKey; exact retries replay the original result without repeating the action.
- `create_quote`: 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. Modern clients must provide a UUID idempotencyKey; exact retries replay the original result without repeating the action.
- `get_available_room_cards`: 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.
- `get_booking_details`: 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.
- `get_building_details`: 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.
- `get_company_mission`: 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.
- `get_network_discovery_context`: 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.
- `get_photo_gallery`: Data-only: read a page inside an already mounted gallery. For initial presentation use show_property_photos; do not page this tool to assemble Markdown image grids. 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.
- `get_property_details`: 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.
- `get_quote_details`: 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.
- `get_reservation_status`: 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.
- `get_stays_in_building`: 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.
- `get_support_contacts`: 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.
- `get_traveler_handoff_status`: 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.
- `list_property_extras`: 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.
- `ping`: A simple ping tool
- `search_buildings`: 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.
- `search_flexible_network_availability`: 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.
- `search_network_availability`: 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.
- `search_property_availability`: 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.
- `search_property_catalog`: 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.
- `show_available_rooms`: 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.
- `show_property_photos`: 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.
- `start_traveler_handoff`: 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. Modern clients must provide a UUID idempotencyKey; exact retries replay the original result without repeating the action.
