{"schemaVersion":"1","scan":{"id":"5cec2255-a377-4136-b681-d9f8ed9baa15","domain":"vodafone.es","region":"us-east","userAgent":"AgentSpeedBot/1.0","viewport":"1280x800","startedAtIso":"2026-08-25T21:43:12.036Z","finishedAtIso":"2026-08-25T21:43:17.572Z","durationMs":5536},"rubric":{"version":"2026.11.0","sha":"fd2d0686690660ae60ecfe9d4e7ac2ac689ef4c935e45b49fae782b9e2587349","gradeBandVersion":"1"},"score":{"composite":67,"grade":"D","components":[{"key":"discoverability","value":54},{"key":"readability","value":86},{"key":"structured_data","value":50},{"key":"actionability","value":67},{"key":"performance","value":70}]},"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":1,"rawValue":{}},{"key":"auth.cookie_consent_blocks_content","status":"pass","determinism":"heuristic","weight":2,"weightApplied":2,"durationMs":71,"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":18,"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":"pass","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":1,"rawValue":{"matched":3,"jsonLdNames":["Vodafone España","Vodafone España - Internet, Móvil y TV | WEB OFICIAL®","Línea Móvil 30GB","Fibra 600 + 2x60GB + Netflix","Fibra 600Mb y línea móvil 60GB","Fibra 600Mb + 2xMóvil 160GB"]}},{"key":"coherence.jsonld_price_matches_visible","status":"fail","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":2,"rawValue":{"jsonLdPrices":["20.00","59.99","11.00","45.00","0.00"],"visiblePrices":[]}},{"key":"coherence.language_declared_matches_content","status":"pass","determinism":"heuristic","weight":1,"weightApplied":1,"durationMs":5,"rawValue":{"declared":"es","detected":"es"},"heuristicParam":{"label":"detector","value":"stopword/script profile, >=40 words, WARN-only"}},{"key":"content.headings_hierarchy","status":"pass","determinism":"heuristic","weight":1,"weightApplied":1,"durationMs":33,"rawValue":{"skips":0,"total":5,"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":8034,"measuredStatically":true},"heuristicParam":{"label":"detector","value":"no-JS visibility heuristic"}},{"key":"content.text_ratio","status":"fail","determinism":"heuristic","weight":1,"weightApplied":1,"durationMs":2,"rawValue":{"ratio":0.04661799332576694,"htmlBytes":177099,"textBytes":8256,"styleBytes":3148,"markupBytes":153901,"scriptBytes":11794},"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":"warn","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":0,"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":1265,"rawValue":{"priceOrCta":"From 39€/mes","primaryOffering":"Internet, mobile, and TV services"}},{"key":"llms_txt.present","status":"pass","determinism":"deterministic","weight":2,"weightApplied":0,"durationMs":0,"rawValue":{"bytes":16536,"hasH1":false,"hasLink":false}},{"key":"markup.canonical","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":31,"rawValue":{"declared":"https://www.vodafone.es/c/particulares/es/","resolved":"https://www.vodafone.es/c/particulares/es/","matchesSelf":true}},{"key":"markup.language","status":"pass","determinism":"deterministic","weight":1,"weightApplied":1,"durationMs":0,"rawValue":{"lang":"es","alternates":0}},{"key":"markup.meta_description","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":101,"rawValue":{}},{"key":"markup.title","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":85,"rawValue":{}},{"key":"operability.filters_addressable","status":"skip","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":33,"rawValue":{}},{"key":"operability.primary_action_in_dom","status":"skip","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":84,"rawValue":{}},{"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":1461},"heuristicParam":{"label":"threshold","value":"800ms"}},{"key":"reachability.status","status":"pass","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":0,"rawValue":{"code":200,"redirects":1}},{"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":1,"rawValue":{"blocked":[],"declaredMarkets":[],"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":7}},{"key":"structured_data.type_coverage","status":"fail","determinism":"heuristic","weight":1,"weightApplied":1,"durationMs":1,"rawValue":{"missing":["Article|BlogPosting|NewsArticle"],"declared":["WebSite","SearchAction","BreadcrumbList","ListItem","Organization","PostalAddress","ContactPoint","Product","Brand","ImageObject","AggregateOffer","ItemList"],"expected":["Article|BlogPosting|NewsArticle"]},"heuristicParam":{"label":"match","value":"type-to-purpose inference"}},{"key":"structured_data.validates","status":"fail","determinism":"deterministic","weight":2,"weightApplied":2,"durationMs":1,"rawValue":{"warns":4,"errors":1,"firstError":{"path":"$.name","message":"WebSite requires \"name\".","severity":"error"}}}],"findings":[{"checkKey":"coherence.jsonld_price_matches_visible","severity":"critical","title":"Failing: coherence.jsonld_price_matches_visible","remediationMd":"JSON-LD declares 5 price(s) (20.00, 59.99, 11.00), but the served HTML shows no price at all. An agent reading the page sees a price humans never see, or the visible price only renders via JavaScript. Either way the two channels disagree.","docUrl":null},{"checkKey":"structured_data.type_coverage","severity":"critical","title":"Failing: structured_data.type_coverage","remediationMd":"Page looks like Article|BlogPosting|NewsArticle; missing JSON-LD type(s): Article|BlogPosting|NewsArticle.","docUrl":null},{"checkKey":"structured_data.validates","severity":"critical","title":"Failing: structured_data.validates","remediationMd":"1 required-field error(s). First: WebSite requires \"name\".","docUrl":null},{"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 4.7% of HTML weight (8256/177099 bytes). 7% of the document is inline script, 87% 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":"Warning: discoverability.link_headers","remediationMd":"A Link: header is present but carries none of canonical/alternate/describedby, the relations agents consume.","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 1461ms. Slow. Agents time out aggressively.","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}],"citation":"vodafone.es · r2026.11.0 · scan 5cec2255 · 2026-08-25T21:43Z"}