Is your site legible
to a buyer's AI agent?
More purchases start with an assistant reading a site on someone's behalf. It guesses the trust addresses, reads the structured data, follows the site's own links to a product page and the pricing page, and gives up on a 404 a person would never see. Doorman walks a site exactly that way and writes down what it got.
A request, not a scan: a person reads it, then the scanner runs under the published etiquette. Free. No account.
See it run Wicketry · scanned 13 Sep 2026 · the scanner's own site, first
Wicketry scores 107 of 116 points (92 %), which is an A. 7 of 73 checks did not pass. 1 of those is in the heaviest band, the things an agent stops at. The most is at stake in doors: 3 points of 3.
Grade = weighted points earned ÷ points available: A ≥ 90 %, B ≥ 75 %, C ≥ 60 %, D ≥ 40 %, else F. Every finding shows its weight; nothing is hidden in the total.
| 13:45:08.334 | 200 | https://wicketry.com/robots.txt | robots.txt | |
| 13:45:09.248 | +0.84s | 200 | https://wicketry.com/ | home page |
| 13:45:09.973 | +0.91s | 301 | http://wicketry.com/ | http → https redirect? |
| 13:45:10.892 | +0.72s | 200 | https://wicketry.com/sitemap.xml | sitemap |
| 13:45:11.860 | +0.92s | 200 | https://wicketry.com/llms.txt | llms.txt |
| 13:45:12.793 | +0.97s | 200 | https://wicketry.com/.well-known/agent.json | the agent card (who you are, for agents; JSON) |
| 13:45:14.189 | +0.93s | 200 | https://wicketry.com/.well-known/api-catalog | the API catalogue (RFC 9727, a linkset of service-desc/service-doc) |
| 13:45:14.945 | +1.40s | 200 | https://wicketry.com/agents.md | agents.md (how an agent should use the site) |
| 13:45:15.740 | +0.76s | 200 | https://wicketry.com/.well-known/security.txt | security.txt (RFC 9116) |
| 13:45:16.537 | +0.80s | 200 | https://wicketry.com/security.txt | security.txt at the root (the older place) |
| 13:45:17.624 | +0.80s | 200 | https://wicketry.com/pricing | a pricing page at the obvious path |
| 13:45:18.461 | +1.09s | 200 | https://wicketry.com/legal | legal at the obvious path |
| … 18 more requests on the site page | ||||
Every line above is the scanner's own log for this scan — timestamp, the gap since the previous request, the status the site answered with, and why the request was made. The full walk and every finding →
What it found 7 things an agent could not read
FDoors0/3 pts · 1 miss›
- ✕An MCP door answers at /mcp (200, or a deliberate 401/403/405)POST /mcp tools/list → 404Optional: an MCP endpoint lets an agent read your data under a key. If you have one, say so in the agent card.optional; not every site needs a door, but a door that is advertised must answerw 3
BHow it describes itself12/14 pts · 2 misses›
- ✕A Twitter/X card type is declaredmeta twitter:card: (absent)Add `<meta name="twitter:card" content="summary_large_image">`; without it the card falls back to a bare link.w 1
- ✕og:image declares its dimensionsog:image:width/height: (absent) × (absent)Add og:image:width and og:image:height so a reader can lay the card out without downloading the image first.w 1
BWhat the server says7/9 pts · 2 misses›
- ✕A Content-Security-Policy is declaredcontent-security-policy: (absent)Add a Content-Security-Policy. Start in report-only mode; the point here is that one exists and is deliberate, not that it is strict.w 1
- ✕Framing is controlled (X-Frame-Options or CSP frame-ancestors)x-frame-options: (absent) · frame-ancestors in CSP: noDeclare who may frame the page, with `frame-ancestors` in your CSP (the modern form) or `X-Frame-Options`.w 1
ADoes it agree with itself10/11 pts · 1 miss›
- ✕Trailing slashes resolve to one URL (/pricing)GET /pricing/ → 200Pick one form of /pricing and redirect the other to it. Two URLs answering 200 with the same page means an agent cites whichever it happened to be handed, and your own links disagree with each other.w 1
BAgent surfaces5/6 pts · 1 miss›
- ✕/agents.md and the agent card point at the same placespaths in the card: 11; also named in agents.md: 8; only in the card: ['/privacy', '/status', '/terms']Make the two agree. Two agent-facing files describing different paths is worse than one file, because the agent has no way to tell which is current.w 1
What it reads
Public pages only, by GET, in this order — and nothing else:
How the grade is made
Every check carries a weight. The grade is the weighted points earned divided by the points available on the day of the scan; every finding shows its weight and the request it rests on, so nothing is hidden in the total.
A grade describes how legible a site was to an agent that day. It is not a certificate, not a compliance statement and not a ranking; it determines nothing.
Every one of the 73 checks explained, the 7 things an agent could not read and how to fix each one — steps, a verify line, the WordPress and hand-built variants.
An MCP door answers at /mcp (200, or a deliberate 401/403/405)
POST /mcp tools/list → 404
This is the one optional check in the report. An MCP door lets an agent read your data under a key instead of scraping pages. Not having one is a legitimate choice; having one that nothing points at is the waste.
What to change: Optional: an MCP endpoint lets an agent read your data under a key. If you have one, say so in the agent card.
How to fix it
- Decide whether you want one at all. Most sites do not need a door, and this finding is marked optional for that reason — a failing row here is not a fault.
- If you run one, answer at
/mcp. A 200 is expected; a deliberate 401, 403 or 405 also counts, because refusing an unauthenticated request is a working door saying no. - Name it in the agent card. A door nothing advertises will only be found by a client that probes for it, and most do not.
- Do not answer 404 at
/mcpwhile advertising an endpoint elsewhere. That is the site disagreeing with itself and the client believes the 404. - If you have no door, say so in agents.md and point at the alternatives — the data download, the API description. An explicit no is worth more than a silence.
Later: monitoring — a fresh scan on a schedule and a note when a grade moves.
Get your site listed
Send the address from a mailbox at that domain. A submission is a request, not a scan.
Nothing runs on your site before that. The scan then follows the etiquette: robots.txt first, an identified User-Agent, at most 40 requests spaced apart, no JavaScript.
Your site page, every finding with its one-line fix, and a badge that says the grade and the date and links back — re-drawn from the newest scan at every build.