A comprehensive proposal expands the Universal Commerce Protocol beyond physical goods — enabling AI agents to book restaurants, medical appointments, and spa treatments with the same protocol used for e-commerce.
Until now, UCP has focused on physical goods — products with inventory that can be evaluated statelessly and locked at checkout. But services represent a fundamentally different challenge: temporal resources with high-contention booking dynamics.
Consider the difference:
This proposal introduces a three-step workflow that handles temporal inventory correctly: SearchAvailability → HoldSlot → BookAppointment.
Returns open time slots with booking constraints for each:
supported_durations_minutes — e.g., [60, 90] for a massage therapistmax_party_size — e.g., 8 for a restaurant reservationdeposit_required — whether upfront payment is needed to holdThe critical innovation: a distributed lease with a server-enforced TTL. When an agent calls HoldSlot, it receives a temporary hold_id that reserves the slot for a limited time (e.g., 10 minutes). If BookAppointment isn't called within the TTL, the lease expires automatically.
Without expiring holds, a malicious or looping agent could reserve all available inventory indefinitely — a denial-of-service attack on a merchant's calendar. The TTL mechanism ensures abandoned holds automatically release, keeping inventory flowing.
Finalizes the reservation using the hold_id and an optional payment_reference for deposits. The payment reference comes from existing UCP checkout capabilities — this proposal doesn't reinvent payments.
The proposal uses a vendor-specific namespace (io.github.ligament-oss.scheduling) for prototyping, following UCP's extension governance model. This allows real-world validation before potential promotion to a standard namespace like dev.ucp.scheduling.
Critically, this introduces a new state machine specifically for bookings:
query_availability → hold (TTL starts) → negotiate/checkout → confirm
This is isolated from the standard dev.ucp.shopping.checkout capability, preventing any backward compatibility issues with existing retail implementations.
The schemas make holds and deposits optional on the backend:
The proposal includes a working MCP server implementation with comprehensive tests:
ucp-schema linterRestaurant, fixed 7:00 PM slot, party of 4, no deposit. Agent searches → holds → books in a single flow.
Massage therapist, 2:00 PM slot, configurable 60/90-minute durations, $50 USD deposit required. Agent must complete payment via UCP checkout before booking confirms.
For UCP adopters:
For the broader agentic commerce ecosystem:
The proposal enters UCP's governance process:
Given the comprehensive prototype and clear testing, expect this to move quickly through Working Draft. The real validation will come from adoption feedback on TTL defaults and edge cases.
Related:
Published March 28, 2026 · View Repo Pulse · Home