Capability Checks
P1 api-catalog, P2 MCP Server Card, P3 Agent Skills, P4 OAuth discovery.
The Capabilities dimension is where reading turns into doing. Each check here exposes a machine-readable manifest of what an agent can call on your site — APIs, tools, skills, and the OAuth flow they need to do it authenticated.
P1 — API Catalog (RFC 9727) (weight 4)
RFC 9727 defines /.well-known/api-catalog — a Linkset document listing every API your site exposes.
How to fix
# /.well-known/api-catalog
{
"linkset": [
{
"anchor": "https://example.com/",
"service-desc": [
{ "href": "https://example.com/api/openapi.json", "type": "application/openapi+json" }
]
}
]
}Pair with a Link header (D3) for instant discovery.
P2 — MCP Server Card (weight 5)
Model Context Protocol lets an agent connect to your site as if it were a tool runtime. The convention AIScan checks for: a server card at /.well-known/mcp/server-card.json describing the available tools, resources, and prompts.
How to fix
Implement an MCP server (HTTP transport works for most web apps), then publish a server card. See our own live example at /.well-known/mcp/server-card.json. Read MCP Server for the full integration guide.
P3 — Agent Skills bundle (weight 4)
Agent Skills are a portable JSON/Markdown bundle that teaches Claude Code (and compatible runtimes) when to use your service and how to call it. AIScan checks for a discoverable aiscan-skill.json-style bundle plus an accompanying CLAUDE.md.
How to fix
See Agent Skill & CLAUDE.md for the format, plus our own files at /aiscan-skill.json and /CLAUDE.md as a reference.
P4 — OAuth protected-resource metadata (weight 3)
For authenticated APIs, agents need to know which OAuth authorisation server to talk to. RFC 9728 defines /.well-known/oauth-protected-resource for exactly that.
How to fix
# /.well-known/oauth-protected-resource
{
"resource": "https://example.com/api",
"authorization_servers": ["https://auth.example.com"],
"bearer_methods_supported": ["header"],
"scopes_supported": ["read", "write"]
}Required only if your site has authenticated APIs — otherwise the check is N/A.
E2 — Machine-readable API description (weight 3, recommended)
If your site exposes endpoints, agents shouldn't have to reverse-engineer them. AIScan looks for /openapi.json, /openapi.yaml, /api/openapi.json, /.well-known/openapi.json, /swagger.json, or a service-desc link in your RFC 9727 API catalog.
On sites we detect as pure content sites, this is reported as an optional improvement rather than a failure — the report says so explicitly instead of silently dropping the check.
How to fix
# 1. Publish the spec
GET /openapi.json -> 200 application/json (OpenAPI 3.1)
# 2. Advertise it
Link: </openapi.json>; rel="service-desc"; type="application/json"Ours is at /openapi.json, linked from /.well-known/api-catalog.
Further reading
- We Run a Public MCP Server: 67 Days of Who Calls It, and How
We run a public MCP server, and for 67 days we have been counting who uses it. Between 26 August and 1 November 2026, AI assistants asked it for scans 375 times, which is 10.1% of the 3,723 scans…
- Why /.well-known/ files return 404 or 403 on your host, and how to fix it
Your /.wellknown/ file is returning 404 or 403 because something between your repository and the browser treats a folder that starts with a dot as private. In our tests on 26 October 2026, a default…
- AI readiness setup guide by platform (2026)
Verified 17, 18, 20 and 22 October 2026. Updated on 22 October 2026. An AIready site needs six things: a robots.txt that names AI crawlers D1, B2, a sitemap D2, a declared feed E5, an llms.txt C2,…
- What a Failing AIScan Check Really Says: 2,961 Fail Lines Audited
A failing check on a scan report is supposed to be an instruction. The site owner reads the line, knows what the scanner asked for, knows what came back, and knows what to change. We audited whether…
- Platform League Table: WordPress, Next.js, Astro and Shopify Across 728 Sites
Every few weeks someone asks which platform produces the most agentready sites. WordPress, Next.js, Astro and Shopify all have fans, and a ranked table is the answer people expect. We have the data…
- How to Publish an OpenAPI File AI Agents Can Find
An agent that wants to call your API has to know what it can ask for. An OpenAPI file answers that in one fetch: every path, every parameter, every response shape, in JSON a program can read.…
- Agent Discovery Files Census: P1, P3, P4 and E2 Across 835 Sites
Only 301 of the 835 sites in our scan corpus pass any one of four agentdiscovery checks that depend on a /.wellknown/ file or an API description. All four pass on 99 sites. Take out one platform and…
- UCP profiles: Shopify serves one, most other stores don't
Shopify stores answer on /.wellknown/ucp. Almost nobody else does. We checked 238 commerceactive sites in the AIScan corpus on 10 October 2026: 12 of 17 Shopify catalogue stores pass check M1 the…