# What Is a Machine-Readable Catalog?

> What a machine-readable catalog is, which channels search engines and AI agents read it through (markup, feeds, tools) and how to check yours.

URL: https://clione.ai/glossary/machine-readable-catalog/
Lang: en

"Machine-readable catalog" is not the name of a standard or of a file you download: it is the way to describe a catalog that **a program can read fact by fact, without guessing**. The adjective does have a definition, and the W3C gives it: machine-readable data is data in a standard format that a computing system can read and process automatically. A word-processing document or a PDF is easy for people to read but hard for a machine to interpret; XML, JSON, RDF and CSV, by contrast, are machine-readable formats.[^w3c-dwbp] Applied to a store, the [product catalog](/glossary/product-catalog/) already lives in fields inside the platform; what makes it machine-readable is **how it leaves the store**. It matters to a store because more and more readers are not people but search engines, assistants and [AI agents](/glossary/ai-agent/) that pick products from whatever they manage to read.

## What it includes

A single catalog leaves through four channels, and each reader uses its own:

| Channel                                                  | What it is                                                                     | Who reads it                                                                              |
| -------------------------------------------------------- | ------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------- |
| The text of the [product page](/glossary/product-page/)  | The HTML the buyer sees                                                        | Search engines and assistants that retrieve the page                                      |
| The page's [structured data](/glossary/structured-data/) | Markup, normally [JSON-LD](/glossary/json-ld/), with the product and its offer | Google and other systems that interpret the page                                          |
| The [product feed](/glossary/product-feed/)              | A file with one row per product or variant                                     | [Google Merchant Center](/glossary/google-merchant-center/), ChatGPT and other platforms  |
| Tools for agents                                         | Functions an agent calls to search, look up or create a cart                   | Agents connected through protocols such as [MCP (Model Context Protocol)](/glossary/mcp/) |

**The page text** is the most basic channel and the one that breaks most. Microsoft warns that AI systems may not process content hidden in tabs or dropdown menus, and so skip key data, and that putting key information only in images adds complexity and often reduces accuracy.[^microsoft-ai-search]

**Structured data** turns text into typed data. Microsoft describes it as the code that helps search engines and AI systems understand a piece of content and classify it with confidence as a product, a review or a frequently asked question.[^microsoft-ai-search] Google recommends giving product data both ways, markup on the page and a Merchant Center _feed_, because that way **you qualify for more experiences and help it understand and verify your data**; some experiences combine the two sources.[^google-product-sd]

**The feed** is the channel for platforms that do not read your site to buy. ChatGPT's, for example, accepts TSV, CSV or JSONL files and asks for a stable identifier, title, description, URL, brand, seller, image, availability and price on every row.[^openai-feed-spec]

**Tools** are the newest channel. Shopify gives agents, at an address on each store (`/api/ucp/mcp`), functions to search the catalog, look up a product and create or update a cart, and asks that every request include the agent's profile.[^shopify-storefront-mcp] An agent uses them through [_tool calling_](/glossary/tool-calling/): it asks for the function, and the platform answers with data in fields.

### The three conditions

Having all four channels is not enough. A catalog is machine-readable when it meets three conditions:

1. **Data in named fields.** Capacity, material or size have their own field; they do not live only in a sentence of the description or in a photo. That is the difference the W3C draws between a PDF and a format such as JSON or CSV, which a system reads and processes automatically.[^w3c-dwbp]
2. **The same value in every channel.** If the feed says one price and the markup another, Google sees two versions of the same product, and some of its experiences mix the two sources.[^google-product-sd]
3. **Up-to-date data.** OpenAI asks you to send the current stock status on every row and to update the feed when a sale starts or ends.[^openai-feed-spec] Stale data reads just as well as correct data, and the agent takes it at face value.

## In a store

A **fictional example**: a mountain gear store sells a 30-liter backpack. This is how the capacity, the fact that decides the purchase, stands in each channel before the fix:

| Channel                                         | What a program finds                                        | Readable? |
| ----------------------------------------------- | ----------------------------------------------------------- | --------- |
| Page text                                       | "Capacity: see table", and the table is an image            | No        |
| Structured data                                 | The name, the price and whether it is in stock; no capacity | No        |
| [ChatGPT feed](/glossary/chatgpt-product-feed/) | "Ruta Backpack 30 L" in the title, with no field of its own | Partly    |
| Platform tool                                   | The capacity in a custom field, 30                          | Yes       |

An agent that filters backpacks "over 28 liters" by the product page discards it; one that asks the tool finds it. **The same product exists for one reader and not for another.** The fix starts in the catalog: the capacity in a field, and from there into the page text, the markup and the feed. Clione works at that point: from the enriched catalog it publishes each product page's JSON-LD graph, uploads a feed every day to the SFTP account OpenAI gives the merchant and serves one Markdown document per product on the store's own domain.


That a catalog is machine-readable because it has a file for AI, like an [`llms.txt`](/glossary/llms-txt/), or because it has a feed. Each channel has its own reader. Google says you do not need to create machine-readable files or special markup to appear in its Search, and that for products to show in its AI answers what helps is the Merchant Center _feed_;[^google-ai-guide] ChatGPT, on the other hand, receives products through its own feed,[^openai-feed-spec] and a Shopify agent queries them with tools.[^shopify-storefront-mcp] **A perfect channel does not cover for a wrong fact in another**: if the product page and the feed do not match, the reader that uses the bad channel walks away with the bad fact.


## How to check it

1. **Read the product page without images or tabs.** Price, stock, variants, shipping and the attributes that decide the purchase have to be in the text.[^microsoft-ai-search]
2. **Run the page through a [schema validator](/glossary/schema-markup-validator/)** and check that the markup carries the product with its [price and availability](/glossary/price-and-availability/). If the price is missing, Google may take the one from the _feed_ for the product snippet, and then the channel you look at least decides.[^google-product-sd]
3. **Compare the product page, the markup and the feed** for ten products: title, [price and availability](/glossary/price-and-availability/) have to match in all three.[^google-product-sd]
4. **Review the fields of the ChatGPT feed** if you send one: the required ones filled in and availability set to one of its accepted values.[^openai-feed-spec]
5. **Change a product's price and note when it changes in each channel.** The slowest one decides what an agent reads that day.[^openai-feed-spec]

## Related concept: product catalog

The product catalog is the store's database: every product with its variants, attributes and prices in fields, inside the platform. A machine-readable catalog is **that same catalog seen from the outside**, published through channels a program knows how to read. One can be tidy on the inside and unreadable on the outside, if what gets published is an image or a paragraph; it does not happen the other way around, because every channel inherits the catalog's errors. That is why the work starts with [catalog enrichment](/glossary/catalog-enrichment/).

To go further, [agentic commerce](/glossary/agentic-commerce/) explains who buys with this data, and the [agentic commerce reading path](/learn/agentic-commerce/) orders the protocols that carry it.
