← All Articles
UCP March 28, 2026 5 min read

UCP Universal Appointment Scheduling: Services Vertical Arrives

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.

About the Author

@ejoslin submits this proposal with a working MCP server prototype at ligament-oss/ucp-scheduling-extension. The prototype includes full schema validation and end-to-end tests with live AI agents — a "show, don't tell" approach that demonstrates the architecture works before asking for standards adoption.

Why This Matters

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: SearchAvailabilityHoldSlotBookAppointment.

The Architecture

SearchAvailability HoldSlot (TTL starts) Negotiate/Pay BookAppointment

SearchAvailability

Returns open time slots with booking constraints for each:

HoldSlot

The 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.

Why TTL Matters

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.

BookAppointment

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.

What Changed Technically

New Namespace

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.

Separate State Machine

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.

Flexible Complexity

The schemas make holds and deposits optional on the backend:

Testing: Show, Don't Tell

The proposal includes a working MCP server implementation with comprehensive tests:

Scenario A: Low Complexity

Restaurant, fixed 7:00 PM slot, party of 4, no deposit. Agent searches → holds → books in a single flow.

Scenario B: High Complexity

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.

Implications for the Ecosystem

For UCP adopters:

For the broader agentic commerce ecosystem:

What's Next

The proposal enters UCP's governance process:

  1. Working Draft: Schema merged with disclaimer, tests passing, initial docs
  2. Candidate: Adoption feedback collected, TTL best practices documented
  3. Stable: Full documentation, migration guides, TC majority approval

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