{"type":"agent-readiness-showcase","schemaVersion":"1","what":"Agent-Native showcase: our agent-readiness scanner run against this site. Explains the three representations of every article (human HTML, FOR AI AGENTS block, Knowledge Object JSON) and publishes the cached self-scan verdicts.","url":"https://agentbadge.xyz/agent-readiness","htmlAlternate":"https://agentbadge.xyz/agent-readiness","scanned":"https://agentbadge.xyz","scan":{"status":"ok","scannedAt":"2026-10-21T23:23:04.417Z","cacheTtlSeconds":3600,"score":69.55,"grade":"D","total_rules":156,"verified":118,"missing":25,"not_applicable":12,"assertions":[{"rule_id":"AB-001","name":"robots.txt present","category":"discovery","status":"VERIFIED"},{"rule_id":"AB-002","name":"sitemap.xml present","category":"discovery","status":"VERIFIED"},{"rule_id":"AB-003","name":"agent-guide discoverable (JSON, Markdown, or HTML)","category":"discovery","status":"VERIFIED"},{"rule_id":"AB-004","name":"OpenAPI specification present & valid","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-005","name":"agent-guide.json schema-valid","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-006","name":"MCP server descriptor discoverable","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-007","name":"Guide ↔ OpenAPI endpoint consistency","category":"actionability","status":"CONFLICT"},{"rule_id":"AB-008","name":"Authentication scheme declared machine-readably","category":"actionability","status":"VERIFIED"},{"rule_id":"AB-009","name":"Capability inference coverage","category":"actionability","status":"NOT_APPLICABLE"},{"rule_id":"AB-010","name":"Pricing machine-readable","category":"machine_readable","status":"VERIFIED"},{"rule_id":"AB-011","name":"Rate limits declared machine-readably","category":"machine_readable","status":"VERIFIED"},{"rule_id":"AB-012","name":"Structured error schema declared","category":"machine_readable","status":"VERIFIED"},{"rule_id":"AB-013","name":"Owner verification status","category":"verification","status":"NOT_APPLICABLE"},{"rule_id":"AB-014","name":"llms.txt present","category":"discovery","status":"VERIFIED"},{"rule_id":"AB-015","name":"Content negotiation — agent UA gets non-HTML","category":"content_negotiation","status":"VERIFIED"},{"rule_id":"AB-016","name":"Content negotiation — Accept: JSON returns JSON","category":"content_negotiation","status":"VERIFIED"},{"rule_id":"AB-017","name":"Content negotiation — Accept: text returns text","category":"content_negotiation","status":"VERIFIED"},{"rule_id":"AB-018","name":"Content negotiation — Accept: markdown returns markdown","category":"content_negotiation","status":"VERIFIED"},{"rule_id":"AB-019","name":"Content negotiation — preferred Content-Type (q-values)","category":"content_negotiation","status":"VERIFIED"},{"rule_id":"AB-020","name":"MCP tools/list responds","category":"machine_readable","status":"VERIFIED"},{"rule_id":"AB-021","name":"MCP tools/call responds","category":"machine_readable","status":"VERIFIED"},{"rule_id":"AB-022","name":"MCP SSE transport supported","category":"machine_readable","status":"VERIFIED"},{"rule_id":"AB-023","name":"MCP auth discovery resolves","category":"bot_auth","status":"VERIFIED"},{"rule_id":"AB-024","name":"llms-full.txt found","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-025","name":"llms-full.txt linked from HTML","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-026","name":"Skill file found","category":"skills","status":"VERIFIED"},{"rule_id":"AB-027","name":"Skill file frontmatter valid","category":"skills","status":"VERIFIED"},{"rule_id":"AB-028","name":"Vary: Accept header set","category":"content_negotiation","status":"VERIFIED"},{"rule_id":"AB-029","name":"Inline content negotiation (no redirect)","category":"content_negotiation","status":"VERIFIED"},{"rule_id":"AB-030","name":"Live 402 response on paid endpoint","category":"payments","status":"VERIFIED"},{"rule_id":"AB-031","name":"x402 challenge decodable","category":"payments","status":"VERIFIED"},{"rule_id":"AB-032","name":"Payment-Required header present","category":"payments","status":"VERIFIED"},{"rule_id":"AB-033","name":"Recipient (payTo) specified","category":"payments","status":"VERIFIED"},{"rule_id":"AB-034","name":"Payment terms (amount) specified","category":"payments","status":"VERIFIED"},{"rule_id":"AB-035","name":"x402.json discovery published","category":"payments","status":"VERIFIED"},{"rule_id":"AB-036","name":"Bazaar discoverable","category":"bazaar","status":"VERIFIED"},{"rule_id":"AB-037","name":"Bazaar service declared","category":"bazaar","status":"VERIFIED"},{"rule_id":"AB-038","name":"Facilitator specified","category":"payments","status":"VERIFIED"},{"rule_id":"AB-039","name":"OpenAPI spec found at standard path","category":"openapi","status":"VERIFIED"},{"rule_id":"AB-040","name":"OpenAPI paths defined","category":"openapi","status":"VERIFIED"},{"rule_id":"AB-041","name":"OpenAPI paths reachable","category":"openapi","status":"VERIFIED"},{"rule_id":"AB-042","name":"Response matches OpenAPI spec","category":"openapi","status":"VERIFIED"},{"rule_id":"AB-043","name":"OpenAPI version identified","category":"openapi","status":"VERIFIED"},{"rule_id":"AB-044","name":"OpenAPI title present","category":"openapi","status":"VERIFIED"},{"rule_id":"AB-045","name":"Cache headers present","category":"infrastructure","status":"VERIFIED"},{"rule_id":"AB-046","name":"Structured JSON 404 errors","category":"infrastructure","status":"VERIFIED"},{"rule_id":"AB-047","name":"Rate limit headers present","category":"infrastructure","status":"VERIFIED"},{"rule_id":"AB-048","name":"agents.txt found","category":"agents_txt","status":"VERIFIED"},{"rule_id":"AB-049","name":"RSS/Atom feed available","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-050","name":"WebMCP manifest found","category":"webmcp","status":"VERIFIED"},{"rule_id":"AB-051","name":"WebMCP form annotations","category":"webmcp","status":"VERIFIED"},{"rule_id":"AB-052","name":"og:image reachable","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-053","name":"SVG favicon available","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-054","name":"Canonical URL correct","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-055","name":"RSS feed linked from HTML","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-056","name":"WebFinger endpoint available","category":"identity","status":"VERIFIED"},{"rule_id":"AB-057","name":"DID document available","category":"identity","status":"VERIFIED"},{"rule_id":"AB-058","name":"Bot auth signatures directory found","category":"bot_auth","status":"NOT_APPLICABLE"},{"rule_id":"AB-059","name":"Bot auth members valid","category":"bot_auth","status":"NOT_APPLICABLE"},{"rule_id":"AB-060","name":"Bot auth public keys reachable","category":"bot_auth","status":"NOT_APPLICABLE"},{"rule_id":"AB-061","name":"Link headers on homepage (RFC 8288)","category":"discovery","status":"VERIFIED"},{"rule_id":"AB-062","name":"API Catalog endpoint (RFC 9727)","category":"discovery","status":"VERIFIED"},{"rule_id":"AB-063","name":"OAuth Protected Resource metadata (RFC 9728)","category":"bot_auth","status":"VERIFIED"},{"rule_id":"AB-064","name":"Auth.md agent registration instructions","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-065","name":"Agent Skills index","category":"skills","status":"VERIFIED"},{"rule_id":"AB-066","name":"Content Signals in robots.txt","category":"discovery","status":"VERIFIED"},{"rule_id":"AB-067","name":"Web Bot Auth directory (HTTP Message Signatures)","category":"bot_auth","status":"VERIFIED"},{"rule_id":"AB-068","name":"DNS-AID records for agent discovery","category":"discovery","status":"VERIFIED"},{"rule_id":"AB-069","name":"WebMCP browser-side tools (document.modelContext)","category":"webmcp","status":"VERIFIED"},{"rule_id":"AB-070","name":"L402 Lightning challenge in 402 response","category":"payments","status":"VERIFIED"},{"rule_id":"AB-071","name":"L402 macaroon and invoice in challenge","category":"payments","status":"VERIFIED"},{"rule_id":"AB-072","name":"Bazaar extension in L402 402 header","category":"bazaar","status":"VERIFIED"},{"rule_id":"AB-073","name":"HTTPS redirect enforced","category":"infrastructure","status":"VERIFIED"},{"rule_id":"AB-074","name":"A2A Agent Card published","category":"actionability","status":"VERIFIED"},{"rule_id":"AB-075","name":"A2A Agent Card verified","category":"actionability","status":"VERIFIED"},{"rule_id":"AB-076","name":"OpenAPI paths reachable (50% threshold)","category":"openapi","status":"VERIFIED"},{"rule_id":"AB-077","name":"OpenAPI response matches declared spec","category":"openapi","status":"VERIFIED"},{"rule_id":"AB-078","name":"OpenAPI x-payment-info declared on paid operations","category":"openapi","status":"VERIFIED"},{"rule_id":"AB-085","name":"MCP server name present","category":"actionability","status":"VERIFIED"},{"rule_id":"AB-086","name":"MCP auth discovery resolves","category":"actionability","status":"VERIFIED"},{"rule_id":"AB-088","name":"MPP (Machine Payments Protocol) support","category":"payments","status":"VERIFIED"},{"rule_id":"AB-093","name":"SPT (Stripe Payment Terms) support","category":"payments","status":"VERIFIED"},{"rule_id":"AB-098","name":"Content-Security-Policy header","category":"infrastructure","status":"VERIFIED"},{"rule_id":"AB-099","name":"Referrer-Policy header","category":"infrastructure","status":"VERIFIED"},{"rule_id":"AB-100","name":"Service page content depth","category":"seo_aeo","status":"VERIFIED"},{"rule_id":"AB-101","name":"Breadcrumb navigation on service pages","category":"seo_aeo","status":"VERIFIED"},{"rule_id":"AB-102","name":"MCP tools and REST endpoints parity","category":"webmcp","status":"GAP"},{"rule_id":"AB-103","name":"check_compliance MCP tool available","category":"webmcp","status":"VERIFIED"},{"rule_id":"AB-104","name":"Blog article OpenGraph type","category":"seo_aeo","status":"VERIFIED"},{"rule_id":"AB-105","name":"Article author and date meta tags","category":"seo_aeo","status":"VERIFIED"},{"rule_id":"AB-106","name":"AEO short-answer summary block","category":"seo_aeo","status":"VERIFIED"},{"rule_id":"AB-107","name":"Semantic definition lists in guide content","category":"seo_aeo","status":"VERIFIED"},{"rule_id":"AB-108","name":"OG image alt text brand consistency","category":"seo_aeo","status":"VERIFIED"},{"rule_id":"AB-109","name":"Agent Card version 1.0.0+","category":"machine_readable","status":"NOT_APPLICABLE"},{"rule_id":"AB-110","name":"Blog articles in AI sitemap","category":"discovery","status":"VERIFIED"},{"rule_id":"AB-111","name":"Crawl-delay directive in robots.txt","category":"discovery","status":"GAP"},{"rule_id":"AB-112","name":"OAuth Authorization Server metadata (RFC 9728)","category":"identity","status":"GAP"},{"rule_id":"AB-113","name":"LLM policy file","category":"discovery","status":"VERIFIED"},{"rule_id":"AB-114","name":"AI sitemap content type coverage","category":"discovery","status":"GAP"},{"rule_id":"AB-115","name":"MCP namespace-based tool isolation","category":"webmcp","status":"VERIFIED"},{"rule_id":"AB-116","name":"Well-known MCP descriptor","category":"webmcp","status":"VERIFIED"},{"rule_id":"AB-117","name":"Image alt text coverage","category":"accessibility","status":"VERIFIED"},{"rule_id":"AB-118","name":"Lazy loading on below-fold images","category":"accessibility","status":"VERIFIED"},{"rule_id":"AB-119","name":"OAuth token endpoint reachable","category":"verification","status":"NOT_APPLICABLE"},{"rule_id":"AB-120","name":"Authenticated endpoint callable","category":"verification","status":"NOT_APPLICABLE"},{"rule_id":"AB-121","name":"Token response valid format","category":"verification","status":"NOT_APPLICABLE"},{"rule_id":"AB-122","name":"At least one endpoint callable","category":"verification","status":"NOT_APPLICABLE"},{"rule_id":"AB-123","name":"Response matches OpenAPI schema","category":"verification","status":"NOT_APPLICABLE"},{"rule_id":"AB-124","name":"Response content-type present","category":"verification","status":"NOT_APPLICABLE"},{"rule_id":"AB-125","name":"LocalBusiness schema.org present","category":"seo_aeo","status":"VERIFIED"},{"rule_id":"AB-126","name":"Opening hours machine-readable","category":"seo_aeo","status":"VERIFIED"},{"rule_id":"AB-127","name":"Area served defined","category":"seo_aeo","status":"VERIFIED"},{"rule_id":"AB-128","name":"OAuth2 preferred over static API keys","category":"bot_auth","status":"GAP"},{"rule_id":"AB-129","name":"Credentials passed via headers (not query params)","category":"bot_auth","status":"GAP"},{"rule_id":"AB-130","name":"OAuth scopes defined","category":"bot_auth","status":"GAP"},{"rule_id":"AB-131","name":"Token revocation endpoint available","category":"bot_auth","status":"GAP"},{"rule_id":"AB-132","name":"Token introspection endpoint available","category":"bot_auth","status":"GAP"},{"rule_id":"AB-133","name":"Private key JWT auth method supported","category":"bot_auth","status":"GAP"},{"rule_id":"AB-134","name":"Token Exchange (RFC 8693) supported","category":"bot_auth","status":"GAP"},{"rule_id":"AB-135","name":"AAuth metadata endpoint available","category":"bot_auth","status":"GAP"},{"rule_id":"AB-136","name":"Agent Authorization Grant supported","category":"bot_auth","status":"GAP"},{"rule_id":"AB-137","name":"AAuth scope descriptions published","category":"bot_auth","status":"GAP"},{"rule_id":"AB-138","name":"DPoP token binding supported","category":"bot_auth","status":"GAP"},{"rule_id":"AB-139","name":"mTLS-bound access tokens","category":"bot_auth","status":"GAP"},{"rule_id":"AB-140","name":"Auth.md documents agent auth flow","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-141","name":"Short-lived access tokens","category":"bot_auth","status":"GAP"},{"rule_id":"AB-142","name":"Refresh token rotation supported","category":"bot_auth","status":"GAP"},{"rule_id":"AB-143","name":"Token revocation endpoint reachable","category":"bot_auth","status":"GAP"},{"rule_id":"AB-144","name":"Auth.md documents credential vault pattern","category":"documentation","status":"VERIFIED"},{"rule_id":"AB-145","name":"No static API keys in OpenAPI security","category":"bot_auth","status":"GAP"},{"rule_id":"AB-146","name":"Capability descriptions","category":"actionability","status":"INFERRED"},{"rule_id":"AB-147","name":"Parameter semantics","category":"documentation","status":"INFERRED"},{"rule_id":"AB-148","name":"Request and response examples","category":"documentation","status":"GAP"},{"rule_id":"AB-149","name":"Error semantics","category":"error_semantics","status":"INFERRED"},{"rule_id":"AB-150","name":"Pricing discoverability","category":"pricing","status":"VERIFIED"},{"rule_id":"AB-151","name":"Rate limits machine-readable","category":"rate_limits","status":"INFERRED"},{"rule_id":"AB-152","name":"Pricing and limits cross-source consistency","category":"verification","status":"GAP"},{"rule_id":"AB-153","name":"Authentication clarity","category":"bot_auth","status":"INFERRED"},{"rule_id":"AB-154","name":"Retry semantics declared","category":"retry_semantics","status":"GAP"},{"rule_id":"AB-155","name":"Versioning declared","category":"versioning","status":"INFERRED"},{"rule_id":"AB-156","name":"Sandbox environment declared","category":"sandbox","status":"GAP"},{"rule_id":"AB-157","name":"Agent policy machine-readable","category":"agent_policy","status":"INFERRED"},{"rule_id":"AB-158","name":"Capability list declared","category":"discovery","status":"INFERRED"},{"rule_id":"AB-159","name":"Business constraints documented","category":"actionability","status":"GAP"},{"rule_id":"AB-160","name":"Support path declared","category":"documentation","status":"INFERRED"},{"rule_id":"AB-161","name":"AI-Agent Discovery meta tags","category":"discovery","status":"VERIFIED"},{"rule_id":"AB-162","name":"Heartbeat.md availability","category":"actionability","status":"VERIFIED"},{"rule_id":"AB-163","name":"Skill.json (JSON-LD) availability","category":"machine_readable","status":"VERIFIED"},{"rule_id":"AB-164","name":"Error catalog endpoint","category":"machine_readable","status":"VERIFIED"},{"rule_id":"AB-165","name":"Agent feeds (JSON Feed 1.1 / RSS 2.0)","category":"discovery","status":"VERIFIED"},{"rule_id":"AB-166","name":"next_call pattern in API responses","category":"actionability","status":"VERIFIED"},{"rule_id":"AB-183","name":"Answer-first extractability","category":"seo_aeo","status":"INFERRED"},{"rule_id":"AB-184","name":"Evidence density for citability","category":"seo_aeo","status":"INFERRED"},{"rule_id":"AB-185","name":"Entity clarity and canonical naming","category":"seo_aeo","status":"INFERRED"},{"rule_id":"AB-186","name":"Server-rendered primary content in initial HTML","category":"seo_aeo","status":"VERIFIED"},{"rule_id":"AB-187","name":"Anti-citation disqualifiers","category":"seo_aeo","status":"INFERRED"}]},"caveats":["The scan covers the listed target only, not every page.","GAP and NOT_APPLICABLE rules are reported, not hidden.","Results are cached; use ?refresh=1 on the HTML page to rescan."]}