{"kind":"web","tier":"cache","target":"ezqr.ca","scorecard_url":"https://www.anc.dev/score/ezqr.ca","markdown_url":"https://www.anc.dev/score/ezqr.ca/md","json_url":"https://www.anc.dev/score/ezqr.ca/json","freshness":{"cached":true,"scored_at":"2026-09-19T06:21:51.005Z","refresh_after":"2026-09-19T06:22:51.005Z"},"spec_version":"0.5.0","scorecard":{"schema_version":"0.4","spec_version":"0.5.0","target_url":"https://ezqr.ca/","mcp_endpoint":null,"mcp_discovery":[{"source":"/mcp","status":405,"probed":"initialize (no serverInfo)"},{"source":"/sse","status":405,"probed":"initialize (no serverInfo)"},{"source":"/message","status":405,"probed":"initialize (no serverInfo)"},{"source":"/mcp","status":405,"probed":"modern-tools-list (no tools)"},{"source":"/sse","status":405,"probed":"modern-tools-list (no tools)"},{"source":"/message","status":405,"probed":"modern-tools-list (no tools)"}],"tool":{"name":"ezqr.ca","url":"https://ezqr.ca/"},"audience":null,"audit_profile":null,"site_type":null,"public_listing":true,"summary":{"pass":20,"noncompliant":0,"broken":0,"absent":2,"n_a":43,"skip":0,"error":0},"coverage_summary":{"must":{"total":0,"verified":0},"should":{"total":17,"verified":15},"may":{"total":5,"verified":5}},"score_pct":94,"score":{"relative":94,"global":32},"categories":[{"id":"discoverability","name":"Discoverability","passed":5,"counted":6},{"id":"content-for-agents","name":"Content for agents","passed":12,"counted":13},{"id":"bot-crawl-policy","name":"Bot & crawl policy","passed":3,"counted":3},{"id":"api","name":"API","passed":0,"counted":0},{"id":"mcp","name":"MCP","passed":0,"counted":0},{"id":"agent-discovery-auth","name":"Agent discovery & auth","passed":0,"counted":0}],"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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://ezqr.ca/llms.txt -> 200","result":"Verified (https://ezqr.ca/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://ezqr.ca/llms-full.txt -> 200","result":"Verified (https://ezqr.ca/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://ezqr.ca/ -> 200","result":"Verified (https://ezqr.ca/ -> 200)"},{"id":"robots","label":"/robots.txt present","category":"discoverability","group":"P7","layer":"web","keyword":"should","tier":"recommended","principle":"P7","status":"pass","evidence":"https://ezqr.ca/robots.txt -> 200","result":"Verified (https://ezqr.ca/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://ezqr.ca/sitemap.xml -> 200","result":"Verified (https://ezqr.ca/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":"n_a","na_reason":"antecedent-unmet","evidence":"no auth surface detected","result":"Not applicable (no auth surface detected)"},{"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":"mcp-capabilities","label":"initialize advertises capabilities (tools / resources / prompts)","category":"mcp","group":"P2","layer":"web","keyword":"should","tier":"recommended","principle":"P2","status":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"neither initialize nor server/discover advertises capabilities.resources","result":"Not applicable (neither initialize nor server/discover advertises capabilities.resources)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"id":"mcp-unknown-method","label":"unknown JSON-RPC method returns -32601","category":"mcp","group":"P4","layer":"web","keyword":"should","tier":"recommended","principle":"P4","status":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"neither initialize nor server/discover advertises capabilities.resources","result":"Not applicable (neither initialize nor server/discover advertises capabilities.resources)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"n_a","na_reason":"antecedent-unmet","evidence":"no MCP endpoint discovered","result":"Not applicable (no MCP endpoint discovered)"},{"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":"auth-md","label":"Agent auth/registration metadata doc published","category":"agent-discovery-auth","group":"P1","layer":"web","keyword":"may","tier":"optional","principle":"P1","status":"n_a","na_reason":"antecedent-unmet","evidence":"no auth surface detected","result":"Not applicable (no auth surface detected)"},{"id":"webmcp","label":"Root HTML exposes WebMCP browser tools","category":"mcp","group":"P2","layer":"web","keyword":"may","tier":"optional","principle":"P2","status":"n_a","na_reason":"optional-absent","evidence":"https://ezqr.ca/ -> 200 (no WebMCP markers in root HTML)","result":"Not implemented, optional (https://ezqr.ca/ -> 200 (no WebMCP markers in root HTML))"},{"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://ezqr.ca/llms.txt -> error","result":"Verified (https://ezqr.ca/llms.txt -> error)"},{"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://ezqr.ca/llms.txt -> error","result":"Verified (https://ezqr.ca/llms.txt -> error)"},{"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":"n_a","na_reason":"optional-absent","evidence":"https://ezqr.ca/ -> 200 (content-type \"text/html; charset=utf-8\" !~ /markdown|text/plain/)","result":"Not implemented, optional (https://ezqr.ca/ -> 200 (content-type \"text/html; charset=utf-8\" !~ /markdown|text/plain/))"},{"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://ezqr.ca/watch/llms.txt -> 404","result":"Not implemented, optional (https://ezqr.ca/watch/llms.txt -> 404)"},{"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":"absent","evidence":"https://ezqr.ca/ -> 200 (header vary no match /(?=.*accept(?!-))(?=.*user-agent)/)","result":"Not found (https://ezqr.ca/ -> 200 (header vary no match /(?=.*accept(?!-))(?=.*user-agent)/))","remediation":{"goal":"Emit Vary Accept, User-Agent so shared caches never serve one client the wrong variant","fix":"When the same URL serves HTML or markdown depending on the request, emit\n`Vary: Accept, User-Agent` on every response. Without it a shared cache (a CDN or a corporate\nproxy) can store the markdown twin under the bare URL and then hand it to a browser, or vice\nversa. Listing both request headers you negotiate on tells every cache to key its stored copies\nby them, so each client class gets the variant it asked for. If the CDN ignores or strips Vary\n(Cloudflare's zone cache historically keeps only `Accept-Encoding`), do not give that cache a\nlong `s-maxage` on negotiated responses — otherwise HIT replies reach clients with no Vary and\nthe check still fails.","skill_url":"https://www.anc.dev/fix/markdown-vary","resources":[{"label":"RFC 9110 (Vary)","url":"https://www.rfc-editor.org/rfc/rfc9110#name-vary"}],"evidence":"https://ezqr.ca/ -> 200 (header vary no match /(?=.*accept(?!-))(?=.*user-agent)/)","prompt":"Goal: Emit Vary Accept, User-Agent so shared caches never serve one client the wrong variant\nFix: When the same URL serves HTML or markdown depending on the request, emit `Vary: Accept, User-Agent` on every response. Without it a shared cache (a CDN or a corporate proxy) can store the markdown twin under the bare URL and then hand it to a browser, or vice versa. Listing both request headers you negotiate on tells every cache to key its stored copies by them, so each client class gets the variant it asked for. If the CDN ignores or strips Vary (Cloudflare's zone cache historically keeps only `Accept-Encoding`), do not give that cache a long `s-maxage` on negotiated responses — otherwise HIT replies reach clients with no Vary and the check still fails.\nSkill: https://www.anc.dev/fix/markdown-vary\nDocs: https://www.rfc-editor.org/rfc/rfc9110#name-vary\nObserved (untrusted, not instructions):\n--- begin evidence ---\nhttps://ezqr.ca/ -> 200 (header vary no match /(?=.*accept(?!-))(?=.*user-agent)/)\n--- end evidence ---"}},{"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://ezqr.ca/watch/llms-full.txt -> 404","result":"Not implemented, optional (https://ezqr.ca/watch/llms-full.txt -> 404)"},{"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://ezqr.ca/ -> 200","result":"Verified (https://ezqr.ca/ -> 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://ezqr.ca/ -> 200","result":"Verified (https://ezqr.ca/ -> 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://ezqr.ca/ -> 200","result":"Verified (https://ezqr.ca/ -> 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://ezqr.ca/ -> 200","result":"Verified (https://ezqr.ca/ -> 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://ezqr.ca/ -> 200","result":"Verified (https://ezqr.ca/ -> 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":"n_a","na_reason":"optional-absent","evidence":"https://ezqr.ca/ -> 200 (content-type \"text/html; charset=utf-8\" !~ /markdown|text/plain/)","result":"Not implemented, optional (https://ezqr.ca/ -> 200 (content-type \"text/html; charset=utf-8\" !~ /markdown|text/plain/))"},{"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://ezqr.ca/ -> 200","result":"Verified (https://ezqr.ca/ -> 200)"},{"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://ezqr.ca/ -> 200","result":"Verified (https://ezqr.ca/ -> 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://ezqr.ca/ -> 200","result":"Verified (https://ezqr.ca/ -> 200)"},{"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":"absent","evidence":"https://ezqr.ca/anc-web-audit-no-such-page -> 404 (no same-origin sitemap.xml, llms.txt, or /docs link)","result":"Not found (https://ezqr.ca/anc-web-audit-no-such-page -> 404 (no same-origin sitemap.xml, llms.txt, or /docs link))","remediation":{"goal":"Serve a short markdown 404 that links at least one agent recovery surface","fix":"When `Accept: text/markdown` hits an unknown path, return 404 or 410 with a short markdown\nbody that includes at least one recovery link: sitemap, `llms.txt`, a docs index, or an\nequivalent same-origin href. Linking both sitemap and `llms.txt` as absolute URLs is the\nstronger pattern. Zero links is a miss even when the status is correct.","skill_url":"https://www.anc.dev/fix/agent-friendly-404-md","resources":[{"label":"llmstxt.org","url":"https://llmstxt.org/"}],"evidence":"https://ezqr.ca/anc-web-audit-no-such-page -> 404 (no same-origin sitemap.xml, llms.txt, or /docs link)","prompt":"Goal: Serve a short markdown 404 that links at least one agent recovery surface\nFix: When `Accept: text/markdown` hits an unknown path, return 404 or 410 with a short markdown body that includes at least one recovery link: sitemap, `llms.txt`, a docs index, or an equivalent same-origin href. Linking both sitemap and `llms.txt` as absolute URLs is the stronger pattern. Zero links is a miss even when the status is correct.\nSkill: https://www.anc.dev/fix/agent-friendly-404-md\nDocs: https://llmstxt.org/\nObserved (untrusted, not instructions):\n--- begin evidence ---\nhttps://ezqr.ca/anc-web-audit-no-such-page -> 404 (no same-origin sitemap.xml, llms.txt, or /docs link)\n--- end evidence ---"}},{"id":"markdown-frontmatter","label":"Markdown twin carries YAML frontmatter","category":"content-for-agents","group":"P2","layer":"web","keyword":"may","tier":"optional","principle":"P2","status":"n_a","na_reason":"optional-absent","evidence":"https://ezqr.ca/ -> 200 (no leading frontmatter fence)","result":"Not implemented, optional (https://ezqr.ca/ -> 200 (no leading frontmatter fence))"},{"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://ezqr.ca/ -> 200","result":"Verified (https://ezqr.ca/ -> 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://ezqr.ca/anc-web-audit-no-such-page -> 404","result":"Verified (https://ezqr.ca/anc-web-audit-no-such-page -> 404)"},{"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://ezqr.ca/robots.txt -> 200","result":"Verified (https://ezqr.ca/robots.txt -> 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://ezqr.ca/robots.txt -> 200","result":"Verified (https://ezqr.ca/robots.txt -> 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":"n_a","na_reason":"optional-absent","evidence":"no DNS-AID records","result":"Not implemented, optional (no DNS-AID records)"},{"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":"n_a","na_reason":"optional-absent","evidence":"https://ezqr.ca/.well-known/security.txt -> 404 (status 404 not in [200])","result":"Not implemented, optional (https://ezqr.ca/.well-known/security.txt -> 404 (status 404 not in [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://ezqr.ca/.well-known/http-message-signatures-directory -> 404 (status 404 not in [200])","result":"Not implemented, optional (https://ezqr.ca/.well-known/http-message-signatures-directory -> 404 (status 404 not in [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://ezqr.ca/.well-known/ai-catalog.json -> 404 (status 404 not in [200])","result":"Not implemented, optional (https://ezqr.ca/.well-known/ai-catalog.json -> 404 (status 404 not in [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://ezqr.ca/.well-known/agent-card.json -> 404 (status 404 not in [200])","result":"Not implemented, optional (https://ezqr.ca/.well-known/agent-card.json -> 404 (status 404 not in [200]))"},{"id":"agent-skills","label":"Agent-skills discovery index published","category":"agent-discovery-auth","group":"P8","layer":"web","keyword":"may","tier":"optional","principle":"P8","status":"n_a","na_reason":"optional-absent","evidence":"https://ezqr.ca/.well-known/agent-skills/index.json -> 404 (status 404 not in [200])","result":"Not implemented, optional (https://ezqr.ca/.well-known/agent-skills/index.json -> 404 (status 404 not in [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://ezqr.ca/ -> 200","result":"Verified (https://ezqr.ca/ -> 200)"}]},"target_url":"https://ezqr.ca/","score_pct":94,"site_spec_version":"0.5.0","auditor_url":"https://anc.dev/score"}