{"scan_id": 696, "url": "https://www.loftymanner.com/", "vertical": "general", "scanned_at": "2026-09-30T06:02:08.484449+00:00", "score": 25, "grade": "E", "report_url": "https://www.agentready.market/r/696", "result": {"url": "https://loftymanner.com", "meta": {"psp": [], "notes": ["No product page detected from the homepage."], "phase": "1 (pillars 1-4, weighted matrix)", "origin": "https://loftymanner.com", "cloudflare": true, "investment": {"ads": [], "apps": [], "score": 0, "platform": "Shopify", "qualified": false}, "home_status": 429, "product_url": "", "shopify_feed": true, "checkout_door": {"ua": "ChatGPT-User", "cart": "open", "blocked": false, "checkout": "open"}, "robots_present": true, "muse_ucp_signal": {"likely": false, "shopify": true, "shop_pay": false}}, "error": "", "grade": "E", "score": 25, "capped": true, "pillars": [{"id": "access", "pct": 60, "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": "Make sure the homepage returns a 200 and HTML.", "gap": 8.0, "label": "No blocking / cloaking of AI bots", "detail": "The homepage doesn't respond correctly (status 429).", "earned": 0.0, "effort": "hard", "pillar": "access", "status": "fail", "weight": 8.0}, {"id": "access.latency", "fix": "", "gap": 4.0, "label": "Fast enough response for agents", "detail": "Couldn't measure response time (the homepage didn't respond correctly).", "earned": 0.0, "effort": "medium", "pillar": "access", "status": "na", "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": "Serve server-rendered HTML (SSR) rather than an empty JS shell.", "gap": 4.0, "label": "Content accessible without JS rendering", "detail": "Couldn't retrieve usable HTML.", "earned": 0.0, "effort": "hard", "pillar": "access", "status": "fail", "weight": 4.0}, {"id": "access.agent_pathways", "fix": "", "gap": 0.0, "label": "Shipping/returns/contact linked from the homepage (preview)", "detail": "Couldn't retrieve usable homepage HTML.", "earned": 0.0, "effort": "easy", "pillar": "access", "status": "na", "weight": 0.0}], "earned": 24.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": 100, "icon": "\ud83d\udce6", "name": "Catalog & attributes", "checks": [{"id": "cat.variants", "fix": "", "gap": 0.0, "label": "Structured variants", "detail": "Variants exposed as data (5 variants in products.json).", "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: option:Color, option:Size.", "earned": 8.0, "effort": "medium", "pillar": "catalog", "status": "pass", "weight": 8.0}, {"id": "cat.feed", "fix": "", "gap": 0.0, "label": "Product feed / catalog signals", "detail": "Feed signals: valid products.json (Shopify).", "earned": 7.0, "effort": "medium", "pillar": "catalog", "status": "pass", "weight": 7.0}], "earned": 25.0, "weight": 25.0}, {"id": "rails", "pct": 0, "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": "Create a JSON file at /.well-known/agent-card.json following the A2A Agent Card schema: at minimum a name, description and url for your store, plus a skills list saying what an agent can do here (browse the catalog, check delivery, buy). Static JSON is enough \u2014 no backend needed. Re-scan: the check passes once the file parses and declares a name or skills.", "gap": 3.0, "label": "A2A Agent Card (/.well-known/agent-card.json)", "detail": "No A2A Agent Card \u2014 your store publishes no machine-readable agent for buyer-agents to discover and call. (So do ~all stores today: this is the frontier, not the baseline.)", "earned": 0.0, "effort": "easy", "pillar": "rails", "status": "fail", "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": "", "gap": 0.0, "label": "Machine entry points advertised at first contact", "detail": "Homepage unparseable \u2014 first-contact discoverability can't be assessed.", "earned": 0.0, "effort": "easy", "pillar": "rails", "status": "na", "weight": 0.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": 0.0, "weight": 10.0}], "roadmap": {"gain": 55, "steps": [{"n": 1, "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": 57}, {"n": 2, "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": 69}, {"n": 3, "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": 74}, {"n": 4, "how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No structured brand.", "title": "Structured brand", "effort": "easy", "impact": 3.0, "pillar": "Structured data", "check_id": "sd.brand", "cumulative": 77}, {"n": 5, "how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No A2A Agent Card \u2014 your store publishes no machine-readable agent for buyer-agents to discover and call. (So do ~all stores today: this is the frontier, not the baseline.)", "title": "A2A Agent Card (/.well-known/agent-card.json)", "effort": "easy", "impact": 3.0, "pillar": "Transaction rails & agent access", "check_id": "proto.a2a_card", "cumulative": 80}], "capped": true, "current": 25, "grade_up": true, "projected": 80, "cap_reason": "the store blocks AI bots in the real world (WAF/CDN)", "target_grade": "B", "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": "# Lofty Manner\n\n## Products\n- [Bomber Jessie | Taupe](https://loftymanner.com/products/bomber-jessie-taupe)\n\n## Policies\n- Shipping: <add your delivery times and zones>\n- Returns: <add your return policy>\n\n## Sitemap\n- https://loftymanner.com/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://loftymanner.com/sitemap.xml\n", "attribute_map": [{"source": "\u2022\u2022\u2022\u2022", "schema_field": "\u2022\u2022\u2022\u2022", "example": "\u2022\u2022\u2022\u2022"}], "shopify_liquid": "\u2022\u2022\u2022\u2022\u2022\u2022"}, "benchmark": {"delta": -7, "median": 32, "verdict": "Around the e-commerce (all verticals) median (-7).", "vertical": "general", "percentile": 39, "provisional": false, "sample_size": 62, "vertical_label": "e-commerce (all verticals)"}, "final_url": "https://www.loftymanner.com/", "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": "No A2A Agent Card \u2014 your store publishes no machine-readable agent for buyer-agents to discover and call. (So do ~all stores today: this is the frontier, not the baseline.)", "points": 3, "status": "fail"}, {"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": "Homepage unreachable \u2014 agent-class posture can't be assessed.", "points": 0, "status": "na"}, {"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": "Homepage unreachable \u2014 citation-rail access can't be assessed.", "points": 0, "status": "na"}, {"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": "Homepage unparseable \u2014 canonical coherence can't be assessed.", "points": 0, "status": "na"}, {"id": "access.machine_entry", "label": "Machine entry points advertised at first contact", "detail": "Homepage unparseable \u2014 first-contact discoverability can't be assessed.", "points": 0, "status": "na"}, {"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": "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 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"}, {"how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No structured brand.", "title": "Structured brand", "effort": "easy", "impact": 3.0, "pillar": "Structured data", "check_id": "sd.brand"}, {"how": "\u2022\u2022\u2022\u2022\u2022\u2022 Unlock the exact fix with Pro", "why": "No A2A Agent Card \u2014 your store publishes no machine-readable agent for buyer-agents to discover and call. (So do ~all stores today: this is the frontier, not the baseline.)", "title": "A2A Agent Card (/.well-known/agent-card.json)", "effort": "easy", "impact": 3.0, "pillar": "Transaction rails & agent access", "check_id": "proto.a2a_card"}], "cap_reason": "the store blocks AI bots in the real world (WAF/CDN)", "proto_bonus": 0, "scoring_version": 2}}