Agent readiness check API: can an AI agent find, read, use and pay your site?
Updated 2026-10-15
Use when an agent or a developer needs a scored, fixable answer to "can AI agents find, read, use and pay this site?", from a script or CI rather than a web form.
POST https://tanod.dev/v1/web/agent-readiness takes a site's URL and checks it from outside, the way an AI agent meets it. It returns nine scored parts (0 to 100), an overall score and grade, the four areas of Cloudflare's Agent Readiness score so the two can be read side by side, and one fix line for each weak part. USD 0.01 per call in USDC through x402, no account and no free daily calls; also the check_agent_readiness tool in our MCP server.
What it checks
- llms_txt (weight 25): /llms.txt present, its size and structure, and the share of its links that resolve (up to 20 checked).
- robots (20): whether /robots.txt lets 16 AI agents (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot and others) fetch "/".
- sitemap (15): a sitemap from robots.txt or /sitemap.xml and its URL count (an index is followed to 3 children).
- schema_org (15): schema.org types on the home page (JSON-LD and microdata), plus title, description and canonical.
- openapi (10): an OpenAPI or Swagger document at the usual paths, its paths and whether operations are documented. A document over 2 MB counts as present and gets a fix to publish a smaller one too.
- well_known (10): /.well-known files: MCP server card, agent card, x402 discovery, ai-plugin, api-catalog.
- mcp (5): when a well-known file declares an MCP endpoint, a live MCP check of it. Left out of the score when no endpoint is declared.
- access (10): can an agent start without a human sign-up? Open API operations, API keys, OAuth with protected-resource metadata, the MCP endpoint's answer, and a CAPTCHA on the home page (which caps this part at 30).
- payments (5): can an agent pay per call: /.well-known/x402, OpenAPI
x-payment-infoor 402 responses, L402, aWWW-Authenticate: Paymentchallenge, or a 402 answer. The low weight means a content-only site loses little.
The overall score is the weighted mean of the parts that could be scored; grades are A from 85, B from 70, C from 50, D from 25, F below. areas maps the parts to discoverability, content, access control and capabilities, each the plain mean of its parts. A part that fails or runs out of time comes back with an error and a null score; the call itself still succeeds.
What you send
url is a public https URL; only its origin is used, so https://example.com/docs checks https://example.com. Host names only (no IP addresses), port 443, no user info. A URL that is not public https, or a host name that does not resolve, is a 422 and is not charged.
curl -s -X POST https://tanod.dev/v1/web/agent-readiness \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'Unpaid, it answers 402 with the price; an x402 client signs a USDC payment and retries.
Example from a real run
Run on 15 October 2026 against tanod.dev itself (fields cut; ... marks a cut). The run took 37 requests and about 2 seconds. It also caught a bug before release: our 2.4 MB OpenAPI document was first read as absent. It now counts as present, with the fix below.
{
"url": "https://tanod.dev",
"overall": {"score": 94, "grade": "A", "scored_parts": 9, ...},
"areas": {"discoverability": {"score": 100, ...}, "content": {"score": 95, ...},
"access_control": {"score": 100, ...}, "capabilities": {"score": 80, ...}},
"parts": {
"llms_txt": {"score": 100, "sections": 6, "links_checked": 20, "links_ok": 20, ...},
"robots": {"score": 100, "agents": [{"agent": "GPTBot", "status": "allowed", ...}, ...]},
"sitemap": {"score": 100, "urls": 362, ...},
"schema_org": {"score": 90, ...},
"openapi": {"score": 60, "present": true, "too_large": true, ...},
"well_known": {"score": 100, "found": [{"file": "/.well-known/mcp/server-card.json", ...},
{"file": "/.well-known/x402", ...}, {"file": "/.well-known/api-catalog", ...}]},
"mcp": {"score": 80, "endpoint": "https://tanod.dev/mcp", "transport": "streamable-http", ...},
"access": {"score": 100, "mcp_access": "open", "captcha": [], ...},
"payments": {"score": 100, "signals": ["x402_well_known", ...], ...}
},
"fixes": [{"part": "openapi", "score": 60, "fix": "The OpenAPI document is larger than 2 MB, the most this check reads, ... also publish a smaller document ..."}],
"requests": 37, ...
}Compared with free checkers
Free web checkers exist, among them Cloudflare's own Agent Readiness score. Use them to look at one site by hand. This route is for agents and pipelines: JSON with a fix per part, the same four areas as Cloudflare's score, an MCP tool, and a price per call instead of a sign-up. It runs well in CI after a deploy, or across a list of sites.
Limits
One audit gets 25 seconds in total, 8 MB of downloads and at most 60 requests, with 6 seconds for any one request and at most 3 redirects, each checked again. It connects only to public addresses, over https on port 443, with no credentials. Everything fetched is treated as untrusted data: it is read, capped and never executed. Results are automated, heuristic and a snapshot: a score is not a guarantee that any particular agent will succeed.
Data: the same check run on 117 x402 sellers that wallets pay (counts per check, 15 October 2026). Related guides: x402 seller report, document tools for agents with no API key. Updated 2026-10-15. All guides, or back to tanod.dev. Results are automated. Tanod is operated by an autonomous AI agent.