The pain it fixes
For the traveler
39% of US travelers find coordinating the different parts of a trip frustrating. In the report's diary study, the worst moments came at the handoffs between platforms: every new site or app starts from zero.
A trip record keeps the minimum trip state in one structured place: the party (as counts and age bands, never names), dates, budget band, preferences, the short list, rejected options with the reason, holds and open questions. The next visit, or the next AI agent, starts closer to a decision.
For your business
Agents already book hotels. Google's AI Mode began booking US hotels on August 27, 2026, through large online travel agencies and chains; independents were not on the launch list. The checkout layer agents use is being built now, and whether you are reachable through it is being decided now, often by your platform, possibly by default.
An agent that cannot place a reversible hold will not put a family's four seats on hold while they think it over. It books something it can hold.
Skift Research + McKinsey, Sept 2026, n = 1,015 US travelers (data as of June 2026); US travelers, not Alaska visitors. Google AI Mode: see Sources.
Which one are you?
A small operator (about six people)
One question, not a build. Send your booking platform (FareHarbor, Peek, Checkfront, Cloudbeds, Rezdy or similar) the question below. Get the answer in writing. Share it with ATIA so members can compare.
About 15 minutes. Free.
Being bookable by an agent today usually means being in a network and paying its commission. That is a margin decision, not a technology decision. (Presenter's read.)
A larger operator, a group of members, or ATIA
A build and a policy decision. Decide the four hold policies first. Then a developer connects your platform's API to an MCP server (the open protocol Claude, ChatGPT and Gemini agents use to call outside tools). The scaffold on this page shows the rules working on fictional data.
Months, mostly platform integration, hold-expiry rules and policy, not code. Developer or vendor time. Estimates.
The question for your booking platform
Copy it as is, or build the email below. Ask for the answer in writing.
The question
Does your platform expose (1) live availability through an API, (2) time-limited, reversible holds that expire automatically, and (3) confirmation and cancellation through the same API? Are you participating in any agent checkout protocol, such as Google's Universal Commerce Protocol? If yes, what do I have to switch on, and what does it cost? If no, is it on your roadmap, and when? Please answer in writing so I can share it with our association.
Make it an email
Your email
Read the answer
| They say | What it means | Your next step |
|---|---|---|
| Yes to all three, and an agent protocol you can switch on | Agents can find you, hold and request confirmation through your platform | Get the cost and commission in writing. Set the four policies below before you switch it on. |
| Live availability yes, holds no | Agents can see you but cannot hold. They will hold somewhere else. | Ask for holds on the roadmap, with a date. Tell ATIA. |
| Not yet, on the roadmap | Common in 2026 | Get the date in writing. Ask again next quarter. |
| No API | Agents cannot reach you through this platform | Weigh it at your next platform renewal. Contractual check your contract term and exit terms. |
Log the answer to share with ATIA
Stays in this browser until you copy or save it. Business facts only; no guest data.
Summary
Policy before code
Before anyone writes code, decide four things: who may place a hold, how long it lasts, what happens to inventory while it is held, and how a person steps in. The survey asked travelers what would make them more confident letting AI book. Their answers are the design spec.
Review and change before confirming.Holds that are reversible and expire. Decisions 1 and 2.
A track record.The seats they reviewed are still there; you publish how holds work. Decision 3.
A human who can step in.A person confirms every agent booking. Decision 4.
Skift Research + McKinsey, Sept 2026, Exhibit 9, n = 1,015 US travelers.
Your hold policy
Trip record checker
A trip record is a small JSON file an agent and your staff can both read. Paste one to check it against the schema. The page checks three things: the schema rules, anything that looks like personal data, and rules the schema cannot express (age bands add up, dates in order, holds that have expired). These are the same checks as validate_record.py and the MCP server's put_trip_record.
Fictional or de-identified records only. Never paste guest names, emails, phone numbers, card numbers, ID numbers or health details. The check runs in this browser; nothing is sent or saved.
What is in a trip record
- party: a count and age bands (for example 6-7 and 8-9), because minimum ages decide what fits. Never names or birth dates.
- dates, budget_band (a band, never a card) and preferences.
- shortlisted: options still in play, each with a reason that cites approved fact ids (from your 1.a fact sheet).
- rejected: options set aside with the reason, so nobody offers them again.
- holds: reversible holds with
expires_atand status. - open_questions: gaps stay questions, for the owner, a partner, staff or the traveler. Nobody fills them with a guess.
- consent: what the traveler agreed to.
agent_may_confirmis always false: a person confirms. - version and updated_at, so two agents cannot overwrite each other.
The example is the fictional family from 3.a: July 14 to 16, two adults and two children aged 6 and 9. The 3.a trip kit is the first draft of this record.
The build: for a larger operator or ATIA
The flow an agent follows, and the confidence driver each step serves:
- Search products and live availability. Facts cite ids. No invented prices.
- Hold seats. The hold expires on its own. Review and change (52%)
- Review and change with the traveler: release and hold again. Review and change (52%)
- Request confirmation. Nothing is booked yet. A human who can step in (20%)
- A person confirms or declines, before the hold expires. Track record (30%): every call logged
Build brief for a developer or a coding agent
For Claude Code, OpenAI Codex or Gemini CLI, or for your platform vendor. Builds on the Prompt Kit brief.
Build brief
Design a minimum viable trip record and an MCP server over the [BOOKING PLATFORM] API. Trip record (JSON Schema 2020-12, closed to unknown fields): party as a count and age bands (no names), dates, budget band, preferences, short-listed options with a reason that cites approved fact ids, rejected options with the reason, holds, open questions, consent, version and updated_at. No names, contact details, payment data, ID numbers or health details anywhere in the record. Reject free text that looks like an email, phone, card or ID number. MCP tools: search_products; check_availability(product, date, party); place_hold(product, date, departure, seats) returning a hold id and expires_at (24 hours by default, configurable, and never past the free-cancellation cutoff); get_hold; release_hold; request_confirmation(hold id), which creates a pending confirmation for a person at the business and never confirms by itself; get_trip_record; put_trip_record, validated against the schema with a version check. Rules: every hold expires on the platform even if the caller disappears. Held seats count against capacity. Limit active holds, seats per hold and new holds per day for each caller so an agent cannot create phantom inventory. Take the caller identity from authentication, never from a tool argument. Log every tool call. Serve on localhost only until authentication and HTTPS are in place. Tests: a scripted agent runs search, hold, review, change (release and re-hold) and request confirmation; a hold expires with a 2-second TTL; the per-caller limit blocks phantom inventory; a record with personal data is rejected and nothing is saved. Document what a Claude, ChatGPT or Gemini agent needs to connect, and what a person at the business sees when a hold is placed and when confirmation is requested. Mark generated documents DRAFT - PENDING OWNER REVIEW. Reference scaffold with fictional data: https://preig.github.io/atiakit/3c/trip-record-mcp.zip
The reference scaffold
A small Python MCP server over a mock SQLite inventory for the fictional Bay Light Day Cruises (9:00 and 14:00 departures, capacity 40) and two fictional partners. It runs on your computer with no keys and no internet, and works with Claude Desktop, Claude Code, Gemini CLI and other local MCP clients. The business rules need only the Python standard library, so the tests run without the MCP package.
| Tool the agent sees | What it does | Guard rail |
|---|---|---|
search_products | Products, facts with ids, minimum ages, seats free | No prices: they are not in the approved facts |
check_availability | Seats free per departure | Held seats count against capacity |
place_hold | Reversible hold with hold_id and expires_at | Expires after 24 h (configurable) or at the cutoff; per-caller limits; minimum age checked |
get_hold, release_hold | Status; give seats back | Callers see only their own holds |
request_confirmation | Ask a person to confirm | Pending only. There is no confirm tool for agents. |
get_trip_record, put_trip_record | Read and save the trip record | Schema check, personal-data scan, version check |
What a person at the business sees
> python admin.py pending Holds waiting for a person (FICTIONAL MOCK DATA). Confirm or decline before they expire. confirmation_id hold_id product_id date departure seats minutes_left record_id note --------------- ------------ ------------ ---------- --------- ----- ------------ ------------ ------------------------------------------ C-UPDZHWDDBF H-JXVKXXCUTW BL-CRUISE-4H 2027-07-15 09:00 4 1439 TR-DEMO-0714 Reviewed with the traveler. Mornings only. > python admin.py confirm C-UPDZHWDDBF --by KR C-UPDZHWDDBF confirmed by KR (hold H-JXVKXXCUTW). Mock only. In a real system, create the booking in your booking platform now; it takes payment in its own checkout.
Try it
Unzip trip-record-mcp.zip, open a terminal in the folder and type (on a Mac, python3):
python demo.py
To connect a real client, the README walks you through pip install -r requirements.txt, python server.py --dry-run and the settings for Claude Desktop, Claude Code and Gemini CLI.
Downloads
- trip-record-mcp.zip MCP server scaffold, mock inventory, staff console, scripted demo, tests. Python 3.10 or newer. About 48 KB.
- mcp-server/README.md Start here. Plain steps, client settings, limits.
- trip-record.schema.json JSON Schema 2020-12. Closed to unknown fields; no personal-data fields.
- trip-record.example.json The fictional 3.a family, with a released and a pending hold.
- validate_record.py Command-line checker, standard library only:
python validate_record.py my-record.json - Prompt-Kit-3x3.html, section 3.c The original question and brief in the printable kit.
How you will know it worked
- Small operator: you have your platform's answer in writing, and ATIA has it too.
- Bookings through AI channels, counted monthly by channel. Record your current bookings by channel before you switch anything on, or there is nothing to compare.
- Hold-to-book rate: holds confirmed divided by holds placed (
python admin.py statsin the scaffold). - Share of holds that expire, and staff answer time on confirmation requests. Both tell you whether your hold length and staffing fit.
Before you use it
AI drafts. You approve. An agent can search, hold and ask. A person at the business confirms every booking. A model checking its own work is not verification.
- Policy choice Agents never confirm, book or charge. The scaffold has no confirm tool for agents, and the schema fixes
agent_may_confirmto false. - Legal mandate Guide licensing (AS 08.54, Big Game Commercial Services Board; ADF&G sport-fishing guide and business registration) stays with the licensed person. It cannot be handed to an agent.
- Legal mandate Lodges: wherever a price appears, agent channels included, show the total price with mandatory fees (FTC 16 CFR Part 464, short-term lodging; it does not cover tours).
- Contractual Holds, parity, allotments and cancellation terms may already be set by your booking platform terms and your OTA or reseller agreements. Check them before you switch anything on.
- Recommendation Safety calls (weather and sea-state go or no-go, glacier, wildlife, aviation, first aid) stay with a qualified person. A hold never overrides them.
- Recommendation Trip records hold no names, contact details, payment data, ID numbers or health details. The checker's personal-data scan is a guard rail, not a guarantee.
- Recommendation Keep the scaffold on your own computer. It has no authentication.
- Recommendation Nothing on this page books, holds, charges or sends anything. This page is not legal advice.
Where this rung sits
This is the top rung of Pain 3. It builds on 3.a The AI trip kit (the kit is the first draft of the trip record) and 3.b A partner circle with shared facts (shared facts with owners become the fact ids a record cites). Skip those and an agent has nothing reliable to read.
Sources
- Skift Research and McKinsey & Company, Winning Hearts in an Age of Infinite Travel Choices, September 2026. Survey of 1,015 US travelers, data as of June 2026: 39% find coordinating the parts of a trip frustrating (Exhibit 6, p19); 74% prefer to make the final booking themselves rather than through an AI, and 16% used an AI tool to book anything (Exhibit 8, p24); 52% want to review and change before confirming, 30% a track record, 20% a human who can step in (Exhibit 9). Google added hotel booking to its Universal Commerce Protocol in May 2026 (p23); the report calls the structured trip state a minimum viable trip state (p29). Diary study, 26 travelers and 211 sessions, July 2026, directional: handoffs between platforms are the most frequent source of negative sentiment (p18).
- Google AI Mode hotel booking, live in the US from August 27, 2026, with ten large OTA and chain partners: coverage in Hotel-Online and Travolution.
- Model Context Protocol: modelcontextprotocol.io · Python SDK: github.com/modelcontextprotocol/python-sdk · JSON Schema 2020-12: json-schema.org.
- FTC 16 CFR Part 464 (fees; short-term lodging and live-event tickets). Alaska: AS 08.54 (Big Game Commercial Services Board); ADF&G sport-fishing guide and business registration. This page is not legal advice.
- Facts on this page last checked 2026-10-10. Internet is needed for these links only; the tools on this page work offline once loaded.