{"schemaVersion":"1","scan":{"id":"d2182e29-46dc-4a7f-a425-b0a1a0d2900a","domain":"protonvpn.com","region":"us-east","userAgent":"AgentSpeedBot/1.0","viewport":"1280x800","startedAtIso":"2026-08-27T02:51:39.610Z","finishedAtIso":"2026-08-27T02:51:42.773Z","durationMs":3163},"rubric":{"version":"2026.11.0","sha":"fd2d0686690660ae60ecfe9d4e7ac2ac689ef4c935e45b49fae782b9e2587349","gradeBandVersion":"1"},"score":{"composite":74,"grade":"C","components":[{"key":"discoverability","value":50},{"key":"readability","value":85},{"key":"structured_data","value":91},{"key":"actionability","value":73},{"key":"performance","value":80}]},"attestation":{"total":37,"deterministic":26,"heuristic":10,"llmAssisted":1},"checks":[{"key":"actionability.agent_skills","status":"fail","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{"status":404}},{"key":"actionability.commerce_protocols","status":"fail","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{}},{"key":"actionability.web_mcp","status":"fail","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":2,"rawValue":{}},{"key":"auth.cookie_consent_blocks_content","status":"pass","determinism":"heuristic","weight":2,"weightApplied":2,"durationMs":50,"rawValue":{},"heuristicParam":{"label":"detector","value":"consent overlay heuristic"}},{"key":"auth.paywall_or_login_wall_on_landing","status":"pass","determinism":"heuristic","weight":2,"weightApplied":2,"durationMs":29,"rawValue":{"loginForms":0,"sparseContent":false,"hasPaywallText":false,"passwordInputs":0,"loginRedirected":false},"heuristicParam":{"label":"detector","value":"paywall/login-wall heuristic"}},{"key":"coherence.jsonld_name_matches_visible","status":"skip","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":1,"rawValue":{}},{"key":"coherence.jsonld_price_matches_visible","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":2,"rawValue":{"matched":3,"jsonLdPrices":["0.00","29.99","0.00","29.99","0.00","29.99"],"visiblePrices":["$0.00"]}},{"key":"coherence.language_declared_matches_content","status":"pass","determinism":"heuristic","weight":1,"weightApplied":1,"durationMs":3,"rawValue":{"declared":"en","detected":"en"},"heuristicParam":{"label":"detector","value":"stopword/script profile, >=40 words, WARN-only"}},{"key":"content.headings_hierarchy","status":"pass","determinism":"heuristic","weight":1,"weightApplied":1,"durationMs":103,"rawValue":{"skips":0,"total":31,"h1Count":1},"heuristicParam":{"label":"rule","value":"single H1, no skipped levels"}},{"key":"content.js_required_for_primary_content","status":"pass","determinism":"heuristic","weight":2,"weightApplied":2,"durationMs":0,"rawValue":{"staticTextChars":12614,"measuredStatically":true},"heuristicParam":{"label":"detector","value":"no-JS visibility heuristic"}},{"key":"content.text_ratio","status":"fail","determinism":"heuristic","weight":1,"weightApplied":1,"durationMs":3,"rawValue":{"ratio":0.03039458112437821,"htmlBytes":415732,"textBytes":12636,"styleBytes":9808,"markupBytes":337932,"scriptBytes":55356},"heuristicParam":{"label":"min text ratio","value":"15%"}},{"key":"discoverability.api_catalog","status":"fail","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{"status":404}},{"key":"discoverability.link_headers","status":"fail","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{}},{"key":"discoverability.mcp_server_card","status":"fail","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{"status":404}},{"key":"discoverability.oauth_authorization_server","status":"fail","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":1,"rawValue":{"status":404}},{"key":"discoverability.oauth_protected_resource","status":"fail","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{"status":404}},{"key":"discoverability.web_bot_auth","status":"fail","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{"status":404}},{"key":"journey.primary_probe","status":"pass","determinism":"llm_assisted","weight":2,"weightApplied":2,"durationMs":938,"rawValue":{"priceOrCta":"Get Proton VPN","primaryOffering":"VPN service"}},{"key":"llms_txt.present","status":"pass","determinism":"deterministic","weight":2,"weightApplied":0,"durationMs":0,"rawValue":{"bytes":125033,"hasH1":false,"hasLink":false}},{"key":"markup.canonical","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":60,"rawValue":{"declared":"https://protonvpn.com","resolved":"https://protonvpn.com/","matchesSelf":true}},{"key":"markup.language","status":"pass","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{"lang":"en","alternates":28}},{"key":"markup.meta_description","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":26,"rawValue":{}},{"key":"markup.title","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":98,"rawValue":{}},{"key":"operability.filters_addressable","status":"skip","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":43,"rawValue":{}},{"key":"operability.primary_action_in_dom","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":55,"rawValue":{"examples":["<button> announcing \"download\"","<a> announcing \"download\"","<a> announcing \"download\""],"actionableCount":3}},{"key":"performance.full_render_ms","status":"skip","determinism":"heuristic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{},"heuristicParam":{"label":"threshold","value":"4s"}},{"key":"performance.payload_kb","status":"pass","determinism":"heuristic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{},"heuristicParam":{"label":"threshold","value":"3MB"}},{"key":"performance.ttfb_ms","status":"warn","determinism":"heuristic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{"ttfbMs":712},"heuristicParam":{"label":"threshold","value":"800ms"}},{"key":"reachability.status","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":0,"rawValue":{"code":200,"redirects":0}},{"key":"readability.markdown_negotiation","status":"fail","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{"status":200}},{"key":"robots_txt.allows_known_agents","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":2,"rawValue":{"blocked":[],"declaredMarkets":["BR","CN","ES","KR","RU","TW"],"regionalBlocked":[],"trainingBlocked":[]}},{"key":"robots_txt.content_signals","status":"fail","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{}},{"key":"robots_txt.present","status":"pass","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{}},{"key":"sitemap.present","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":0,"rawValue":{}},{"key":"structured_data.jsonld_present","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":0,"rawValue":{"count":1}},{"key":"structured_data.type_coverage","status":"warn","determinism":"heuristic","weight":1,"weightApplied":1,"durationMs":1,"rawValue":{"missing":["Product"],"declared":["WebPage","Corporation","PostalAddress","Person","WebSite","SoftwareApplication","AggregateRating","AggregateOffer","Offer","UnitPriceSpecification","QuantitativeValue","FAQPage","Question","Answer"],"expected":["Product","FAQPage"]},"heuristicParam":{"label":"match","value":"type-to-purpose inference"}},{"key":"structured_data.validates","status":"warn","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":1,"rawValue":{"warns":1,"errors":0,"skipped":2,"firstWarn":{"path":"$.@graph[2].potentialAction","message":"WebSite recommends \"potentialAction\" (improves agent comprehension).","severity":"warn"}}}],"findings":[{"checkKey":"actionability.agent_skills","severity":"medium","title":"Failing: actionability.agent_skills","remediationMd":"No Agent Skills manifest at /.well-known/agent-skills.json. Enumerate the tasks agents can perform (search, add-to-cart, contact-support) so they pick the right one without scraping.","docUrl":null},{"checkKey":"actionability.commerce_protocols","severity":"medium","title":"Failing: actionability.commerce_protocols","remediationMd":"No agentic-commerce discovery manifest (x402 at /.well-known/x402.json, UCP at /.well-known/ucp, or ACP at /.well-known/acp.json). Agents that buy pre-flight these before attempting a transaction; publishing the one for your commerce protocol is how they learn you accept agent-initiated purchases.","docUrl":null},{"checkKey":"actionability.web_mcp","severity":"medium","title":"Failing: actionability.web_mcp","remediationMd":"No WebMCP detected. On pages with first-class actions (cart, support, account), embed a WebMCP server so on-page agents invoke tools directly.","docUrl":null},{"checkKey":"content.text_ratio","severity":"medium","title":"Failing: content.text_ratio","remediationMd":"Visible text is 3.0% of HTML weight (12636/415732 bytes). 13% of the document is inline script, 81% is markup.","docUrl":null},{"checkKey":"discoverability.api_catalog","severity":"medium","title":"Failing: discoverability.api_catalog","remediationMd":"No /.well-known/api-catalog (RFC 9727) and no /openapi.json|yaml. Publish one so agents that integrate with APIs can discover your endpoints.","docUrl":null},{"checkKey":"discoverability.link_headers","severity":"medium","title":"Failing: discoverability.link_headers","remediationMd":"No HTTP Link: response headers. Emit canonical/alternate/describedby relations so HEAD-only or stream-rendering agents get them without parsing HTML.","docUrl":null},{"checkKey":"discoverability.mcp_server_card","severity":"medium","title":"Failing: discoverability.mcp_server_card","remediationMd":"No valid MCP Server Card at /.well-known/mcp/server-card.json. Publish one so agents can discover your tools without HTML scraping.","docUrl":null},{"checkKey":"discoverability.oauth_authorization_server","severity":"medium","title":"Failing: discoverability.oauth_authorization_server","remediationMd":"No RFC 8414 metadata at /.well-known/oauth-authorization-server. Agents that act on behalf of users need this to discover your authorization endpoints.","docUrl":null},{"checkKey":"discoverability.oauth_protected_resource","severity":"medium","title":"Failing: discoverability.oauth_protected_resource","remediationMd":"No RFC 9728 metadata at /.well-known/oauth-protected-resource. Publish it so agents can discover required scopes without hand-coded credentials.","docUrl":null},{"checkKey":"discoverability.web_bot_auth","severity":"medium","title":"Failing: discoverability.web_bot_auth","remediationMd":"No Web Bot Auth JWKS at /.well-known/http-message-signatures-directory.json. Publish one to allow trusted agents while keeping a default-deny posture for the rest.","docUrl":null},{"checkKey":"performance.ttfb_ms","severity":"medium","title":"Warning: performance.ttfb_ms","remediationMd":"TTFB 712ms. Acceptable.","docUrl":null},{"checkKey":"readability.markdown_negotiation","severity":"medium","title":"Failing: readability.markdown_negotiation","remediationMd":"Accept: text/markdown returns HTML, not markdown. Serve a markdown variant of primary content when requested; agents summarize and cite it more reliably.","docUrl":null},{"checkKey":"robots_txt.content_signals","severity":"medium","title":"Failing: robots_txt.content_signals","remediationMd":"No Content-Signal directives. Add e.g. `Content-Signal: ai-train=no, ai-summarize=yes` to declare granular AI usage policy beyond binary allow/disallow.","docUrl":null},{"checkKey":"structured_data.type_coverage","severity":"medium","title":"Warning: structured_data.type_coverage","remediationMd":"Page looks like Product / FAQPage; missing JSON-LD type(s): Product.","docUrl":null},{"checkKey":"structured_data.validates","severity":"medium","title":"Warning: structured_data.validates","remediationMd":"1 recommended-field warning(s). First: WebSite recommends \"potentialAction\" (improves agent comprehension). 2 block(s) skipped: type outside the set we check.","docUrl":null}],"citation":"protonvpn.com · r2026.11.0 · scan d2182e29 · 2026-08-27T02:51Z"}