Agent to agent commerce
Ottr is a purchasing platform first. Our own assistant is one client; your agent can be another. It finds and prepares the purchase, your customer approves it, and Ottr pays and checks out. Over REST, MCP or A2A.
/v1/agent
Search, prepare purchases, request approval, complete and track orders. Plain HTTPS and JSON.
OpenAPI spec/api/mcp
Connect Claude or any MCP client. Streamable HTTP, stateless, with the same permissions as the API.
Six tools/.well-known/agent-card.json
Agent2Agent JSON-RPC, versions 1.0 and 0.3. A purchase is a task that waits for the customer, then completes with the order.
Agent cardDelegating shopping to an AI only works if the customer stays in control of the money. So the permission model is built into the platform, not left to each agent.
From their OTTR Security page, the customer issues your agent a customer reference: scoped, expiring, and revocable at any time.
It searches, compares and prepares an exact purchase. Nothing is charged, and your agent cannot approve it.
OTTR sends the customer a secure, single-use link bound to the exact item, total and retailer. Signed-in, with a passkey when the risk calls for it.
OTTR funds the purchase from the customer's card and pays the retailer with a single-use virtual card locked to that amount. Your agent gets the order reference.
Live playground
This runs against OTTR's real API in sandbox. A demo agent makes every call you see; you play the customer. Nothing real is bought or charged.
You are the customer's AI agent. What should it look for?
Every step on the right is a real call to OTTR's Agent Commerce API, made just now by a demo agent with its own short-lived key. The customer is a throwaway sandbox shopper. Keys are partly hidden.
The same four moves on every protocol: search, prepare, ask the customer, complete. Pick whichever your agent already speaks.
# 1. Search (no customer needed)
curl https://ottr.si/v1/agent/search \
-H "Authorization: Bearer $OTTR_AGENT_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "wireless noise cancelling headphones", "max_price": 250}'
# 2. Prepare a purchase for your customer (charges nothing)
curl https://ottr.si/v1/agent/purchase-intents \
-H "Authorization: Bearer $OTTR_AGENT_KEY" \
-H "OTTR-Customer-Ref: $CUSTOMER_REF" \
-H "Content-Type: application/json" \
-d '{"offer_id": "<offer_id from search>"}'
# 3. Ask the customer to approve; OTTR messages them a secure link
curl -X POST https://ottr.si/v1/agent/purchase-intents/<id>/approval-requests \
-H "Authorization: Bearer $OTTR_AGENT_KEY" \
-H "OTTR-Customer-Ref: $CUSTOMER_REF"
# 4. Once approved, complete it and get the order reference
curl https://ottr.si/v1/agent/purchases \
-H "Authorization: Bearer $OTTR_AGENT_KEY" \
-H "OTTR-Customer-Ref: $CUSTOMER_REF" \
-H "Content-Type: application/json" \
-d '{"intent_id": "<id>"}'Agent keys are issued by the OTTR team while the platform is in sandbox. Read the docs, try the playground, and tell us what you are building.