Qomvia

Methodology

Rubric v1.0.0. Every score is the sum of 21 independently measured signals, each worth a fixed number of points. Nothing is estimated, inferred from a third-party dataset, or generated by a language model.

What the crawler does and does not do

  • Identifies itself as QomviaBot/1.0 with a link to this page.
  • Issues only GET requests: roughly 20 for a public scan, up to 500 for a paid deep audit.
  • Never submits a form, never adds to a cart, never attempts a purchase.
  • Never tries to defeat a CAPTCHA or bot challenge — a challenge is recorded as a finding and nothing more.
  • Respects robots.txt for every request beyond the homepage and robots file itself.
  • Rate-limits to one request per host at a time and caps each response at 2 MB.

The rubric

100 points

Machine access 25 pts

  • robots.txt allows AI crawlers10 pts

    If GPTBot, ClaudeBot or PerplexityBot are disallowed, agents cannot read your catalogue at all.

    Fix: Allow the shopping-relevant AI user agents on your public catalogue paths in robots.txt.

    signal id: robots_ai_crawlers

  • Product paths are crawlable5 pts

    Many sites allow the homepage but disallow /products or /cart-adjacent paths agents need to read prices.

    Fix: Remove disallow rules covering product detail and category paths.

    signal id: robots_product_paths

  • Serves content to a non-browser user agent6 pts

    Bot management often returns a challenge page to anything without a browser fingerprint.

    Fix: Allowlist declared AI agents in your WAF/bot manager instead of serving them an interstitial.

    signal id: bot_ua_response

  • Content is server-rendered4 pts

    Agents that fetch HTML without executing JavaScript see nothing on a client-rendered storefront.

    Fix: Server-render product name, price and availability, or expose them in JSON-LD.

    signal id: server_rendered

Product data legibility 25 pts

  • Valid Product structured data8 pts

    Product JSON-LD is how agents identify what is being sold without guessing from markup.

    Fix: Emit schema.org Product JSON-LD with name, image, description and sku on every product page.

    signal id: jsonld_product

  • Offer with price, currency and availability7 pts

    Without a machine-readable price and availability an agent cannot compare or commit to a purchase.

    Fix: Add an Offer with price, priceCurrency and availability to your Product JSON-LD.

    signal id: jsonld_offer

  • Stable product identifiers3 pts

    GTIN/MPN/SKU lets an agent match your product to the one the user actually asked for.

    Fix: Publish gtin13, mpn or sku in your Product JSON-LD.

    signal id: stable_identifiers

  • Category pages expose an ItemList3 pts

    Agents browse categories to build a shortlist; an ItemList removes the need to scrape cards.

    Fix: Add ItemList JSON-LD with product URLs to category and search pages.

    signal id: category_itemlist

  • Machine-readable product feed4 pts

    A feed is the cheapest way for an agent platform to ingest your whole catalogue.

    Fix: Publish a products.json / Google Merchant feed and link it from robots.txt or /.well-known.

    signal id: product_feed

Agent-commerce protocols 20 pts

  • Agentic Commerce Protocol support7 pts

    ACP is what lets ChatGPT complete a checkout against your store instead of linking out.

    Fix: Expose an ACP feed/checkout endpoint or enable your platform's agentic-checkout integration.

    signal id: acp_signals

  • llms.txt guidance file5 pts

    llms.txt is the emerging convention for telling an agent where the useful, canonical content is.

    Fix: Publish /llms.txt listing catalogue entry points, feeds, policies and contact.

    signal id: llms_txt

  • MCP or A2A discovery document5 pts

    A discoverable MCP server or agent card lets agents call your commerce functions directly.

    Fix: Publish /.well-known/mcp.json or /.well-known/agent.json describing your endpoints.

    signal id: mcp_discovery

  • Machine-payable endpoint signals (x402 / AP2)3 pts

    x402 and AP2 are how an agent can pay without a human-driven card form.

    Fix: If you sell digital access, return 402 with x402 headers; otherwise adopt AP2 mandates via your PSP.

    signal id: x402_ap2

Checkout traversability 15 pts

  • Cart or checkout entry point is reachable5 pts

    Agents need a linkable, crawlable cart URL to hand a basket back to the user.

    Fix: Expose a stable /cart URL that renders without JavaScript and is not disallowed in robots.txt.

    signal id: cart_reachable

  • No forced login before checkout6 pts

    A mandatory account or OTP is where most agent purchases die.

    Fix: Offer guest checkout and defer account creation until after the order.

    signal id: guest_checkout

  • Checkout forms are semantically labelled4 pts

    autocomplete tokens and input names are what let an agent fill an address without guessing.

    Fix: Add standard autocomplete attributes (given-name, postal-code, email …) to checkout inputs.

    signal id: form_semantics

Agent-facing performance 10 pts

  • Time to first byte4 pts

    Agent orchestrators time out aggressively; slow origins get dropped from consideration.

    Fix: Cache HTML at the edge for anonymous requests, including declared crawlers.

    signal id: ttfb

  • HTML payload size2 pts

    Multi-megabyte HTML blows up agent context windows and parsing cost.

    Fix: Trim inline state blobs and duplicated markup from server-rendered HTML.

    signal id: page_weight

  • Sitemap is discoverable and structured4 pts

    A sitemap is the fastest way for an agent platform to enumerate your catalogue.

    Fix: Reference an XML sitemap index from robots.txt and keep each file under 50k URLs.

    signal id: sitemap

Policy clarity 5 pts

  • Stated automated-access policy3 pts

    Agent platforms need an explicit permission signal before transacting on a user's behalf.

    Fix: Publish an AI/automated-access policy page and reference it from llms.txt and robots.txt.

    signal id: ai_policy

  • Machine-readable contact / API surface2 pts

    Agents and their operators need a programmatic way to resolve problems and request access.

    Fix: Publish /.well-known/security.txt and an openapi.json or documented API endpoint.

    signal id: machine_contact

Grades

  • A — 90 to 100: an agent can find, read and reach checkout without special handling.
  • B — 75 to 89: usable, with gaps that cost you in comparisons.
  • C — 60 to 74: an agent can read you but will struggle to transact.
  • D — 40 to 59: significant blockers; most agent journeys fail.
  • F — below 40: effectively invisible or closed to agents.

Corrections and re-scans

Scores are a snapshot of what our crawler received at a point in time. Anyone can trigger a free re-scan from the homepage once per hour, and every signal shows the measurement behind it so a result can be reproduced with curl. If you believe a measurement is wrong, email [email protected] with the signal id and we will re-run and publish the result. Store owners can remove their public page entirely on the opt-out page.

Open rubric

The rubric and the scoring code are the product of Qomvia, published so results can be challenged. If a signal is unfair or a weight is wrong, we would rather change it than defend it.