Make your site usable by agents
Six steps, ordered by effort. Each one names the pillar it moves. Amazon's own Buy for Me agent already follows the first two when it shops other stores: it identifies itself and honors opt-outs. We're asking every site, Amazon included, to hold to that standard.
1Say your stance in robots.txtAccess · Consent
Two lines end the guessing game. Content Signals is Cloudflare's policy syntax; user-directed agents read it.
User-Agent: * Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: /
2Ask agents to identify, then honor itAccess
Amazon's Agent Terms ask for Agent/[name]. That's a fine convention. The other half is letting identified agents through.
User-Agent: ChatGPT-User User-Agent: Claude-User User-Agent: Perplexity-User User-Agent: GoogleAgent-Mariner Allow: /
3Verify signatures at the edgeAccess
Web Bot Auth (IETF draft, RFC 9421 message signatures) lets an agent prove who it is per request. Cloudflare, Akamai, AWS WAF and Vercel can verify it. Allow verified agents; keep challenging the rest.
# Cloudflare: Security → Bots → Verified bots → allow category "AI Agent" # or verify yourself: GET https://<signature-agent>/.well-known/http-message-signatures-directory
4Give agents a front doorProtocols · Consent
A UCP manifest for shopping, an MCP server card for everything else. Agents that can call an API don't need to hold a customer's password.
GET /.well-known/ucp
{ "ucp": { "version": "2026-01-23",
"services": { "dev.ucp.shopping": [{ "transport": "rest", "endpoint": "https://example.com/api/ucp/v1" }] },
"capabilities": { "dev.ucp.shopping.checkout": [ … ] } } }5Make the page legibleSurface
Server-render, use main/nav landmarks and labeled forms, ship JSON-LD Product/Offer, publish llms.txt. Everything an accessibility audit already asks for.
/llms.txt # Example Store > What we sell, how to search, where checkout lives. - [Products](/products.md) - [Order status](/orders.md)
6Expose in-page tools with WebMCPProtocols · Task
Chrome's origin trial lets a page register typed tools an agent can call instead of clicking. Start with search and add-to-cart.
document.modelContext.registerTool({
name: "add_to_cart",
description: "Add a SKU to the cart",
inputSchema: { type: "object", properties: { sku: { type: "string" }, qty: { type: "integer" } } },
execute: async ({ sku, qty }) => cart.add(sku, qty)
});Then scan yourself
Scans are free and public. Re-scan after each change and watch the pillars fill in.