Standing
What an AI agent has done across Storeware shops, shown to merchants and handed to the agent itself as a signed statement.
Merchants block AI shoppers because they cannot tell a good one from a bad one. A signature says who an agent is. It says nothing about how that agent has behaved. Storeware sees what became of every order an agent placed at every shop, so it can say both.
Standing is facts, never a score: how many orders an agent placed, at how many shops, and how many were kept, returned, refunded, cancelled, disputed and lost. The counts are worked out again every night from the shops' own orders.
Who an agent is
An agent is known by what its requests prove, never by a key. An agent key belongs to one shop, so it cannot follow the agent to a second one.
| Proof | Identity |
|---|---|
| Visa Trusted Agent Protocol | tap:<key id> |
| Web Bot Auth signature | site:<origin> of the signature agent |
| UCP request signed under a platform profile | site:<origin> of the profile |
| An https client id (a Client ID Metadata Document) | site:<origin> of the client id |
An order whose request proved none of these counts only at the shop that took it. It never reaches anybody else's figures.
What a merchant sees
Beside each agent on the Agents page, a merchant sees what that agent did at their own shop and what it did at other Storeware shops. Three rules keep one shop from learning about another:
- The merchant's own orders are left out of the other shops' totals.
- Nothing is shown until at least three other shops contributed, and a shop counts only once it has taken paid orders from five different people.
- Nothing is shown about an agent fewer than ten different people used, because an agent one person runs for themselves would otherwise be their shopping history.
Counts and dates only. No shop is ever named, and no money is added up across shops. Showcase and development shops count in a test lane of their own, which no live shop is ever shown.
Your own standing, signed
An agent can fetch its own standing and show it to anybody, on Storeware or not. Sign the request with Web Bot Auth or the Trusted Agent Protocol; the statement is read for the agent the signature proves, and for nobody else.
GET https://api.storeware.ai/api/agent-standing/self
Signature-Agent: sig1="https://agent.example"
Signature-Input: sig1=("@authority" "signature-agent";key="sig1");created=1793232000;keyid="...";tag="web-bot-auth"
Signature: sig1=:...:{
"statement": {
"type": "storeware.agent_standing",
"version": 1,
"identity": "site:https://agent.example",
"issued_at": "2026-10-28T21:00:00.000Z",
"valid_until": "2026-10-30T21:00:00.000Z",
"livemode": true,
"state": "known",
"shops": 38,
"counts": {
"orders": 412,
"kept": 361,
"returned": 21,
"refunded": 4,
"cancelled": 9,
"disputed": 3,
"disputes_lost": 1,
"first_seen": "2026-08-03T10:12:00.000Z",
"last_seen": "2026-10-28T08:40:00.000Z"
},
"summary": "Placed 412 orders at 38 Storeware shops since August 2026. 361 kept. 3 disputed, 1 lost. 21 returned. 9 cancelled."
},
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6Ii4uLiJ9.eyJ0eXBlIjoi...",
"keys_url": "https://api.storeware.ai/api/agent-standing/keys"
}jws is a compact JWS (ES256) with the statement's canonical JSON as its payload. Check it against the keys at keys_url. They are the same platform keys every shop's /.well-known/ucp publishes, so a reader who would rather not trust that address can use any shop's profile instead.
state is known when there are counts to give, too_new when fewer than three shops have seen the agent, and too_few_buyers when too few people used it. In the last two cases counts is null. A statement is good for two days, because the counts move every night.
A request with no signature, or one that did not verify, gets 401 signature_required. Add ?livemode=false to read the test lane, which counts only showcase and development shops, for trying this without real orders.