Building a universal e-commerce catalog for agents Agora, a universal shopping catalog for AI agents, serves about 15 million agent requests a month across more than 1 million online stores through one schema, one cart and one checkout, the company said, after Amazon began blocking shopping agents on September 20 and Walmart announced MCP-based agent profiles and a written rule set for agents shopping on customers' behalf. Agora ingests products from Shopify, WooCommerce and custom stores into one data model that refreshes daily with live price and stock checks, offering browser agents a dedicated /agent interface with stable selectors and JSON and programmatic agents a REST API for search, cart, checkout and order tracking. Payment runs through Stripe so agents pass tokens rather than card numbers and stop before payment by default, ranking is not sold, merchants pay 0% commission, and Agora covers about 1 million of an estimated 25 million online stores. On September 20th, Amazon started blocking agents https://finance.yahoo.com/technology/article/amazon-blocks-agentic-ai-shopping-but-walmart-is-betting-big-that-its-worth-saying-yes-100000436.html from shopping on their website. Users report that xAI's Grok and OpenAI's new agents https://www.notebookcheck.net/US-banks-and-Amazon-are-blocking-AI-agents-like-Meta-s-Muse.1427833.0.html can't get through either. Yesterday, Walmart went the other way. They announced https://corporate.walmart.com/news/2026/10/Making-It-Possible-for-Agents-to-Shop-on-Behalf-of-Customers agent profiles, an MCP-based agent gateway, and a written set of rules for agents that shop on a customer's behalf. We believe that agents are going to shop for humans no matter what. The question will become how they get in and what they find. We think the answer is an open door, and results that nobody can manipulate. For context, Agora is a universal catalog for agents. An agent https://www.searchagora.com/agent can search, buy, and track orders across more than 1 million online stores through one schema, one cart, and one checkout. Today we serve about 15 million agent requests a month, through distribution partners including Glance https://www.searchagora.com/blog/glance-provides-ai-shopping-to-12-million-customers-with-agora and Samsung TV Shopping. This post explains how it works and why we built it this way. The short version - Websites are built for people. Agents that shop through a browser are slow and break easily. That is true for one big retailer, and much worse across a million small ones. - We built one catalog for all of them. Agora ingests products from Shopify, WooCommerce, and custom stores into one data model. The catalog refreshes daily, and we check price and stock live when an agent interacts with a product. - There are two ways in. Browser agents get a dedicated /agent interface with stable selectors and machine-readable JSON. Programmatic agents get a REST API for search, cart, checkout, and order tracking. - The agent never handles card numbers. Payment goes through Stripe. The agent passes payment tokens, and by default it stops before payment so a person can confirm. - Ranking is not for sale. Agora holds no inventory, sells no products of its own, and takes no money for ranking. For an agent, the ranking is the whole product, so this matters more than it does for people. - Businesses pay us, not for placement. We make money from subscriptions and usage credits that we charge the businesses building on Agora. Merchants pay 0% commission. - It is not finished. We cover about 1 million of an estimated 25 million online stores. Daily data goes stale. Our permission model is simpler than Walmart's. We cover those gaps below. Why agents struggle with websites Walmart said it in its announcement: agents that shop through a web browser follow "steps designed for people," which "can be slow and error-prone, and agents may get stuck along the way". Anyone who has built a browser agent knows the frustration. Client-side hydration changes the page after it loads. Class names are generated by a build tool and change every deployment. Price is split across three spans, or rendered with a strikethrough that the model reads as the real price. Variant pickers are custom components that don't respond to a normal click. A newsletter modal appears on the second page view. An A/B test moves the add-to-cart button. Each of these is a small problem. Together they mean a shopping agent spends most of its tokens and time figuring out the page, not finding the best product. Now multiply that by a million stores. Each one has its own theme, its own checkout, and its own idea of what a "variant" is. A person asking an agent for "a quiet dishwasher under $800" doesn't want the agent to visit a few sites it happens to know. They want the best answer from all of them. No agent can open a million websites per query, and no team wants a million agents learning its DOM by trial and error. Walmart's answer is a gateway for Walmart. That is a good answer for Walmart. It is not an answer for the independent shoe brand on Shopify, the kitchen store on WooCommerce, or the specialty retailer running its own stack. Most of them will never build an MCP server or write terms for agents. They still want to sell to people who shop through agents. That gap is what Agora fills. What a universal catalog means A universal catalog is one index of products from many stores, behind one interface. In practice it has four parts. Ingestion. We bring stores into the catalog in three ways: platform-specific connectors for the big commerce systems such as Shopify and WooCommerce, custom connectors for selected merchants with their own stacks, and live data partnerships with larger retailers and marketplaces. Normalization. Every product lands in the same data model, no matter where it came from. A product has an id , a slug , a name , a brand , a price , an availability status, a store, and a list of variants , each with its own id, title, price, and availability. An agent learns this shape once and uses it everywhere. Freshness. The catalog refreshes daily. Daily is good enough for search and ranking. It is not good enough for a purchase, because prices and stock change during the day. So when an agent opens a product or adds it to a cart, we check the live price and stock with the store. This is a deliberate tradeoff. A full real-time index of a million stores would be expensive and fragile. A daily index with live checks at the point of decision gives the agent fresh numbers where they matter. Transactions. Search is only half the job. One cart can hold products from different stores, and one checkout places the order for all of them. Afterwards, one endpoint reports order status and tracking. Two ways in Agents today come in two broad types, and they want different things. So Agora has two interfaces over the same catalog. | Agent type | Examples | Auth | Workflow | |---|---|---|---| | Browser / DOM agent | Perplexity, OpenAI Operator, Claude Computer Use, Browser-Use | None for search and product pages | /agent/search → /agent/product/ slug → agent-add-to-cart → /agent/cart → /agent/checkout | | Programmatic / API agent | Custom LLM tools, MCP servers, backend scripts | Bearer API key | /api/search → product JSON → /api/agent/cart → /api/agent/checkout | Both start in the same place. An agent can fetch a JSON manifest at GET /api/agent-routes that lists the live routes, the DOM selectors, and the schema contracts. The same protocol is published in Markdown at /agents.md https://www.searchagora.com/agents.md and /llms.txt , because many agents read Markdown more reliably than they read HTML. The full contract is on our agent routes page https://www.searchagora.com/agent . The browser interface We could have told browser agents to use the API. Most of them can't. Browser agents are general-purpose. They don't read our docs before they arrive, and they don't carry API keys. They land on a page and try to make sense of it. So we built pages that are easy to make sense of. The /agent routes are a separate interface from our consumer site. They render the same catalog with a few rules. Everything is addressable by URL. An agent doesn't need to find a search box and type into it. It can open /agent/search?q=quiet%20dishwasher&page=1 directly. Fewer steps means fewer chances to fail. Selectors are a contract, not an accident. Every element an agent needs has a stable id or a data-agent- attribute: agent-product-list , .agent-product-item , agent-add-to-cart , agent-submit-order . These don't change when we change the design. Each product card carries its id, slug, name, and price as attributes, so an agent can read a results page without parsing any visible text: