Agent Offer Protocol
An open way for AI agents and stores to settle a price. The agent asks, the store offers, the agent counters or accepts, and checkout happens where the store already sells. Version 0.1, open draft.
Why it exists
AI agents already shop for people. Today they read a product page, guess the terms, and hope the price holds at checkout. Stores have no way to answer an agent directly, and agents have no way to ask. The protocol gives both sides one exchange, built on standards the web already has. It sits on top of ACP and UCP and does not compete with them.
Discovery
A participating store publishes /.well-known/agent-offers.json, or the page the store's llms.txt links as Agent offers. It names the offer endpoint, the message versions it supports, what identity it requires and a short policy summary. The store's llms.txt links to it.
Identity
Agents sign their requests with Web Bot Auth: HTTP Message Signatures (RFC 9421) with a Signature-Agent header. Unsigned agents get list prices only.
Messages
JSON over HTTPS, and the same operations as MCP tools:
OfferRequest: items, quantities, buyer type, currency, delivery window;Offer: line prices, terms, validity, disclosure and an offer id;CounterOffer,Accept,RejectandExpire.
Every message is idempotent by its id, and every offer carries its expiry.
The store's policy stays private
The floor and the rules are never revealed. An agent learns only offers and stated reasons. Rounds are limited, three counter-offers by default, and requests are rate-limited per agent identity.
Checkout
Accept returns a checkout handoff: an ACP or UCP session where the store supports it, a platform checkout link such as a Shopify draft order, or a single-use discount code. An agent that shops in the buyer's browser asks for the code and applies it at the store's own checkout. The code works only on the offer's products, at the offer's quantities or more, and only until the offer expires. It brings those lines to the offer's total, never below it. The buyer still confirms the order and its total before the agent places it.
Honesty
Every Offer states "pricing": "rule-based". For consumer purchases it also carries the price label that the buyer's market requires, and the agent shows it to the person it shops for.
Agent terms
- Offers are rule-based and set by the store. Every offer states
pricing: "rule-based". - An offer binds the store only until its expiry, and only when checkout is completed.
- The store's rules, floor prices and margins are never disclosed.
- Unsigned agents receive list prices only. Signed agents (Web Bot Auth, RFC 9421) may receive rule-based offers.
- Rounds are limited, three counter-offers by default, and requests are rate-limited per agent identity.
- For consumer purchases, the human-readable labels of §1 travel with the offer and must be shown to the person the agent acts for.
Conformance
v0.1 comes with a public test suite of golden exchanges and negative cases, a reference implementation in Arbling (HTTP and MCP tools), and a validator. A conforming store never offers below its floor, never offers a consumer more than list price, always discloses, honors expiry, answers replays idempotently, never leaks its policy, and never gives an unsigned agent a rule-based price.
Governance and license
The protocol follows the Open Jewelry Schema model: a steering committee with outside seats, announced at v1.0; contributions under the DCO; the specification under CC0 and the code under Apache-2.0; and a 14-day comment period for every change. Comments go to hi@arbling.com.
