{"scan_id": 521, "url": "https://www.agentready.market/", "vertical": "general", "scanned_at": "2026-09-21T21:18:08.759409+00:00", "score": 88, "grade": "A", "report_url": "https://www.agentready.market/r/521", "result": {"url": "https://agentready.market", "meta": {"psp": [], "notes": ["No product page detected from the homepage."], "phase": "1 (pillars 1-4, weighted matrix)", "origin": "https://agentready.market", "cloudflare": true, "investment": {"ads": [], "apps": [], "score": 0, "platform": "Shopify", "qualified": false}, "home_status": 200, "product_url": "", "shopify_feed": false, "checkout_door": {"ua": "ChatGPT-User", "cart": "absent", "blocked": false, "checkout": "absent"}, "robots_present": true}, "error": "", "grade": "A", "score": 88, "capped": false, "pillars": [{"id": "access", "pct": 100, "icon": "\ud83d\udd13", "name": "Access & crawlability", "checks": [{"id": "access.ai_crawlers", "fix": "", "gap": 0.0, "label": "robots.txt allows agent crawlers", "detail": "robots.txt allows GPTBot, ClaudeBot, PerplexityBot and Google-Extended.", "earned": 16.0, "effort": "easy", "pillar": "access", "status": "pass", "weight": 16.0}, {"id": "access.cloaking", "fix": "", "gap": 0.0, "label": "No blocking / cloaking of AI bots", "detail": "AI bots get the same access and content as a normal visitor.", "earned": 8.0, "effort": "medium", "pillar": "access", "status": "pass", "weight": 8.0}, {"id": "access.latency", "fix": "", "gap": 0.0, "label": "Fast enough response for agents", "detail": "Fast response (507 ms on the homepage) \u2014 agents won't time out.", "earned": 4.0, "effort": "medium", "pillar": "access", "status": "pass", "weight": 4.0}, {"id": "access.llms_txt", "fix": "", "gap": 0.0, "label": "llms.txt present", "detail": "/llms.txt present \u2014 points agents to your key pages.", "earned": 4.0, "effort": "easy", "pillar": "access", "status": "pass", "weight": 4.0}, {"id": "access.agents_md", "fix": "", "gap": 0.0, "label": "agents.md present (preview)", "detail": "/agents.md present \u2014 a working guide agents can follow on your site.", "earned": 0.0, "effort": "easy", "pillar": "access", "status": "pass", "weight": 0.0}, {"id": "access.sitemap", "fix": "", "gap": 0.0, "label": "Sitemap available", "detail": "Sitemap found via robots.txt.", "earned": 4.0, "effort": "easy", "pillar": "access", "status": "pass", "weight": 4.0}, {"id": "access.no_js", "fix": "", "gap": 0.0, "label": "Content accessible without JS rendering", "detail": "Content present in raw HTML (6697 visible characters).", "earned": 4.0, "effort": "hard", "pillar": "access", "status": "pass", "weight": 4.0}, {"id": "access.agent_pathways", "fix": "Link shipping, returns, contact and help/FAQ pages from the homepage (nav or footer). Agents answer pre-purchase questions by following links \u2014 a page with no link-path from the homepage does not exist for them.", "gap": 0.0, "label": "Shipping/returns/contact linked from the homepage (preview)", "detail": "No homepage link-path found for: shipping, help (found: contact, returns).", "earned": 0.0, "effort": "easy", "pillar": "access", "status": "partial", "weight": 0.0}], "earned": 40.0, "weight": 40.0}, {"id": "structured_data", "pct": 91, "icon": "\ud83c\udff7\ufe0f", "name": "Structured data", "checks": [{"id": "sd.product", "fix": "", "gap": 0.0, "label": "Product JSON-LD present", "detail": "Schema.org Product found in JSON-LD (homepage).", "earned": 12.0, "effort": "medium", "pillar": "structured_data", "status": "pass", "weight": 12.0}, {"id": "sd.price", "fix": "", "gap": 0.0, "label": "Structured price + currency", "detail": "price=49 EUR.", "earned": 8.0, "effort": "easy", "pillar": "structured_data", "status": "pass", "weight": 8.0}, {"id": "sd.availability", "fix": "", "gap": 0.0, "label": "Structured availability", "detail": "availability=https://schema.org/InStock.", "earned": 5.0, "effort": "easy", "pillar": "structured_data", "status": "pass", "weight": 5.0}, {"id": "sd.brand", "fix": "", "gap": 0.0, "label": "Structured brand", "detail": "brand=AgentReady.", "earned": 3.0, "effort": "easy", "pillar": "structured_data", "status": "pass", "weight": 3.0}, {"id": "sd.identifier", "fix": "", "gap": 0.0, "label": "Product identifier (SKU / GTIN)", "detail": "SKU/GTIN/MPN present \u2014 reliable product resolution.", "earned": 4.0, "effort": "medium", "pillar": "structured_data", "status": "pass", "weight": 4.0}, {"id": "sd.rating", "fix": "Expose aggregateRating (ratingValue + reviewCount) in JSON-LD.", "gap": 3.0, "label": "Aggregated reviews (aggregateRating)", "detail": "No aggregateRating \u2014 the agent can't compare your reputation.", "earned": 0.0, "effort": "medium", "pillar": "structured_data", "status": "fail", "weight": 3.0}], "earned": 32.0, "weight": 35.0}, {"id": "catalog", "pct": 72, "icon": "\ud83d\udce6", "name": "Catalog & attributes", "checks": [{"id": "cat.variants", "fix": "", "gap": 0.0, "label": "Structured variants", "detail": "Variants exposed as data (2 offers).", "earned": 10.0, "effort": "medium", "pillar": "catalog", "status": "pass", "weight": 10.0}, {"id": "cat.attributes", "fix": "", "gap": 0.0, "label": "Attributes as fields (not prose)", "detail": "Structured attributes detected: category, additionalProperty.", "earned": 8.0, "effort": "medium", "pillar": "catalog", "status": "pass", "weight": 8.0}, {"id": "cat.feed", "fix": "Publish a product feed (Shopify products.json, Merchant Center feed) and OpenGraph product tags.", "gap": 7.0, "label": "Product feed / catalog signals", "detail": "No machine-readable product feed nor OpenGraph product tags.", "earned": 0.0, "effort": "medium", "pillar": "catalog", "status": "fail", "weight": 7.0}], "earned": 18.0, "weight": 25.0}, {"id": "rails", "pct": 73, "icon": "\ud83d\udee4\ufe0f", "name": "Transaction rails & agent access", "checks": [{"id": "proto.ucp_mcp", "fix": "On Shopify the UCP rail ships platform-side: 1) confirm your store is enrolled in Shopify's agentic checkout (Catalog) programme; 2) open https://yourstore.com/api/ucp/mcp \u2014 any answer but 404 (200, 401 or 405) means the endpoint is live. On any other platform, implement the open UCP spec (ucp.dev): a Catalog server exposing search_catalog, lookup_catalog and get_product plus a Checkout server, served over MCP at /api/ucp/mcp (the path agents probe \u2014 Shopify made it the de-facto convention); payment authorization plugs in via UCP's AP2 mandates extension. Then re-scan: this check passes as soon as /api/ucp/mcp answers.", "gap": 4.0, "label": "Shopify/UCP agent endpoint (/api/ucp/mcp)", "detail": "No UCP MCP endpoint detected (HTTP 404) \u2014 agents on the UCP rail (Shopify catalog/checkout) can't transact here.", "earned": 0.0, "effort": "hard", "pillar": "rails", "status": "fail", "weight": 4.0}, {"id": "proto.a2a_card", "fix": "", "gap": 0.0, "label": "A2A Agent Card (/.well-known/agent-card.json)", "detail": "Agent Card found at /.well-known/agent-card.json \u2014 external agents can discover and call your agent.", "earned": 3.0, "effort": "easy", "pillar": "rails", "status": "pass", "weight": 3.0}, {"id": "proto.ard_catalog", "fix": "", "gap": 0.0, "label": "ARD AI Catalog (/.well-known/ai-catalog.json)", "detail": "An AI Catalog is published \u2014 agents using ARD registries (GitHub Agent Finder and successors) can discover what this site offers before invoking it. Almost no site on the web serves this yet: a genuine first-mover signal.", "earned": 3.0, "effort": "easy", "pillar": "rails", "status": "pass", "weight": 3.0}, {"id": "access.machine_entry", "fix": "", "gap": 0.0, "label": "Machine entry points advertised at first contact", "detail": "The homepage signposts machine resources at first contact (Link header, agent-card.json, ai-catalog.json, feed) \u2014 an agent fetching the root is pointed to them instead of having to guess a path or give up.", "earned": 3.0, "effort": "easy", "pillar": "rails", "status": "pass", "weight": 3.0}, {"id": "p6.returns_shipping", "fix": "", "gap": 0.0, "label": "Returns & shipping in offers (P6 preview)", "detail": "Offers expose machine-readable return policy and shipping details \u2014 an agent can quote the buyer the full, true cost.", "earned": 2.0, "effort": "medium", "pillar": "rails", "status": "pass", "weight": 2.0}, {"id": "act.checkout", "fix": "", "gap": 0.0, "label": "Add-to-cart action detectable", "detail": "No product page reachable \u2014 the buy action can't be assessed.", "earned": 0.0, "effort": "hard", "pillar": "rails", "status": "na", "weight": 0.0}], "earned": 11.0, "weight": 15.0}], "roadmap": {"gain": 12, "steps": [{"n": 1, "how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No machine-readable product feed nor OpenGraph product tags.", "title": "Product feed / catalog signals", "effort": "medium", "impact": 7.0, "pillar": "Catalog & attributes", "check_id": "cat.feed", "cumulative": 100}, {"n": 2, "how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No aggregateRating \u2014 the agent can't compare your reputation.", "title": "Aggregated reviews (aggregateRating)", "effort": "medium", "impact": 3.0, "pillar": "Structured data", "check_id": "sd.rating", "cumulative": 100}, {"n": 3, "how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No UCP MCP endpoint detected (HTTP 404) \u2014 agents on the UCP rail (Shopify catalog/checkout) can't transact here.", "title": "Shopify/UCP agent endpoint (/api/ucp/mcp)", "effort": "hard", "impact": 4.0, "pillar": "Transaction rails & agent access", "check_id": "proto.ucp_mcp", "cumulative": 100}, {"n": 4, "how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No homepage link-path found for: shipping, help (found: contact, returns).", "title": "Shipping/returns/contact linked from the homepage (preview)", "effort": "easy", "impact": 0.0, "pillar": "Access & crawlability", "check_id": "access.agent_pathways", "cumulative": 100}], "capped": false, "current": 88, "grade_up": false, "projected": 100, "cap_reason": "", "target_grade": "A", "current_grade": "A"}, "headline": "Agent-ready. An AI agent can find, understand and buy from you.", "artifacts": {"jsonld": "<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\",\n  \"brand\": \"\u2022\u2022\u2022\u2022\u2022\u2022\",\n  \"offers\": { \"price\": \"\u2022\u2022\u2022\u2022\", \"availability\": \"\u2022\u2022\u2022\u2022\u2022\u2022\" }\n}\n</script>", "llms_txt": "# Agentready\n\n> Can an AI agent buy on your store? Free /100 score + your priority fixes.\n\n## Policies\n- Shipping: <add your delivery times and zones>\n- Returns: <add your return policy>\n\n## Sitemap\n- https://agentready.market/sitemap.xml", "available": true, "agent_card": "\u2022\u2022\u2022\u2022\u2022\u2022", "ai_catalog": "\u2022\u2022\u2022\u2022\u2022\u2022", "robots_txt": "# AI agent access \u2014 generated by AgentReady (agentready.market)\n# Append to your EXISTING robots.txt; keep the rules you already have.\n# The agent-readiness score reads: GPTBot, ClaudeBot, PerplexityBot, Google-Extended.\n\nUser-agent: GPTBot\nAllow: /\n\nUser-agent: ClaudeBot\nAllow: /\n\nUser-agent: PerplexityBot\nAllow: /\n\nUser-agent: Google-Extended\nAllow: /\n\nUser-agent: ChatGPT-User\nAllow: /\n\nUser-agent: OAI-SearchBot\nAllow: /\n\nUser-agent: Claude-User\nAllow: /\n\nUser-agent: Claude-SearchBot\nAllow: /\n\nUser-agent: Perplexity-User\nAllow: /\n\nUser-agent: Meta-ExternalAgent\nAllow: /\n\nSitemap: https://agentready.market/sitemap.xml\n", "attribute_map": [{"source": "\u2022\u2022\u2022\u2022", "schema_field": "\u2022\u2022\u2022\u2022", "example": "\u2022\u2022\u2022\u2022"}]}, "benchmark": {"delta": 56, "median": 32, "verdict": "Above the e-commerce (all verticals) median (+56).", "vertical": "general", "percentile": 88, "provisional": false, "sample_size": 41, "vertical_label": "e-commerce (all verticals)"}, "final_url": "https://www.agentready.market/", "protocols": [{"id": "proto.ucp_mcp", "label": "Shopify/UCP agent endpoint (/api/ucp/mcp)", "detail": "No UCP MCP endpoint detected (HTTP 404) \u2014 agents on the UCP rail (Shopify catalog/checkout) can't transact here.", "points": 4, "status": "fail"}, {"id": "proto.a2a_card", "label": "A2A Agent Card (/.well-known/agent-card.json)", "detail": "Agent Card found at /.well-known/agent-card.json \u2014 external agents can discover and call your agent.", "points": 3, "status": "pass"}, {"id": "proto.ard_catalog", "label": "ARD AI Catalog (/.well-known/ai-catalog.json)", "detail": "An AI Catalog is published \u2014 agents using ARD registries (GitHub Agent Finder and successors) can discover what this site offers before invoking it. Almost no site on the web serves this yet: a genuine first-mover signal.", "points": 3, "status": "pass"}, {"id": "act.checkout", "label": "Add-to-cart action detectable", "detail": "No product page reachable \u2014 the buy action can't be assessed.", "points": 0, "status": "na"}, {"id": "access.agent_class", "label": "Shopping-agent access (Agent class)", "detail": "On-demand shopping agents (ChatGPT-User, Claude-User, Perplexity-User, Meta-ExternalFetcher, AmazonBuyForMe) load the site like a normal visitor. The site is behind Cloudflare \u2014 check the AI-crawler settings there: from 2026-09-15 new domains get the Agent class blocked by default on ad-carrying pages, and a block-Training setting starts blocking multi-purpose crawlers (Googlebot, BingBot) too.", "points": 0, "status": "pass"}, {"id": "proto.wba_differential", "ran": true, "label": "Verified-agent differentiation (Web Bot Auth)", "detail": "Signed and unsigned requests are treated identically as ChatGPT-User (both HTTP 200) \u2014 no Web Bot Auth verification observed at the edge. That's the norm on today's web, so it isn't penalized. (From outside, an edge that only admits keys it already knows is indistinguishable from one that ignores signatures.)", "points": 0, "status": "na"}, {"id": "proto.x402", "label": "x402 / HTTP-402 payments", "detail": "No x402 payment rail observed (17 responses checked, none answered 402). The spec still defines no per-site discovery path \u2014 discovery lives in facilitator 'Bazaars' \u2014 so we report what your endpoints actually answered rather than guessing at a path.", "points": 0, "status": "na"}, {"id": "access.citation_rail", "label": "Citation-rail access (Bingbot, OAI-SearchBot, Meta-WebIndexer, Google-Extended)", "detail": "Bingbot, OAI-SearchBot, Meta-WebIndexer get in, and Google-Extended is allowed \u2014 the indexes feeding ChatGPT, Copilot, Meta AI and Gemini answers can all read this store.", "points": 0, "status": "pass"}, {"id": "access.content_signal", "label": "Content-Signal directives (robots.txt)", "detail": "No Content-Signal directives \u2014 the Cloudflare-era content switches aren't set on this store (that's the common case; nothing is being blocked by them).", "points": 0, "status": "na"}, {"id": "access.canonical", "label": "Canonical address coherence", "detail": "The declared canonical address matches where the site actually answers \u2014 no identity contradiction for machines to untangle.", "points": 0, "status": "pass"}, {"id": "access.machine_entry", "label": "Machine entry points advertised at first contact", "detail": "The homepage signposts machine resources at first contact (Link header, agent-card.json, ai-catalog.json, feed) \u2014 an agent fetching the root is pointed to them instead of having to guess a path or give up.", "points": 0, "status": "pass"}, {"id": "p6.returns_shipping", "label": "Returns & shipping in offers (P6 preview)", "detail": "Offers expose machine-readable return policy and shipping details \u2014 an agent can quote the buyer the full, true cost.", "points": 0, "status": "pass"}], "top_fixes": [{"how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No machine-readable product feed nor OpenGraph product tags.", "title": "Product feed / catalog signals", "effort": "medium", "impact": 7.0, "pillar": "Catalog & attributes", "check_id": "cat.feed"}, {"how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No aggregateRating \u2014 the agent can't compare your reputation.", "title": "Aggregated reviews (aggregateRating)", "effort": "medium", "impact": 3.0, "pillar": "Structured data", "check_id": "sd.rating"}, {"how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No UCP MCP endpoint detected (HTTP 404) \u2014 agents on the UCP rail (Shopify catalog/checkout) can't transact here.", "title": "Shopify/UCP agent endpoint (/api/ucp/mcp)", "effort": "hard", "impact": 4.0, "pillar": "Transaction rails & agent access", "check_id": "proto.ucp_mcp"}, {"how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No homepage link-path found for: shipping, help (found: contact, returns).", "title": "Shipping/returns/contact linked from the homepage (preview)", "effort": "easy", "impact": 0.0, "pillar": "Access & crawlability", "check_id": "access.agent_pathways"}], "cap_reason": "", "proto_bonus": 0, "scoring_version": 2}}