{"scan_id": 683, "url": "https://detailed-hosted-bibliography-icon.trycloudflare.com", "vertical": "general", "scanned_at": "2026-09-26T23:14:26.177208+00:00", "score": 17, "grade": "E", "report_url": "https://www.agentready.market/r/683", "result": {"url": "https://detailed-hosted-bibliography-icon.trycloudflare.com", "meta": {"psp": [], "notes": ["No product page detected from the homepage."], "phase": "1 (pillars 1-4, weighted matrix)", "origin": "https://detailed-hosted-bibliography-icon.trycloudflare.com", "cloudflare": true, "investment": {"ads": [], "apps": [], "score": 0, "platform": "unknown", "qualified": false}, "home_status": 200, "product_url": "", "shopify_feed": false, "checkout_door": {"ua": "ChatGPT-User", "cart": "open", "blocked": false, "checkout": "open"}, "robots_present": true}, "error": "", "grade": "E", "score": 17, "capped": false, "pillars": [{"id": "access", "pct": 25, "icon": "\ud83d\udd13", "name": "Access & crawlability", "checks": [{"id": "access.ai_crawlers", "fix": "Remove the Disallow directives targeting GPTBot, ClaudeBot, PerplexityBot, Google-Extended in robots.txt (or add explicit User-agent blocks allowing them).", "gap": 16.0, "label": "robots.txt allows agent crawlers", "detail": "Every AI agent crawler is blocked by robots.txt \u2014 total invisibility.", "earned": 0.0, "effort": "easy", "pillar": "access", "status": "fail", "weight": 16.0}, {"id": "access.cloaking", "fix": "Allow the GPTBot/ClaudeBot/PerplexityBot user-agents at the WAF/CDN level (Cloudflare, etc.), not just in robots.txt.", "gap": 8.0, "label": "No blocking / cloaking of AI bots", "detail": "Blocked in real-world conditions for: GPTBot (HTTP 403), ClaudeBot (HTTP 403), PerplexityBot (HTTP 403).", "earned": 0.0, "effort": "medium", "pillar": "access", "status": "fail", "weight": 8.0}, {"id": "access.latency", "fix": "", "gap": 0.0, "label": "Fast enough response for agents", "detail": "Fast response (476 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": "Generate a sitemap.xml and declare it in robots.txt (Sitemap: ...).", "gap": 4.0, "label": "Sitemap available", "detail": "No sitemap declared in robots.txt nor at /sitemap.xml.", "earned": 0.0, "effort": "easy", "pillar": "access", "status": "fail", "weight": 4.0}, {"id": "access.no_js", "fix": "Pre-render product data server-side.", "gap": 2.0, "label": "Content accessible without JS rendering", "detail": "Little content without JS \u2014 risks being half-mute to an agent.", "earned": 2.0, "effort": "hard", "pillar": "access", "status": "partial", "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, returns, contact, help (found: none).", "earned": 0.0, "effort": "easy", "pillar": "access", "status": "fail", "weight": 0.0}], "earned": 10.0, "weight": 40.0}, {"id": "structured_data", "pct": 0, "icon": "\ud83c\udff7\ufe0f", "name": "Structured data", "checks": [{"id": "sd.product", "fix": "Add a <script type=\"application/ld+json\"> of type Product with name, image, brand, sku/gtin13, and offers{price, priceCurrency, availability}.", "gap": 12.0, "label": "Product JSON-LD present", "detail": "No product page found to crawl, and no Product JSON-LD on the homepage.", "earned": 0.0, "effort": "medium", "pillar": "structured_data", "status": "fail", "weight": 12.0}, {"id": "sd.price", "fix": "Set offers.price and offers.priceCurrency in JSON-LD.", "gap": 8.0, "label": "Structured price + currency", "detail": "No price exposed inside offers.", "earned": 0.0, "effort": "easy", "pillar": "structured_data", "status": "fail", "weight": 8.0}, {"id": "sd.availability", "fix": "Add offers.availability (e.g. https://schema.org/InStock).", "gap": 5.0, "label": "Structured availability", "detail": "No availability field \u2014 the agent can't tell if it's in stock.", "earned": 0.0, "effort": "easy", "pillar": "structured_data", "status": "fail", "weight": 5.0}, {"id": "sd.brand", "fix": "Add the brand field to the Product.", "gap": 3.0, "label": "Structured brand", "detail": "No structured brand.", "earned": 0.0, "effort": "easy", "pillar": "structured_data", "status": "fail", "weight": 3.0}, {"id": "sd.identifier", "fix": "Expose sku and, if possible, gtin13 in the Product JSON-LD.", "gap": 4.0, "label": "Product identifier (SKU / GTIN)", "detail": "No identifier (sku/gtin/mpn) \u2014 the agent can't disambiguate the product.", "earned": 0.0, "effort": "medium", "pillar": "structured_data", "status": "fail", "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": 0.0, "weight": 35.0}, {"id": "catalog", "pct": 0, "icon": "\ud83d\udce6", "name": "Catalog & attributes", "checks": [{"id": "cat.variants", "fix": "Expose variants (size, color) in JSON-LD or via the product feed.", "gap": 10.0, "label": "Structured variants", "detail": "No usable variant data.", "earned": 0.0, "effort": "medium", "pillar": "catalog", "status": "fail", "weight": 10.0}, {"id": "cat.attributes", "fix": "Expose attributes (color, size, material, category) as structured JSON-LD fields (additionalProperty) or via the feed.", "gap": 8.0, "label": "Attributes as fields (not prose)", "detail": "No structured filterable attribute \u2014 the agent can't filter.", "earned": 0.0, "effort": "medium", "pillar": "catalog", "status": "fail", "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": 0.0, "weight": 25.0}, {"id": "rails", "pct": 54, "icon": "\ud83d\udee4\ufe0f", "name": "Transaction rails & agent access", "checks": [{"id": "proto.ucp_mcp", "fix": "", "gap": 0.0, "label": "Shopify/UCP agent endpoint (/api/ucp/mcp)", "detail": "Verified by a real JSON-RPC handshake \u2014 /api/ucp/mcp answered our `initialize` call. This rail doesn't just exist, it speaks MCP.", "earned": 4.0, "effort": "hard", "pillar": "rails", "status": "pass", "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": "Create a JSON file at /.well-known/ai-catalog.json per the ARD v0.9 draft (Google/Microsoft et al., June 2026): declare a specVersion and an entries list \u2014 one entry per machine surface you offer (product feed, llms.txt, UCP/MCP endpoint), each with a name, description and URL. Static JSON is enough. Re-scan: the check passes once the file declares specVersion or entries.", "gap": 3.0, "label": "ARD AI Catalog (/.well-known/ai-catalog.json)", "detail": "No AI Catalog \u2014 under the new Google/Microsoft ARD spec (June 2026), agents look here first to learn what a site offers. Adoption is ~0% today, so publishing one puts you ahead of nearly the entire web (including the spec authors).", "earned": 0.0, "effort": "easy", "pillar": "rails", "status": "fail", "weight": 3.0}, {"id": "access.machine_entry", "fix": "Link llms.txt, your product feed and agent endpoints from the homepage <head> and echo them in an HTTP Link response header (RFC 8288).", "gap": 3.0, "label": "Machine entry points advertised at first contact", "detail": "The homepage points to no machine resources \u2014 no <head> link to llms.txt, a feed or an agent endpoint, and no HTTP Link header. An agent that fetches only the root sees no signposts and can conclude there's no machine access, even when you serve those files. Link them from the page and echo them in a Link response header.", "earned": 0.0, "effort": "easy", "pillar": "rails", "status": "fail", "weight": 3.0}, {"id": "p6.returns_shipping", "fix": "", "gap": 0.0, "label": "Returns & shipping in offers (P6 preview)", "detail": "No machine-readable product found \u2014 returns/shipping fields can't be assessed (fix the product sheet first).", "earned": 0.0, "effort": "medium", "pillar": "rails", "status": "na", "weight": 0.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": 7.0, "weight": 13.0}], "roadmap": {"gain": 51, "steps": [{"n": 1, "how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "Every AI agent crawler is blocked by robots.txt \u2014 total invisibility.", "title": "robots.txt allows agent crawlers", "effort": "easy", "impact": 16.0, "pillar": "Access & crawlability", "check_id": "access.ai_crawlers", "cumulative": 33}, {"n": 2, "how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No price exposed inside offers.", "title": "Structured price + currency", "effort": "easy", "impact": 8.0, "pillar": "Structured data", "check_id": "sd.price", "cumulative": 41}, {"n": 3, "how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No product page found to crawl, and no Product JSON-LD on the homepage.", "title": "Product JSON-LD present", "effort": "medium", "impact": 12.0, "pillar": "Structured data", "check_id": "sd.product", "cumulative": 53}, {"n": 4, "how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No usable variant data.", "title": "Structured variants", "effort": "medium", "impact": 10.0, "pillar": "Catalog & attributes", "check_id": "cat.variants", "cumulative": 63}, {"n": 5, "how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No availability field \u2014 the agent can't tell if it's in stock.", "title": "Structured availability", "effort": "easy", "impact": 5.0, "pillar": "Structured data", "check_id": "sd.availability", "cumulative": 68}], "capped": false, "current": 17, "grade_up": true, "projected": 68, "cap_reason": "robots.txt blocks every AI agent crawler", "target_grade": "C", "current_grade": "E"}, "headline": "Critical. An AI agent can barely 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": "# Detailed-hosted-bibliography-icon\n\n## Policies\n- Shipping: <add your delivery times and zones>\n- Returns: <add your return policy>", "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", "attribute_map": [{"source": "\u2022\u2022\u2022\u2022", "schema_field": "\u2022\u2022\u2022\u2022", "example": "\u2022\u2022\u2022\u2022"}]}, "benchmark": {"delta": -15, "median": 32, "verdict": "Below the e-commerce (all verticals) median (-15).", "vertical": "general", "percentile": 4, "provisional": false, "sample_size": 50, "vertical_label": "e-commerce (all verticals)"}, "final_url": "https://detailed-hosted-bibliography-icon.trycloudflare.com", "protocols": [{"id": "proto.ucp_mcp", "label": "Shopify/UCP agent endpoint (/api/ucp/mcp)", "detail": "Verified by a real JSON-RPC handshake \u2014 /api/ucp/mcp answered our `initialize` call. This rail doesn't just exist, it speaks MCP.", "points": 4, "status": "pass"}, {"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": "No AI Catalog \u2014 under the new Google/Microsoft ARD spec (June 2026), agents look here first to learn what a site offers. Adoption is ~0% today, so publishing one puts you ahead of nearly the entire web (including the spec authors).", "points": 3, "status": "fail"}, {"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": "Shopping agents are blocked at the door: Perplexity-User (HTTP 403). These are the on-demand agents acting for a live buyer \u2014 an agent can't buy what it can't load. 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": "fail"}, {"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": "The indexes that make this store EXIST inside AI answers are told to keep out by robots.txt: OAI-SearchBot; Google-Extended is disallowed (invisible to Gemini answers). A store can allow the shopping agent yet stay invisible to it \u2014 the assistant answers from these indexes.", "points": 0, "status": "fail"}, {"id": "access.content_signal", "label": "Content-Signal directives (robots.txt)", "detail": "Content-Signal set deliberately (ai-train=no, search=yes, use=reference) \u2014 answers and search stay on while the training posture is explicit. A deliberate, healthy configuration.", "points": 0, "status": "pass"}, {"id": "access.canonical", "label": "Canonical address coherence", "detail": "No canonical declared on the homepage \u2014 engines will pick an address themselves (works, but you're not in control of which variant gets the credit).", "points": 0, "status": "na"}, {"id": "access.machine_entry", "label": "Machine entry points advertised at first contact", "detail": "The homepage points to no machine resources \u2014 no <head> link to llms.txt, a feed or an agent endpoint, and no HTTP Link header. An agent that fetches only the root sees no signposts and can conclude there's no machine access, even when you serve those files. Link them from the page and echo them in a Link response header.", "points": 0, "status": "fail"}, {"id": "p6.returns_shipping", "label": "Returns & shipping in offers (P6 preview)", "detail": "No machine-readable product found \u2014 returns/shipping fields can't be assessed (fix the product sheet first).", "points": 0, "status": "na"}], "top_fixes": [{"how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "Every AI agent crawler is blocked by robots.txt \u2014 total invisibility.", "title": "robots.txt allows agent crawlers", "effort": "easy", "impact": 16.0, "pillar": "Access & crawlability", "check_id": "access.ai_crawlers"}, {"how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No price exposed inside offers.", "title": "Structured price + currency", "effort": "easy", "impact": 8.0, "pillar": "Structured data", "check_id": "sd.price"}, {"how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No product page found to crawl, and no Product JSON-LD on the homepage.", "title": "Product JSON-LD present", "effort": "medium", "impact": 12.0, "pillar": "Structured data", "check_id": "sd.product"}, {"how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No usable variant data.", "title": "Structured variants", "effort": "medium", "impact": 10.0, "pillar": "Catalog & attributes", "check_id": "cat.variants"}, {"how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No availability field \u2014 the agent can't tell if it's in stock.", "title": "Structured availability", "effort": "easy", "impact": 5.0, "pillar": "Structured data", "check_id": "sd.availability"}], "cap_reason": "robots.txt blocks every AI agent crawler", "proto_bonus": 0, "scoring_version": 2}}