Commerce Protocols · Recommended · High impact
Agent purchase policy
Liability is the open question in agent commerce, and it is a policy decision rather than a technical one: a site that accepts an agent purchase has to decide who carries the cost when the agent is wrong, and publish that decision where an agent can read it.
- Recommended
- High impact
- Draft standard
| Property | Value |
|---|---|
| Check id | agent-purchase |
| Dimension | Commerce Protocols (15%) |
| Tier | Recommended — pool 20 pts |
| Weight inside tier | 2 |
| Impact | High |
| Maturity | Draft — A published specification that is not yet ratified. |
| Conditional | Yes — scored only on commercial sites |
| Publishing skill | agent-purchase-policy |
| Standards | — |
What is measured
Conditional: reported n/a unless the scanner has already detected a commercial signal (Product/Offer JSON-LD, add-to-cart or buy-now copy, a cart/checkout link). It reads the policy pages it already holds (/ai-policy, /agent-policy, /terms, /agentic-commerce, /ai) and passes when one page carries a sentence that pairs an agent word with a purchase word — purchase, order, checkout or refund — and grants it to agents. It classifies each such sentence first: a sentence that reads as a prohibition, such as "AI agents must never purchase products", is a refusal and is reported as a partial (warn), never as a pass, because the site did not grant the permission this check measures. A page with only one of the two words does not count, and if no page carries both the check fails outright.
Reproduce it yourself
You do not have to take our word for any of this. Run the same measurement against your own domain:
DOMAIN=shop.example.com
for p in /ai-policy /agent-policy /terms; do printf '%s: ' "$p"; curl -sL "https://$DOMAIN$p" | sed 's/<[^>]*>/ /g' | grep -Eio 'agent|purchase|order|checkout|refund' | sort -u | tr '\n' ' '; echo; done
The fix
This is the artifact to ship. It is the complete change, not a description of one.
<!-- /agent-policy : served as HTML at https://shop.example.com/agent-policy -->
<article>
<h1>Agent policy</h1>
<h2>Agent-initiated purchases</h2>
<p>Autonomous agents may search the catalogue and create orders on this site. Accepted
authorisation: an AP2 mandate signed with the user's passkey, or an ACP shared payment token
issued for this merchant. Card numbers typed by an agent are never accepted.</p>
<h2>Liability</h2>
<p>An order created with a valid mandate is binding on the user who signed it; the agent operator
is responsible for staying inside <code>scope_amount_max</code>. Orders without a valid mandate
are cancelled and refunded in full.</p>
<h2>Spending limits</h2>
<p>Default ceiling 2,000 USD per order and 10,000 USD per 30 days; write to
<a href="mailto:agents@shop.example.com">agents@shop.example.com</a> to raise it.</p>
<h2>Refunds and shipping</h2>
<p>14-day free returns; see <a href="/returns">/returns</a> for the machine-readable policy.</p>
</article>
Related checks
| Check | Tier | Impact | Same skill |
|---|---|---|---|
product-schema — Product/catalog schema | Essential | Critical | — |
payment-protocols — Agent payment standard support (AP2/ACP/x402/UCP) | Recommended | High | — |
ucp-manifest — UCP manifest (/.well-known/ucp) | Emerging | Medium | — |
returns — Return and shipping terms machine-readable | Recommended | Medium | — |
agent-analytics — Agent traffic measurement | Emerging | Low | — |
inventory-freshness — Inventory and price freshness | Recommended | High | — |
seller-identity — Seller identity declared | Recommended | Medium | — |
shipping-costs — Shipping cost and delivery declared | Recommended | High | — |