AI shopping agents are no longer theoretical; they are actively attempting to transact. Following the introduction of the Universal Commerce Protocol (UCP) by Google and Shopify at Google I/O, major players like Zalando, DoorDash, and Walmart have committed to agent-driven checkout. However, a technical audit reveals a harsh reality: the vast majority of e-commerce sites are effectively invisible to these autonomous buyers. The barrier isn't complex AI logic; it's basic data hygiene.

The Karuma Scanner and the Audit Layers

To quantify this gap, developer Dimoncelli built Karuma, a free scanner that audits public storefronts against the UCP specification. The tool streams a live NDJSON audit, checking three critical layers: the /.well-known/ucp manifest, Schema.org Product and Offer data in JSON-LD, and crawl directives. After scanning dozens of production stores on platforms like Shopify, WooCommerce, and PrestaShop, the audit identified five recurring failures that prevent agents from reading or trusting store data.

Failure 1: Broken Manifests and Soft 404s

The most common blocker is the missing or malformed /.well-known/ucp manifest. This file is the digital front door; without it, agents assume the store lacks agentic commerce support. Worse, many stacks return a custom HTML 404 page with a 200 OK status code. When an agent expects JSON but receives , the parser chokes immediately. The fix requires ensuring this endpoint returns valid JSON with the correct Content-Type: application/json header, rather than being rewritten by a CDN or WAF into an HTML error page.

Failure 2: Human-Readable Prices Break Machine Parsing

Schema.org compliance often fails at the price field. Agents parse Offer.price as a strict numeric value, but many stores output localized strings like "49,99 โ‚ฌ" or "From 49.99". These formats, along with promotional text, cause parsing errors. Additionally, the priceCurrency field must strictly adhere to ISO 4217 codes (e.g., "EUR", "USD"). The solution is to strip all currency symbols, commas, and marketing text from the structured data layer, emitting a plain number with a dot decimal separator while keeping the currency code separate.

Failures 3, 4, and 5: Identity and Reliability Gaps

Beyond pricing, agents struggle with ambiguity and unreliability. First, availability fields often use invented strings like "In Stock" or "Disponible" instead of the canonical Schema.org URI (e.g., https://schema.org/InStock). Second, products lacking global identifiers like gtin13, sku, or mpn alongside a brand object are treated as ambiguous, preventing variant matching. Finally, static manifests frequently advertise dead endpoints. If a manifest declares an MCP or REST transport that returns a 404 or 502, it signals unreliability and wastes the agent's transaction budget.

Key Takeaways

  • Validate JSON-LD Strictly: Prices must be numeric with dot decimals; currency must be ISO 4217.
  • Use Canonical URIs: Availability must reference Schema.org URIs, not local strings.
  • Define Product Identity: Every product needs unique identifiers (SKU, GTIN) and brand data to be distinguishable.
  • Audit Endpoint Liveness: Only declare transports in the UCP manifest that are actually live and responding within latency budgets.
  • Fix Soft 404s: Ensure /.well-known/ucp returns valid JSON, not HTML error pages, even if the file is missing.

The Bottom Line

Your store doesn't need better AI; it needs better JSON. If your structured data isn't machine-readable, you're invisible to the next wave of commerce.