{"kind":"web","tier":"cache","target":"anc.dev","scorecard_url":"https://anc.dev/score/anc.dev","markdown_url":"https://anc.dev/score/anc.dev/md","json_url":"https://anc.dev/score/anc.dev/json","freshness":{"cached":true,"scored_at":"2026-09-18T21:24:28.023Z","refresh_after":"2026-09-18T21:25:28.023Z"},"spec_version":"0.5.0","scorecard":{"schema_version":"0.4","spec_version":"0.5.0","target_url":"https://anc.dev/","mcp_endpoint":"https://anc.dev/mcp","mcp_discovery":[{"source":"/.well-known/mcp.json","endpoint":"https://www.anc.dev/mcp","blocked":"off-origin endpoint declaration"},{"source":"/.well-known/mcp/server-card.json","endpoint":"https://www.anc.dev/mcp","blocked":"off-origin endpoint declaration"},{"source":"/mcp","endpoint":"https://anc.dev/mcp","probed":"initialize"}],"tool":{"name":"anc.dev","url":"https://anc.dev/"},"audience":null,"audit_profile":null,"site_type":null,"public_listing":true,"summary":{"pass":52,"noncompliant":0,"broken":0,"absent":0,"n_a":13,"skip":0,"error":0},"coverage_summary":{"must":{"total":3,"verified":3},"should":{"total":33,"verified":33},"may":{"total":16,"verified":16}},"score_pct":100,"score":{"relative":100,"global":84},"categories":[{"id":"discoverability","name":"Discoverability","passed":7,"counted":7},{"id":"content-for-agents","name":"Content for agents","passed":16,"counted":16},{"id":"bot-crawl-policy","name":"Bot & crawl policy","passed":4,"counted":4},{"id":"api","name":"API","passed":0,"counted":0},{"id":"mcp","name":"MCP","passed":22,"counted":22},{"id":"agent-discovery-auth","name":"Agent discovery & auth","passed":3,"counted":3}],"results":[{"id":"openapi","label":"An OpenAPI description is published","category":"api","group":"P2","layer":"web","keyword":"must","tier":"required","principle":"P2","status":"n_a","na_reason":"antecedent-unmet","evidence":"no API surface detected","result":"Not applicable (no API surface detected)"},{"id":"mcp-initialize","label":"initialize handshake returns serverInfo + protocolVersion","category":"mcp","group":"P2","layer":"web","keyword":"must","tier":"required","principle":"P2","status":"pass","evidence":"serverInfo anc, protocol 2025-06-18","result":"Verified (serverInfo anc, protocol 2025-06-18)"},{"id":"mcp-server-discover","label":"server/discover answers with server identity on the modern lane","category":"mcp","group":"P2","layer":"web","keyword":"should","tier":"recommended","principle":"P2","status":"pass","evidence":"supports 2026-07-28, serverInfo anc","result":"Verified (supports 2026-07-28, serverInfo anc)"},{"id":"llms-txt","label":"/llms.txt present with a summary and link index","category":"content-for-agents","group":"P2","layer":"web","keyword":"should","tier":"recommended","principle":"P2","status":"pass","evidence":"https://anc.dev/llms.txt -> 200","result":"Verified (https://anc.dev/llms.txt -> 200)"},{"id":"llms-full-txt","label":"/llms-full.txt present (single-fetch full corpus)","category":"content-for-agents","group":"P2","layer":"web","keyword":"may","tier":"optional","principle":"P2","status":"pass","evidence":"https://anc.dev/llms-full.txt -> 200","result":"Verified (https://anc.dev/llms-full.txt -> 200)"},{"id":"accept-markdown","label":"Accept text/markdown content negotiation returns markdown","category":"content-for-agents","group":"P2","layer":"web","keyword":"should","tier":"recommended","principle":"P2","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"robots","label":"/robots.txt present","category":"discoverability","group":"P7","layer":"web","keyword":"should","tier":"recommended","principle":"P7","status":"pass","evidence":"https://anc.dev/robots.txt -> 200","result":"Verified (https://anc.dev/robots.txt -> 200)"},{"id":"sitemap","label":"/sitemap.xml present","category":"discoverability","group":"P7","layer":"web","keyword":"may","tier":"optional","principle":"P7","status":"pass","evidence":"https://anc.dev/sitemap.xml -> 200","result":"Verified (https://anc.dev/sitemap.xml -> 200)"},{"id":"oauth-discovery","label":"OAuth/OIDC discovery metadata published","category":"agent-discovery-auth","group":"P1","layer":"web","keyword":"may","tier":"optional","principle":"P1","status":"pass","evidence":"https://anc.dev/.well-known/oauth-authorization-server -> 200","result":"Verified (https://anc.dev/.well-known/oauth-authorization-server -> 200)"},{"id":"json-schemas","label":"Referenced JSON Schemas resolve as application/schema+json","category":"api","group":"P2","layer":"web","keyword":"may","tier":"optional","principle":"P2","status":"n_a","na_reason":"antecedent-unmet","evidence":"no JSON Schema references detected","result":"Not applicable (no JSON Schema references detected)"},{"id":"api-catalog","label":"/.well-known/api-catalog published (RFC 9727)","category":"api","group":"P8","layer":"web","keyword":"may","tier":"optional","principle":"P8","status":"n_a","na_reason":"antecedent-unmet","evidence":"no API surface detected","result":"Not applicable (no API surface detected)"},{"id":"json-errors","label":"API client errors return JSON, not HTML","category":"api","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"n_a","na_reason":"antecedent-unmet","evidence":"no API surface detected","result":"Not applicable (no API surface detected)"},{"id":"rate-limit-headers","label":"API responses advertise rate-limit headers","category":"api","group":"P6","layer":"web","keyword":"should","tier":"recommended","principle":"P6","status":"n_a","na_reason":"antecedent-unmet","evidence":"no API surface detected","result":"Not applicable (no API surface detected)"},{"id":"oauth-protected-resource","label":"OAuth Protected Resource Metadata published (RFC 9728)","category":"agent-discovery-auth","group":"P1","layer":"web","keyword":"may","tier":"optional","principle":"P1","status":"n_a","na_reason":"antecedent-unmet","evidence":"MCP endpoint does not challenge for auth","result":"Not applicable (MCP endpoint does not challenge for auth)"},{"id":"mcp-resources-list","label":"resources/list returns at least one resource when advertised","category":"mcp","group":"P2","layer":"web","keyword":"should","tier":"recommended","principle":"P2","status":"pass","evidence":"https://anc.dev/mcp -> 200","result":"Verified (https://anc.dev/mcp -> 200)"},{"id":"mcp-unknown-method","label":"unknown JSON-RPC method returns -32601","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"pass","evidence":"error code -32601","result":"Verified (error code -32601)"},{"id":"mcp-capabilities","label":"initialize advertises capabilities (tools / resources / prompts)","category":"mcp","group":"P2","layer":"web","keyword":"should","tier":"recommended","principle":"P2","status":"pass","evidence":"serverInfo anc, protocol 2025-06-18","result":"Verified (serverInfo anc, protocol 2025-06-18)"},{"id":"mcp-tools-list","label":"tools/list returns a tools array with input schemas","category":"mcp","group":"P2","layer":"web","keyword":"must","tier":"required","principle":"P2","status":"pass","evidence":"13 tools, 13 with input schema","result":"Verified (13 tools, 13 with input schema)"},{"id":"mcp-modern-tools-list","label":"header-routed tools/list (2026-07-28) returns tools without initialize","category":"mcp","group":"P2","layer":"web","keyword":"must","tier":"required","principle":"P2","status":"pass","evidence":"13 tools, 13 with input schema","result":"Verified (13 tools, 13 with input schema)"},{"id":"mcp-malformed-body","label":"a non-JSON body draws -32700 (or a typed HTTP 400/415 refusal)","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"pass","evidence":"error code -32700","result":"Verified (error code -32700)"},{"id":"mcp-batch-reject","label":"a batch carrying a modern-envelope request is rejected -32600","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"pass","evidence":"error code -32600","result":"Verified (error code -32600)"},{"id":"mcp-unknown-tool","label":"tools/call with an unknown tool name returns -32602","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"pass","evidence":"error code -32602","result":"Verified (error code -32602)"},{"id":"mcp-modern-unknown-method","label":"an unknown method on the modern lane returns -32601","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"pass","evidence":"error code -32601","result":"Verified (error code -32601)"},{"id":"mcp-modern-clientcaps","label":"_meta missing clientCapabilities is rejected (-32602 or -32600)","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"pass","evidence":"error code -32602","result":"Verified (error code -32602)"},{"id":"mcp-modern-header-mismatch","label":"an Mcp-Method header disagreeing with the body method draws -32020","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"pass","evidence":"error code -32020","result":"Verified (error code -32020)"},{"id":"mcp-modern-version-reject","label":"an unsupported protocol version is rejected -32022 with data.supported","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"pass","evidence":"error code -32022","result":"Verified (error code -32022)"},{"id":"mcp-modern-resources-miss","label":"modern resources/read with an unknown URI returns -32602","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"pass","evidence":"error code -32602","result":"Verified (error code -32602)"},{"id":"mcp-accept-unsatisfiable","label":"an unsatisfiable Accept draws a 406 rather than an unasked-for type","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"pass","evidence":"https://anc.dev/mcp -> 406","result":"Verified (https://anc.dev/mcp -> 406)"},{"id":"mcp-get-fast-fail","label":"GET on the MCP endpoint answers fast (not a held-open hang)","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"pass","evidence":"https://anc.dev/mcp -> 200","result":"Verified (https://anc.dev/mcp -> 200)"},{"id":"mcp-cors-preflight","label":"CORS preflight (OPTIONS) succeeds with Access-Control-Allow-* headers","category":"mcp","group":"P6","layer":"web","keyword":"should","tier":"recommended","principle":"P6","status":"n_a","na_reason":"posture-consistent","evidence":"no Allow-Origin on the preflight or the POST: consistent no-CORS posture","result":"Deliberate posture, not scored (no Allow-Origin on the preflight or the POST: consistent no-CORS posture)"},{"id":"webmcp","label":"Root HTML exposes WebMCP browser tools","category":"mcp","group":"P2","layer":"web","keyword":"may","tier":"optional","principle":"P2","status":"pass","evidence":"https://anc.dev/ -> 200 (webmcp script asset)","result":"Verified (https://anc.dev/ -> 200 (webmcp script asset))"},{"id":"llms-txt-format","label":"llms.txt has H1, summary, and a link index","category":"content-for-agents","group":"P2","layer":"web","keyword":"should","tier":"recommended","principle":"P2","status":"pass","evidence":"https://anc.dev/llms.txt -> error","result":"Verified (https://anc.dev/llms.txt -> error)"},{"id":"mcp-accept-json","label":"a JSON-only Accept is answered without SSE framing","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"pass","evidence":"https://anc.dev/mcp -> 200","result":"Verified (https://anc.dev/mcp -> 200)"},{"id":"llms-txt-when-to-use","label":"llms.txt has a when-to-use or programmatic-access section","category":"content-for-agents","group":"P2","layer":"web","keyword":"should","tier":"recommended","principle":"P2","status":"pass","evidence":"https://anc.dev/llms.txt -> error","result":"Verified (https://anc.dev/llms.txt -> error)"},{"id":"mcp-cors-actual","label":"POST response carries Access-Control-Allow-Origin","category":"mcp","group":"P6","layer":"web","keyword":"should","tier":"recommended","principle":"P6","status":"n_a","na_reason":"posture-consistent","evidence":"no Allow-Origin on the preflight or the POST: consistent no-CORS posture","result":"Deliberate posture, not scored (no Allow-Origin on the preflight or the POST: consistent no-CORS posture)"},{"id":"well-known-mcp-card","label":"A .well-known MCP server card is published (SEP-1649)","category":"mcp","group":"P8","layer":"web","keyword":"should","tier":"recommended","principle":"P8","status":"pass","evidence":"https://anc.dev/.well-known/mcp/server-card.json -> 200","result":"Verified (https://anc.dev/.well-known/mcp/server-card.json -> 200)"},{"id":"markdown-cli-ua","label":"Bare CLI User-Agent receives the markdown twin","category":"content-for-agents","group":"P2","layer":"web","keyword":"may","tier":"optional","principle":"P2","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"markdown-agent-ua","label":"AI user-fetch User-Agent receives the markdown twin","category":"content-for-agents","group":"P2","layer":"web","keyword":"may","tier":"optional","principle":"P2","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"agent-ua-reachable","label":"AI user-fetch User-Agent can reach the homepage","category":"bot-crawl-policy","group":"P7","layer":"web","keyword":"should","tier":"recommended","principle":"P7","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"mcp-usage-doc","label":"A human/agent usage doc for the server resolves","category":"mcp","group":"P8","layer":"web","keyword":"may","tier":"optional","principle":"P8","status":"pass","evidence":"https://anc.dev/mcp-skill.md -> 200","result":"Verified (https://anc.dev/mcp-skill.md -> 200)"},{"id":"markdown-vary","label":"Negotiated responses carry Vary Accept, User-Agent","category":"content-for-agents","group":"P2","layer":"web","keyword":"should","tier":"recommended","principle":"P2","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"markdown-accept-plain","label":"Accept text/plain returns the markdown twin","category":"content-for-agents","group":"P2","layer":"web","keyword":"may","tier":"optional","principle":"P2","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"root-meta-description","label":"Root HTML has a descriptive <meta name=\"description\">","category":"content-for-agents","group":"P3","layer":"web","keyword":"should","tier":"recommended","principle":"P3","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"schema-org-jsonld","label":"Root HTML embeds Schema.org JSON-LD","category":"content-for-agents","group":"P2","layer":"web","keyword":"may","tier":"optional","principle":"P2","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"content-without-js","label":"Root HTML has an H1 and readable text without JavaScript","category":"content-for-agents","group":"P2","layer":"web","keyword":"should","tier":"recommended","principle":"P2","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"semantic-html","label":"Root HTML uses semantic landmarks","category":"content-for-agents","group":"P3","layer":"web","keyword":"may","tier":"optional","principle":"P3","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"noscript-fallback","label":"Root HTML has a <noscript> with machine entry points","category":"content-for-agents","group":"P1","layer":"web","keyword":"should","tier":"recommended","principle":"P1","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"markdown-frontmatter","label":"Markdown twin carries YAML frontmatter","category":"content-for-agents","group":"P2","layer":"web","keyword":"may","tier":"optional","principle":"P2","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"mcp-card-legacy-aliases","label":"Legacy MCP card paths redirect to the canonical card","category":"mcp","group":"P8","layer":"web","keyword":"may","tier":"optional","principle":"P8","status":"pass","evidence":"https://anc.dev/.well-known/mcp -> 301 (301 -> /.well-known/mcp/server-card.json)","result":"Verified (https://anc.dev/.well-known/mcp -> 301 (301 -> /.well-known/mcp/server-card.json))"},{"id":"link-headers","label":"Homepage sends RFC 8288 Link headers pointing at agent resources","category":"discoverability","group":"P3","layer":"web","keyword":"should","tier":"recommended","principle":"P3","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"root-link-rel","label":"Root HTML links to machine surfaces via <link rel>","category":"discoverability","group":"P3","layer":"web","keyword":"should","tier":"recommended","principle":"P3","status":"pass","evidence":"https://anc.dev/ -> 200","result":"Verified (https://anc.dev/ -> 200)"},{"id":"dns-aid","label":"DNS for AI Discovery (DNS-AID) records under _agents (IETF draft)","category":"discoverability","group":"P8","layer":"web","keyword":"may","tier":"optional","principle":"P8","status":"pass","evidence":"_index._agents.anc.dev: 1 record(s) via https://cloudflare-dns.com/dns-query","result":"Verified (_index._agents.anc.dev: 1 record(s) via https://cloudflare-dns.com/dns-query)"},{"id":"robots-ai-rules","label":"robots.txt declares AI-crawler rules (RFC 9309)","category":"bot-crawl-policy","group":"P7","layer":"web","keyword":"should","tier":"recommended","principle":"P7","status":"pass","evidence":"https://anc.dev/robots.txt -> 200","result":"Verified (https://anc.dev/robots.txt -> 200)"},{"id":"llms-txt-links","label":"llms.txt links resolve","category":"content-for-agents","group":"P2","layer":"web","keyword":"should","tier":"recommended","principle":"P2","status":"pass","evidence":"https://anc.dev/mcp -> 200","result":"Verified (https://anc.dev/mcp -> 200)"},{"id":"content-signals","label":"robots.txt declares Content-Signal AI-usage preferences","category":"bot-crawl-policy","group":"P7","layer":"web","keyword":"should","tier":"recommended","principle":"P7","status":"pass","evidence":"https://anc.dev/robots.txt -> 200","result":"Verified (https://anc.dev/robots.txt -> 200)"},{"id":"web-bot-auth","label":"Web Bot Auth signature directory present (informational)","category":"bot-crawl-policy","group":"P6","layer":"web","keyword":"may","tier":"optional","principle":"P6","status":"n_a","na_reason":"optional-absent","evidence":"https://anc.dev/.well-known/http-message-signatures-directory -> 404 (status 404 not in [200])","result":"Not implemented, optional (https://anc.dev/.well-known/http-message-signatures-directory -> 404 (status 404 not in [200]))"},{"id":"security-txt","label":"/.well-known/security.txt present (RFC 9116)","category":"bot-crawl-policy","group":"P4","layer":"web","keyword":"may","tier":"optional","principle":"P4","status":"pass","evidence":"https://anc.dev/.well-known/security.txt -> 200","result":"Verified (https://anc.dev/.well-known/security.txt -> 200)"},{"id":"ai-catalog","label":"/.well-known/ai-catalog.json published (ARD)","category":"agent-discovery-auth","group":"P8","layer":"web","keyword":"may","tier":"optional","principle":"P8","status":"n_a","na_reason":"optional-absent","evidence":"https://anc.dev/.well-known/ai-catalog.json -> 404 (status 404 not in [200])","result":"Not implemented, optional (https://anc.dev/.well-known/ai-catalog.json -> 404 (status 404 not in [200]))"},{"id":"agent-friendly-404","label":"Unknown paths return HTTP 404 or 410","category":"discoverability","group":"P8","layer":"web","keyword":"should","tier":"recommended","principle":"P8","status":"pass","evidence":"https://anc.dev/anc-web-audit-no-such-page -> 404","result":"Verified (https://anc.dev/anc-web-audit-no-such-page -> 404)"},{"id":"agent-friendly-404-md","label":"404 body is markdown with a recovery link","category":"discoverability","group":"P8","layer":"web","keyword":"should","tier":"recommended","principle":"P8","status":"pass","evidence":"https://anc.dev/anc-web-audit-no-such-page -> 404","result":"Verified (https://anc.dev/anc-web-audit-no-such-page -> 404)"},{"id":"llms-full-txt-scoped","label":"Per-section llms-full.txt files resolve under content subdirectories","category":"content-for-agents","group":"P2","layer":"web","keyword":"may","tier":"optional","principle":"P2","status":"n_a","na_reason":"optional-absent","evidence":"https://anc.dev/.well-known/llms-full.txt -> 404","result":"Not implemented, optional (https://anc.dev/.well-known/llms-full.txt -> 404)"},{"id":"agent-skills","label":"Agent-skills discovery index published","category":"agent-discovery-auth","group":"P8","layer":"web","keyword":"may","tier":"optional","principle":"P8","status":"pass","evidence":"https://anc.dev/.well-known/agent-skills/index.json -> 200","result":"Verified (https://anc.dev/.well-known/agent-skills/index.json -> 200)"},{"id":"llms-txt-scoped","label":"Per-section llms.txt files resolve under content subdirectories","category":"content-for-agents","group":"P2","layer":"web","keyword":"may","tier":"optional","principle":"P2","status":"n_a","na_reason":"optional-absent","evidence":"https://anc.dev/.well-known/llms.txt -> 404","result":"Not implemented, optional (https://anc.dev/.well-known/llms.txt -> 404)"},{"id":"auth-md","label":"Agent auth/registration metadata doc published","category":"agent-discovery-auth","group":"P1","layer":"web","keyword":"may","tier":"optional","principle":"P1","status":"pass","evidence":"https://anc.dev/auth.md -> 200","result":"Verified (https://anc.dev/auth.md -> 200)"},{"id":"a2a-agent-card","label":"A2A Agent Card published for agent-to-agent discovery","category":"agent-discovery-auth","group":"P8","layer":"web","keyword":"may","tier":"optional","principle":"P8","status":"n_a","na_reason":"optional-absent","evidence":"https://anc.dev/.well-known/agent-card.json -> 404 (status 404 not in [200])","result":"Not implemented, optional (https://anc.dev/.well-known/agent-card.json -> 404 (status 404 not in [200]))"}]},"target_url":"https://anc.dev/","score_pct":100,"site_spec_version":"0.5.0","auditor_url":"https://anc.dev/score"}