Shopping: price, stock and bulk quotes
How a shopper's agent can ask a retailer's agent for price, store stock and a bulk quote, and why catalog answers stay indicative until checkout.
Three questions come up before most purchases: what does it cost, is it in stock near me, and what if I need forty of them. A shopper’s agent can ask all three of a retailer’s agent in one structured request and get machine-readable answers back. The standards for the catalog and checkout ends already exist. The quote in the middle, with its terms and expiry, is where the work is.
How it works today
Product pages. Retailers mark up pages with schema.org Offer: price, priceCurrency, availability (values such as InStock, OutOfStock, PreOrder, SoldOut and LimitedAvailability), availableAtOrFrom for store locations, eligibleQuantity for the order quantities a price applies to, inventoryLevel for an approximate stock count, and priceValidUntil. A gtin identifies the trade item itself. Agents and search engines read this markup, but it describes the page, and nobody is accountable for it to a specific shopper.
Store stock and bulk. “Is it on the shelf at the Elm Street store?” still often means a phone call. Bulk and trade pricing usually means a “request a quote” form and an email thread with a sales rep.
Agent commerce protocols. Two open protocols now cover the catalog and checkout ends:
- The Universal Commerce Protocol (release 2026-08-25) defines a
dev.ucp.shopping.catalogcapability with search and lookup operations. Variants returnprice,availability,list_priceandunit_price. The specification says catalog responses are not transactional commitments and checkout is authoritative, and that responses should not be reused across sessions without re-validation. - The Agentic Commerce Protocol, maintained by OpenAI and Stripe, lets a buyer’s agent run a merchant’s checkout while the merchant stays the system of record for orders, payments and taxes.
Price rules. In the US, the FTC’s Rule on Unfair or Deceptive Fees (16 CFR Part 464, published January 2025) requires the total price to be shown clearly and conspicuously, but it covers only live-event tickets and short-term lodging. General retail price claims fall under the older Guides Against Deceptive Pricing (16 CFR Part 233), which address practices such as fictitious former prices. In Canada, section 74.01(1.1) of the Competition Act treats a price that is not attainable because of fixed obligatory charges or fees as a false or misleading representation, unless the extra amount is only a tax or charge imposed under federal or provincial law.
The agent-to-agent version
Illustrative. A school’s purchasing assistant needs 40 of one calculator model by Friday and asks a retailer’s agent:
{
"jsonrpc": "2.0",
"id": 3,
"method": "SendMessage",
"params": {
"message": {
"role": "ROLE_USER",
"messageId": "msg-q-5521",
"parts": [
{"text": "Price and stock for 40 units of this item, pickup near K1S 5B6 or delivery by Friday."},
{
"data": {
"gtin": "00012345600012",
"quantity": 40,
"near": {"postalCode": "K1S 5B6", "radiusKm": 15},
"needBy": "2026-10-02",
"fulfillment": ["pickup", "delivery"]
},
"mediaType": "application/json"
}
]
}
}
}
The retailer’s agent completes the task with a quote as an artifact:
{
"artifactId": "quote-Q88213",
"name": "Quote Q88213",
"parts": [
{
"data": {
"quoteId": "Q88213",
"unitPrice": {"amount": "17.49", "currency": "CAD"},
"tier": "25 or more units",
"stock": [
{"store": "Bank St", "available": 22},
{"store": "Carling Ave", "available": 18}
],
"fees": [{"type": "delivery", "amount": "0.00", "currency": "CAD"}],
"totalBeforeTax": {"amount": "699.60", "currency": "CAD"},
"validUntil": "2026-09-30T23:59:00-04:00",
"honouredAtCheckout": true
},
"mediaType": "application/json"
}
]
}
If the buyer wants tax-exempt pricing, the retailer’s agent moves the task to TASK_STATE_INPUT_REQUIRED and asks for the exemption details. To buy, the assistant opens a checkout through UCP or ACP and references the quote ID. If store stock drops before pickup, the retailer’s agent reports it on the same task, so the buyer learns about the shortfall before arriving at the store.
What has to be true
Identity. The retailer needs to tell a real shopper’s agent from a competitor’s price crawler, which argues for authenticated or signed requests rather than anonymous calls. The shopper’s agent needs to know the answer came from the retailer itself, which the Agent Card on the retailer’s own domain provides.
Authority. Asking for a price needs none. Holding stock or buying does. AP2’s Checkout Mandate gives the merchant cryptographic proof that the shopping agent is authorized to purchase, and its Payment Mandate does the same for the payment side. A school purchasing assistant will also carry an internal spending limit.
Record. The quote is the record: its ID, the unit price, fees, total, stock claimed and expiry. It should also say what the total includes, such as taxes, delivery and any mandatory fees, and in which currency, so the buyer’s agent can compare it with the checkout total line by line. Checkout confirms the binding terms. If the two differ, the quote is what the buyer’s agent will point to.
Where Emissar fits
- Front Door (open to design partners) is for a retailer that wants to answer these requests directly, in front of the catalog and systems it already runs.
- Verify (in development) addresses the identity problem: which agent is asking and which provider stands behind it.
- Ledger (spec in progress) would keep a signed copy of the quote for both sides.
- Settle (planned) would apply at checkout. Emissar does not define a commerce or catalog protocol; UCP and ACP cover that.
Open questions
- Stock accuracy.
inventoryLevelis approximate by definition. How far should a store’s agent go in promising units on a shelf? - Quote validity. UCP makes checkout authoritative. Retailers still need a clear way to say “we will honour this quote until Wednesday.”
- Legal status. Whether a price returned to one shopper’s agent is treated like an advertised price under the FTC guides or a representation to the public under the Competition Act has not been tested.
- Per-agent pricing. Nothing stops a retailer’s agent from quoting different prices to different agents. Buyers may want to know when that happens.
- Scale. A popular agent could send thousands of stock checks an hour. Rate limits and caching need to be part of the agreement.
Questions
- If a retailer's agent quotes a price, is the retailer bound by it?
- The protocols say no by default. UCP describes catalog prices and availability as the business's current terms but not transactional commitments, and makes checkout authoritative. A retailer can choose to honour a quote until a stated expiry, and should say so in the quote.
- How is this different from scraping product pages?
- A scraper reads markup meant for people and search engines, and the retailer cannot tell who is asking or why. An agent request is addressed to the retailer, can be authenticated, and gets an answer with explicit terms such as a quote ID and an expiry.
Sources
- schema.org: Offer (accessed )
- Universal Commerce Protocol specification overview, release 2026-08-25 (accessed )
- Universal Commerce Protocol: Catalog capability, release 2026-08-25 (accessed )
- Agentic Commerce Protocol repository and README (accessed )
- Agentic Commerce Protocol RFC: Agentic Checkout, Merchant REST API (accessed )
- AP2 specification v0.2 (accessed )
- eCFR: 16 CFR Part 464, Rule on Unfair or Deceptive Fees (accessed )
- eCFR: 16 CFR Part 233, Guides Against Deceptive Pricing (accessed )
- Competition Act (Canada), section 74.01 (accessed )