UCP Checker
Book a room over UCP: a hotel test store in Playground 0.17.0

Book a room over UCP: a hotel test store in Playground 0.17.0

On 24 September the Lodging Technical Council's booking capability was merged into the Universal Commerce Protocol as a draft, the first capability from a vertical other than shopping. We covered what merged and what changed in review. A spec you can read is one thing. A spec you can run an agent against is another.

UCP Playground 0.17.0 adds hotel.local, a test store for the draft dev.ucp.lodging.booking capability, next to the flower shop we already host for shopping. You can book a room on it by hand in the Tool Inspector, point any model at it in Agent runs and watch it book end to end, or connect your own agent to it over MCP or REST.

The UCP Playground Tool Inspector connected to hotel.local, on the Review step of a lodging booking. A Deluxe King Room, Standard Flexible Rate, 9 to 12 October 2026 for two adults, marked Free cancellation and ready_for_complete, total JP¥76,500. Below: the update_booking_session call, a disclosure about the Tokyo Accommodation Tax, the price breakdown, and payment terms of JP¥69,300 due today and JP¥7,200 at the property. The Held state panel on the right shows the booking as Ready with a countdown.
The Inspector on hotel.local, one step from booking. The session is exactly what the store returned: status, the tax disclosure, the price, and when each part of it is paid.

A store built from the spec's own examples

hotel.local runs two properties: Ginza Grand Hotel in Tokyo, priced in yen, and Grand Hotel in San Francisco, priced in dollars. They were chosen so that booking the right room on the right dates reproduces the specification's two worked examples field for field: "Property-Collected Taxes & Fees", where the room and service fee are paid today and a resort fee and the Tokyo Accommodation Tax are paid at the hotel, and "Flexible Payment Terms — Deposit & Balance", where the first night is paid now and the rest at check-in.

Everything a booking session carries in the draft is there to test against:

  • The five operations: create, get, update, complete and cancel a booking session, over MCP and REST, with the store's profile at /lodging-merchant/.well-known/ucp.
  • Price and timing kept apart. totals is the price; payment.terms says when each part of it is due: today, later, or at the property.
  • The cancellation policy extension, with refundability stated as of now: free cancellation until the cutoff, then a penalty, or non-refundable from the start.
  • The rules a store enforces: room capacity and child age limits, sold-out nights, who the booking is for, and a session that expires after 30 minutes.
  • Test cards: tok_visa books, tok_decline is declined, and nothing is ever charged.

Its responses are checked against the draft schemas with the specification's own validator. When the draft changes, the store changes with it.

Book it by hand in the Inspector

Connect to hotel.local and the Inspector swaps its product search for a booking flow in four steps: Search, Rate, Review, Book. Pick a room, pick a rate, and the store opens a booking session. Review then shows that session as the store returned it, with nothing recomputed. Errors say what the store still needs, such as who is booking. Disclosures, such as a local tax, are shown in full, and booking asks you to acknowledge them first. It works over MCP or REST, whichever you pick.

The UCP Playground Tool Inspector connected to hotel.local, showing its six tools and a four-step stepper: Search, Rate, Review, Booked. The Search availability card has Tokyo, 9 to 12 October 2026 and 2 adults, a search_properties call returning 3 offers, and two rooms: Deluxe King Room from JP¥69,570 and Superior Twin Room from JP¥66,600 for 3 nights.
Search, the first of four steps. Discovery isn't part of the lodging booking capability, so the test store brings its own search tool and says so.

Or let an agent book it

In Agent runs, any model can search, hold and book a stay on hotel.local end to end. The chat shows hotel cards: one for each room and rate the search found, and one for the booking itself that follows its status from held to booked.

A replayed agent session against hotel.local. A search_properties call is followed by a row of hotel cards: Deluxe King Room Standard Flexible Rate ¥76,500 for 3 nights, Deluxe King Room Advance Purchase ¥69,570, Superior Twin Room ¥66,600, and a King Room Flexible Rate in San Francisco at $1,350. Below, a create_booking_session call and the card for the booking it created.
A replay of a Gemini 3.6 Flash session: the rooms it found, then the booking it created.

A lodging run is also read as a lodging run. A booking isn't a cart, so a session against a store that declares dev.ucp.lodging is scored on its own funnel: Search Stays, Hold Room, Book, Booked. It ends as Room Held or Booked rather than Cart Created, in the Agent, in session history, on shared replays and in comparisons. The session API says which reading applies, so the same holds for anything you build on top.

A UCP Playground session page for hotel.local, marked Booked. Model Gemini 3.6 Flash, 22.9 seconds, 5 turns. The funnel reads Search Stays, Hold Room, Book, Booked, all complete, with the note: Every funnel step was exercised, end to end. The Held state section shows one booking at JP¥76,500, marked Booked.
A completed booking, read as one: the lodging funnel and the booking in Held state.

The Held state panel, which mirrors whatever a merchant is holding for you, now shows a booking session as Held, Ready or Booked, with the store's own total, expiry and message codes. Release cancels a live booking session at the store. Totals in currencies without minor units, such as yen, now display correctly everywhere.

What building against the draft shows

Three things stood out that are worth knowing if you are implementing lodging yourself.

Price and timing check each other. The entries in totals add up to the total, and the schedules of the payment term the buyer selected must add up to it too. Other terms are indicative and can differ, for example a discount for paying today. Both rules are simple sums, so a store can hold itself to them and any tool can verify them. It is one of the most useful choices the council made in review.

Discovery comes first, and it isn't part of the capability. A booking session starts from a property and a room the spec expects to come from an earlier, provisional search step, which the booking capability itself doesn't define. An agent still needs those ids from somewhere, so a lodging store has to offer some way in. hotel.local's search is its own and labels itself as not part of UCP.

The draft has no dated version yet. The spec's schemas expect a dated version string, and a draft doesn't have one. hotel.local declares the current release, 2026-08-25, and marks its lodging capabilities as draft. Expect to revisit this when lodging lands in a release.

Try it

Open the Tool Inspector on hotel.local and book a room by hand, or pick hotel.local from the try-pills in Agent runs and ask a model to book one. To test your own agent, point it at https://ucpplayground.com/lodging-merchant/.well-known/ucp. How the Inspector reads lodging stores is in the Tool Inspector docs, and the full release notes are on the Playground changelog.


About UCP Checker

UCP Checker is the independent validation and observability layer for the Universal Commerce Protocol. We crawl, validate and grade every public UCP manifest we can find, run the merchant directory, the UCP Score, live adoption stats, the vertical guides and the authority-bound vendor map, and track the spec as it evolves so you don't have to — measured from two vantages (what a business declares, and what actually happens when an agent transacts), the same way for everyone, without picking winners.

Sources

Related coverage: UCP Lodging is merged · The lodging booking capability, as filed · What the merchant is holding for you: Playground 0.12.0 · Lodging vertical guide

Check your domain's UCP status

See if your storefront is ready for agentic commerce in seconds.

Weekly UCP Report

Get the agentic commerce digest every Monday

Real adoption data, ecosystem trends, new spec versions, and the stores that broke or recovered this week. Read by founders and engineers building the next generation of commerce.

Free forever No spam Unsubscribe anytime

View a sample report →

Weekly UCP Report
Issue #51 · Sep 21, 2026
+664
new verified stores
Verified rate
Latest spec
Cart capability