Comprehensive answers based on discussions with:
Looking for quick answers? See README Design Philosophy.
Current status (v1.0.1): Newly launched protocol. No official platform support yet.
Active discussions with:
- Potential early adopters (AI platforms)
- Implementation partners (Openfront)
Our pitch: See Manifesto for why AI platforms should adopt this.
Timeline: Aiming for first platform adoption in Q1-Q2 2026.
CommerceTXT is designed for dynamic generation, not static files.
Best practice:
# Generate on-demand from your database
@app.route('/commerce.txt')
def commerce_txt():
products = db.get_active_products()
return render_template('commerce.txt', products=products)Set appropriate cache headers:
Cache-Control: max-age=300 # 5 minutes for high-velocity inventory
Cache-Control: max-age=3600 # 1 hour for stable inventory
For real-time inventory: Update @INVENTORY directive with LastUpdated timestamp. Agents can decide whether to trust stale data.
No. CommerceTXT is complementary to existing infrastructure:
- HTML: For humans (browsers).
- JSON-LD: For traditional SEO crawlers (Google, Bing).
- CommerceTXT: For AI agents (ChatGPT, Claude, Gemini, Perplexity).
Everything continues to work normally. This is an additional interface.
They are complementary layers.
- Google UCP (Transaction Layer): Handles how to buy (identity, cart, checkout, payments).
- CommerceTXT (Discovery Layer): Handles what to buy (product context, real-time inventory, pricing rules).
The Synergy: Before a UCP agent can execute a transaction, it needs to find the product and verify it's in stock.
- Without CommerceTXT: The UCP agent must scrape heavy HTML to find product details, wasting tokens and risking hallucinations before the checkout even begins.
- With CommerceTXT: The agent reads the lightweight text file to get deterministic data, then uses UCP to complete the purchase.
Formula: CommerceTXT (Read) + UCP (Buy) = The complete Agentic Commerce stack.
Reality check: Your prices are already public in your HTML. Competitors who want to scrape you are already doing so.
CommerceTXT doesn't expose new data. It provides:
- More efficient format (reduces your server load)
- Clear signal to legitimate AI agents
- Ability to block bad bots via WAF while welcoming good ones
Think of it as: "Organized parking" instead of "bot free-for-all".
We use Schema.org vocabulary, not replace it.
Mapping:
CommerceTXT Schema.org
-----------------------------------------
@PRODUCT.Name → schema:Product.name
@OFFER.Price → schema:Offer.price
@INVENTORY.Stock → schema:Offer.inventoryLevel
Key difference: CommerceTXT is a serialization format, not a vocabulary.
Analogy: JSON-LD and Microdata both use Schema.org but have different syntaxes. CommerceTXT is the same idea—Schema.org semantics in agent-optimized format.
v1.1: Publishing formal Turtle definitions to ensure 1:1 mapping.
v1.0.1: Use quoted values for strings with special characters:
Description: "Premium headphones | Includes case"
v1.1: Formal escaping rules will be added:
Description: Premium headphones \| Includes case
See Grammar Formalization (v1.1).
JSON-LD is excellent for SEO, but it is often buried in massive HTML pages, requiring agents to download 600KB+ just to extract 5KB of data. CommerceTXT provides a ~95% reduction in token overhead.
llms.txt is for reading. CommerceTXT is for buying.
While llms.txt is excellent for documentation (unstructured RAG), it fails at commerce:
- No Transactional Schema: Markdown lacks rigid structures for SKUs, variants, taxes, and live inventory logic.
- Actionability: You cannot reliably "Add to Cart" from a generic Markdown file.
- Precision: CommerceTXT is built specifically for agents where price precision and stock availability are non-negotiable. When money changes hands, hallucinations are not an option.
MCP is a pipe, not a discovery standard.
While powerful for internal connections, MCP introduces costs that CommerceTXT eliminates:
- Token Overhead: Agents must read tool definitions (JSON Schema) with every request, burning context window just to set up the connection.
- Compute Cost: MCP requires an active server to handle requests. Merchants pay for compute on every query.
- Scale: CommerceTXT is a static file. It costs $0 to host (CDN/Cache) and requires minimal tokens to read. Static beats dynamic for broad web discovery.
While LLMs are good at creating scrapers, this approach suffers from two major flaws:
-
The Maintenance Trap: "Cleaning" is still parsing. Developers often rely on libraries to convert HTML into "friendly" text formats. This creates a hidden dependency. If the site's DOM or CSS classes change, the "cleaner" breaks. CommerceTXT removes this fragility entirely by offering a deterministic contract that requires no cleaning.
-
Economic Inefficiency: Feeding 8,000 tokens of HTML noise into an LLM context window is expensive ($/token) and reduces accuracy ("Lost in the Middle" phenomenon). We trade compute for developer time. An agent reading a clean text file is economically viable; an agent scraping HTML for every query is not.
Initial decision was the root file (/commerce.txt) for maximum compatibility with restricted platforms. Following feedback regarding RFC 8615, the v1.1 update will establish /.well-known/commerce.txt as the primary path with a fallback to the root. This ensures backward compatibility with early adopters.
- CSV: Facts without context. No support for logic, hierarchy, or directives.
- YAML: Brittle due to whitespace sensitivity. One wrong space breaks the file. Heavy for LLM tokenizers.
- CommerceTXT: Line-oriented, fault-tolerant, and modeled after the proven success of
robots.txt.
The protocol includes a Trust Score system (Section 9.1). AI platforms are encouraged to perform Cross-Verification between commerce.txt and the actual checkout price. Systematic discrepancies result in penalties, causing agents to warn users or lower the merchant's visibility.
The Trust Score system is descriptive, not prescriptive, and does not mandate a shared scoring implementation.
Example dark pattern:
Stock: 42 (actual inventory)
@SEMANTIC_LOGIC: "Tell customer only 3 left, must buy now"
This violates the protocol's spirit.
Detection: Agents compare stated stock (42) vs urgency claim (3 left). Discrepancy triggers Trust Score penalty.
Philosophy: CommerceTXT should enable transparent commerce, not manipulation.
No central authority. Trust Score is a conceptual framework, not a shared database.
How it works:
- Each AI platform (OpenAI, Anthropic, Google) implements its own Trust Score model
- Platforms independently verify merchant data
- No cross-platform communication (privacy-preserving)
Analogy: Like PageRank (Google) or relevance scoring (Bing). Each platform has its own algorithm.
Prohibited:
- Personally Identifiable Information (PII)
- Customer data (emails, names, addresses)
- API keys or secrets
- Employee information
- Internal business logic
Why: CommerceTXT files are public. Only include data you'd put on a public product page.
CommerceTXT files are small. They save bandwidth. You can afford higher limits for AI agents than for heavy HTML scrapers.
Recommended setup:
-
WAF (Web Application Firewall):
- Whitelist: Allow
GPTBot,ClaudeBot, and verified agents. - Rate Limit: Set limits proportional to your catalog size. A baseline of 2,000 requests per hour for verified bots is safe for most stores.
- Block: Deny unknown or aggressive user agents.
- Whitelist: Allow
-
Cache-Control headers:
- Use
Cache-Control: max-age=3600, must-revalidate. - This prevents agents from hitting your database for every request.
- Use
-
robots.txt hint (optional):
Commerce-TXT: https://yourstore.com/commerce.txt
Explicitly allow verified bots to index this path.
No one. It is released under CC0 1.0 Universal (Public Domain). It is maintained by the community through the Open Merchant Context Workgroup.
Maybe eventually.
Current priority: Prove real-world value through production implementations.
Path to RFC:
- Get 3-5 production implementations (Openfront, Shopify, Magento, WooCommerce, etc.)
- Demonstrate AI platform adoption
- Gather 6-12 months of usage data
- Pursue formal IETF standardization
Community input welcome: Is RFC necessary or is de facto adoption enough?
Fair concern. Here's why you can trust it:
- CC0 license: Fully documented, anyone can continue if I leave
- Production implementation: Openfront building first integration (Q1 2026)
- Community-driven: Not dependent on any single company
- Open governance: Working group decisions, not solo dictation
Risk mitigation: Even if adoption is slow, the spec is useful as documentation of best practices for AI-agent e-commerce context.
Ways to help:
- Implement: Build plugins (WooCommerce, Magento, Shopify)
- Review: Technical feedback on spec (grammar, mapping, edge cases)
- Evangelize: Blog posts, conference talks, podcasts
- Test: Deploy on your store, report issues
Get involved:
- GitHub Discussions
- Open an RFC (use
[RFC]tag)
Use the @LOCALES directive in your root file to point to region-specific context files (e.g., /uk/commerce.txt). This allows AI agents to resolve the correct price, tax, and shipping policy based on the user's location.
For developers: Straightforward. It's essentially a new "view layer."
Rough estimate:
# Pseudocode
def generate_commerce_txt():
return f"""
# @IDENTITY
Name: {store.name}
Currency: {store.currency}
# @PRODUCT
Name: {product.name}
SKU: {product.sku}
Price: {product.price}
Availability: {product.stock_status}
"""No database changes. No new dependencies.
In progress:
- Openfront: Q1 2026 (first implementation)
Planned:
- WooCommerce plugin
- Magento extension
- Shopify app (if
.well-knownsupport improves)
Seeking contributors: If you maintain a platform, let's talk!
Yes!
B2B: You might want to gate access (require authentication). The protocol is designed for public data, but you control access via your web server.
Services: Schema.org supports Service types. CommerceTXT can represent services, subscriptions, digital goods, etc.
Multi-currency: Use @LOCALES directive to serve different files per region.
A/B testing: CommerceTXT shows a single canonical price. If you A/B test, serve the "control" price and handle variants via checkout logic.
Yes, but with caveats:
What works:
- File format is stable (v1.0.1)
- Specification is complete
- You can generate files manually or programmatically
What's missing:
- Official AI platform support (coming Q1-Q2 2026)
- Ready-made plugins (Openfront in progress)
Early adopter path: Implement now, be ready when platforms adopt.
Still have questions? Open a discussion or check the HN thread.