A reference implementation of the Universal Commerce Protocol. All endpoints are live — test your UCP client against the reference flower shop.
View on GitHubOpen the chat widget in the bottom-right to browse products, add to cart, and complete a purchase — every UCP API call is visible as a tool invocation.
Fetch the merchant profile to see supported services and payment handlers.
curl {{BASE}}/.well-known/ucp
Use the catalog search endpoint to discover products.
curl -X POST {{BASE}}/catalog/search \
-H "Content-Type: application/json" \
-H 'UCP-Agent: profile="https://agent.example/profile"' \
-H "request-signature: test" \
-H "request-id: <unique-id>" \
-d '{"query": "roses", "pagination": {"limit": 5}}'
Go straight to checkout with line items. Choose a fulfillment method:
Add items to a lightweight cart for exploration.
Pass cart_id to create a checkout from the cart.
curl -X POST {{BASE}}/checkout-sessions \
-H "Content-Type: application/json" \
-H 'UCP-Agent: profile="https://agent.example/profile"' \
-H "request-signature: test" \
-H "idempotency-key: <unique-key>" \
-H "request-id: <unique-id>" \
-d '{"cart_id": "<cart-id>"}'
Update the checkout with a discount code:
| Method | Path | Description |
|---|---|---|
GET | /.well-known/ucp | Discovery profile |
| Catalog | ||
POST | /catalog/search | Search products |
POST | /catalog/lookup | Batch lookup by IDs |
POST | /catalog/product | Get product detail |
| Cart | ||
POST | /carts | Create cart |
GET | /carts/{id} | Get cart |
PUT | /carts/{id} | Update cart |
POST | /carts/{id}/cancel | Cancel cart |
| Checkout | ||
POST | /checkout-sessions | Create checkout |
GET | /checkout-sessions/{id} | Get checkout |
PUT | /checkout-sessions/{id} | Update checkout |
POST | /checkout-sessions/{id}/complete | Complete checkout |
POST | /checkout-sessions/{id}/cancel | Cancel checkout |
| Orders | ||
GET | /orders/{id} | Get order |
PUT | /orders/{id} | Update order |
| Header | Value | Required |
|---|---|---|
UCP-Agent | profile="https://agent.example/profile" | All requests |
Signature | sig=:test: (bypasses validation) | All requests |
Request-Id | Any unique string | All requests |
Idempotency-Key | Any unique string | POST / PUT (checkout, cart) |