Getting Started¶
This guide walks you through implementing USP. Everyone starts with the domain core (service catalog, availability, booking), then reads the section for their deployment mode.
Choose Your Deployment Mode¶
| If your platform... | Choose | Read |
|---|---|---|
| Already supports UCP | UCP-Native Mode | Sections 1-5, 7, 9.1-9.5, 10.1 |
| Does not support UCP | Standalone Mode | Sections 1-6, 8, 9 (all), 10 (all) |
| Only offers free services | Either mode | Domain core + mode section (skip payment parts) |
graph TD
subgraph domainCore [Domain Core — Start Here]
S1["1. Introduction"] --> S2["2. Core Concepts"]
S2 --> S3["3. Service Catalog"]
S3 --> S4["4. Availability"]
S4 --> S5["5. Booking Lifecycle"]
end
subgraph discovery [Discovery]
S6["6. Discovery Registry (Optional)"]
end
subgraph ucpPath [UCP-Native Mode]
S7["7. UCP-Native Mode"]
end
subgraph standalonePath [Standalone Mode]
S8["8. Standalone Mode"]
end
subgraph shared [Shared Infrastructure]
S9["9. Transport Bindings"]
S9 --> S10["10. Security"]
end
subgraph extensions [Extensions]
S11["11. Extensions"]
end
S5 --> S6
S5 --> S7
S5 --> S8
S6 -.-> S7
S6 -.-> S8
S7 --> S9
S8 --> S9
S10 --> S11 UCP-Native Implementation Stages¶
If your platform supports UCP, follow these steps:
-
Register capabilities. Declare
dev.usp.services.catalog,dev.usp.services.availability,dev.usp.services.bookings, and optionallydev.usp.services.paid_bookingsin your/.well-known/ucpprofile. -
Implement service catalog. Expose the service catalog API (list services, get service, feed). See Service Catalog.
-
Implement availability. Expose availability query and optional hold mechanism. See Availability.
-
Implement booking lifecycle. Expose create, get, update, confirm, cancel, and reschedule booking operations. See Booking.
-
If offering paid services: Add the
paid_bookingsextension to your UCP checkout schema and implement the checkout flow. -
If offering free services only: No checkout integration needed.
-
Implement transport binding for your chosen transport (REST, MCP, A2A, or ESP). Skip Standalone-only transport infrastructure.
-
Implement USP-specific security requirements. Skip Standalone-only security infrastructure — UCP provides it.
-
Optional: Implement the waitlist extension.
-
Optional: Register in a discovery registry.
Standalone Implementation Stages¶
If your platform does not use UCP:
-
Create your business profile. Publish a
/.well-known/uspprofile declaring capabilities, transport endpoints, and optional checkout systems. -
Implement capability negotiation. Support the
USP-Agentheader and server-selects negotiation model. -
Implement service catalog. See Service Catalog.
-
Implement availability. See Availability.
-
Implement booking lifecycle. See Booking.
-
If offering paid services: Implement payment integration — choose the generic payment flow and/or the ACP booking extension.
-
If offering free services only: Skip payment integration entirely.
-
Implement transport binding for your chosen transport and transport infrastructure (TLS, CORS, rate limiting).
-
Implement security — both USP-specific requirements and standalone security infrastructure (OAuth 2.0, webhook signatures).
-
Optional: Implement the waitlist extension.
-
Optional: Register in a discovery registry.
Capabilities¶
USP defines three core capabilities and optional extensions:
| Capability | Namespace | Mode | Description |
|---|---|---|---|
| Service Catalog | dev.usp.services.catalog | Both | What services a business offers |
| Availability | dev.usp.services.availability | Both | When services are available |
| Bookings | dev.usp.services.bookings | Both | Booking lifecycle management |
| Paid Bookings | dev.usp.services.paid_bookings | UCP-Native only | Booking context in UCP checkout |
| Waitlist | dev.usp.services.waitlist | Both (extension) | Waitlist management |
Transport Bindings¶
| Binding | Description | Best For |
|---|---|---|
| REST | HTTP/OpenAPI 3.x with idempotency | Primary transport, web platforms |
| MCP | JSON-RPC via Model Context Protocol | AI agent tool use |
| A2A | Agent-to-Agent protocol | Autonomous multi-agent systems |
| ESP | Embedded Scheduling Protocol | In-app booking UIs via iframe |
Machine-Readable Artifacts¶
| Artifact | Path | Description |
|---|---|---|
| JSON Schemas | schemas/ | catalog.json, availability.json, booking.json, paid_bookings.json, waitlist.json |
| OpenAPI Spec | openapi/usp-rest.json | OpenAPI 3.1.0 for all REST operations |
| OpenRPC Spec | openrpc/usp-mcp.json | OpenRPC for all MCP methods |
Cross-Cutting Concerns¶
USP references IETF standards directly:
| Concern | Standard | Description |
|---|---|---|
| Discovery | RFC 8615 | Well-Known URIs |
| Error model | RFC 9457 | Problem Details for HTTP APIs |
| Authorization | RFC 6749 / RFC 9449 | OAuth 2.0 with DPoP |
| Transport security | RFC 8446 / RFC 9110 | TLS 1.3 and HTTP Semantics |
| Idempotency | draft-ietf-httpapi-idempotency-key-header | Idempotency key header |
| Webhook verification | RFC 9421 | HTTP Message Signatures |
| Rate limiting | draft-ietf-httpapi-ratelimit-headers | Rate limit headers |