Publish Agent Readiness signals for AI scanners
Royal MCP 1.5.1 and later publishes three machine-readable discovery documents at the standard well-known paths that Cloudflare’s Agent Readiness scanner, Vercel’s is-agentic, Chrome Lighthouse’s Agentic Browsing audit, and other AI-discovery tools read to recognize your site as agent-ready. This page is a reference for what each document contains, where it lives, and how to verify each one on your own site.
What Royal MCP publishes
Three JSON documents plus an RFC 8288 Link header on every MCP endpoint response:
| Document | Path | Purpose |
|---|---|---|
| MCP Server Card | /.well-known/mcp/server-cards.json/.well-known/mcp/server-card.json (alias)/.well-known/mcp.json (alias) |
SEP-1649 shape with serverInfo, endpoint, capabilities, supported protocol versions, and category-level tool counts. Read by MCP-aware scanners. |
| Skills Index | /.well-known/skills/index.json/.well-known/agent-skills/index.json (alias) |
Cloudflare-proposed agent-skills index. Publishes your tool set grouped by integration category (wordpress-core, woocommerce, elementor, and so on) with a tool count per skill. |
| OAuth Protected Resource | /.well-known/oauth-protected-resource |
RFC 9728 metadata pointing at the OAuth authorization server that protects your MCP endpoint. Read by scanners that verify auth discovery. |
| Link header | On every /mcp response |
RFC 8288 header pointing at the three discovery documents plus the OAuth Authorization Server metadata. Lets agent runtimes that hit your MCP endpoint discover metadata without extra probing. |
Scanners that recognize these signals
Every scanner below reads at least one of Royal MCP’s discovery documents. You don’t need to configure anything on their end; they auto-detect on the next scan of your domain.
Cloudflare Agent Readiness
Cloudflare’s beta Diagnostics dashboard grades sites on three tiers (Quick Wins, Technical Groundwork, Advanced Integration). Royal MCP contributes to Level 3 Advanced Integration:
- Share your AI tool context engine (MCP Server Card): reads
/.well-known/mcp/server-cards.json - List what your AI agent can do (Skills Index): reads
/.well-known/skills/index.json - Restrict content paths (OAuth Protected Resource): reads
/.well-known/oauth-protected-resource - Automate security handshakes for bots (OAuth Discovery): reads
/.well-known/oauth-authorization-server(shipped since Royal MCP 1.4.x)
Access it in the Cloudflare dashboard: select your zone, look for the Agent Readiness section in the left sidebar. If the scanner reports any of these as “not found” even though the paths return valid JSON, see the Cloudflare Cache Rule fix.
Vercel is-agentic
Vercel’s open scanner at is-agentic.com grades sites on 13 checks across Essential, Recommended, and Bonus tiers. Run it directly:
npx is-agentic your-site.com
Or hit the API programmatically:
curl -sS -X POST https://isitagentready.com/api/scan \
-H "Content-Type: application/json" \
-d '{"url": "https://your-site.com"}'Chrome Lighthouse Agentic Browsing audit
Chrome DevTools ships Lighthouse 13.3+ with an audit category called “Agentic Browsing” that grades sites on the same well-known-path signals Royal MCP publishes. Run it from Chrome DevTools: Lighthouse tab → select Agentic Browsing category → Analyze page load.
Verify from your terminal
Every document should return HTTP 200 with Content-Type: application/json; charset=utf-8. Curl each one:
for path in \ "/.well-known/mcp/server-cards.json" \ "/.well-known/mcp/server-card.json" \ "/.well-known/mcp.json" \ "/.well-known/skills/index.json" \ "/.well-known/agent-skills/index.json" \ "/.well-known/oauth-authorization-server" \ "/.well-known/oauth-protected-resource"; do echo "=== $path ===" curl -sSI "https://your-site.com$path" | head -3 done
Then inspect the Link header on your MCP endpoint response:
curl -sSI https://your-site.com/wp-json/royal-mcp/v1/mcp | grep -i link
You should see a Link header with three rel= values: mcp-server-card, agent-skills, and oauth-authorization-server.
Customize the published documents
Two WordPress filters let plugins or a mu-plugin add fields or reshape either discovery document before it ships:
| Filter | What it mutates |
|---|---|
royal_mcp_server_card |
Full MCP Server Card array before caching. Add custom fields, override vendor/documentation, or narrow tools_summary.categories. |
royal_mcp_agent_skills_index |
Full Skills Index array before caching. Add extra skills entries, tweak per-category descriptions, or exclude specific categories. |
Both filters fire before the 5-minute transient cache, so a filter change takes effect on the next request that misses the transient (or immediately if you delete_transient('royal_mcp_server_card_json') to force a rebuild).
If a scanner reports one of these as “not found”
Two common causes:
- Scanner-side timeout on Cloudflare-fronted sites. Cloudflare Free doesn’t auto-cache
application/json. The scanner’s parallel probes race the uncached origin latency. Fix with the one Cloudflare Cache Rule. - Host-level block on
/.well-known/. Some hosts (managed WordPress, self-hosted nginx with a locked-downlocation /.well-known/block) intercept every.well-known/*path before WordPress can respond. Verify with a curl to any of the paths above: if you get a 404 with an nginx or Apache branded body (not Royal MCP’s JSON error shape), the host is blocking. See the Royal MCP support hub for host-specific unblock guides (SiteGround, self-hosted nginx, Imunify360, BitNinja, Sucuri).