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.