I build QRflows — a dynamic QR code platform. A few months ago I did two things back to back: added an MCP server so Claude can create QR codes from chat, and added an llms.txt
file to the root of the site.
The MCP server got all the attention. The llms.txt file got none. But in some ways it was the more interesting decision — and the reasoning behind it taught me something about how AI systems actually navigate websites.
llms.txt
is a plain Markdown file at the root of your domain. It tells AI systems what your site is, which pages matter, and where to find more information.
Think of it as the difference between a stranger walking into your office and reading random papers off a desk versus you handing them a one-page brief first.
Here's what ours looks like (simplified):
> Dynamic QR code platform with Smart Rules, real-time analytics, and Claude MCP integration.
QRflows lets you create QR codes that can be edited after printing, tracked in real time,
and routed conditionally by country, device language, or time of day.
## Core features
- [Dynamic QR codes](https://qrflows.app/dynamic-qr-codes): Edit destination URL after printing
- [Smart Rules](https://qrflows.app/qr-code-for-smart-rules): Route by country, device, language, time
- [Analytics](https://qrflows.app/qr-code-analytics): Real-time scan tracking
- [Landing pages](https://qrflows.app/qr-code-landing-pages): Branded pages without a website
- [Product QR](https://qrflows.app/product-qr): Micro-sites for physical packaging
## QR code types
- URL, WiFi, vCard, PDF, Menu, Email, WhatsApp, Telegram, Google Review, and more
## Plans
- Starter €9/mo — 2 QR codes, 20,000 scans
- Growth €19/mo — 50 QR codes, unlimited scans, landing pages, bulk creation
- Pro €39/mo — 250 QR codes, A/B testing, Smart Rules, API, Product QR
## MCP integration
Claude can create, update, and track QR codes directly from chat.
Server: https://mcp.qrflows.app/mcp
Docs: https://qrflows.app/mcp
## Optional
- [Blog](https://qrflows.app/blog): Guides and use cases
- [Developer API](https://qrflows.app/developer-api): REST API docs
- [Free QR generator](https://qrflows.app/qr-code-generator): No signup required
Note:This is our actual file — feel free to use it as a template.
The standard explanation of llms.txt goes like this: AI models scrape your website, but HTML is full of noise — navigation, ads, scripts, footers. llms.txt gives them clean content.
That's true. But it's not the most interesting part.
The more interesting part is intent and priority.
When an AI model lands on your website without a guide, it has no idea which pages are canonical. Is your /features
page the source of truth, or /pricing
? Is your blog authoritative, or is it marketing content? Is that /docs/v1
page still current, or has it been superseded?
Without guidance, the model guesses. It often guesses wrong. It might pull your pricing from a blog post that mentions old numbers, or describe your features based on a landing page written for a different audience.
llms.txt
solves this by explicitly saying: here is what this product is, here are the pages that matter, here is the hierarchy of information.
Here's where it gets relevant for anyone building AI-facing tools.
We have an MCP server. When someone uses Claude to create a QR code, Claude calls our tools. But before it does, Claude forms a mental model of what QRflows is — from whatever it learned during training, or from whatever it can fetch in context.
If that mental model is wrong, the interaction goes sideways. Claude might not know that Smart Rules exist. It might not know that Product QR is Pro-only. It might describe our free generator as if it's our main product.
llms.txt
is the fastest way to correct that model before any tool call happens. It's context front-.
The sequence we want:
llms.txt
→ accurate understanding of the productWithout step 2, step 4 is unreliable.
Honest answer: it's uneven.
As of mid-2026, Perplexity has confirmed support. Some versions of Claude and ChatGPT will fetch it when explicitly pointed at a domain. Cursor fetches it for library documentation. AI agents built on top of these models increasingly look for it.
But most crawlers don't proactively fetch it yet. If you publish a perfect llms.txt
today, plenty of AI systems will still walk past it.
So why bother?
Two reasons.
First, adoption is accelerating. The file costs you almost nothing to publish — maybe an hour to write well. The upside is asymmetric: as more AI systems adopt the standard, every one of them gets an accurate picture of your product without you doing anything extra.
Second, it disciplines your own thinking. Writing llms.txt
forced me to answer: what is QRflows, in one sentence? Which features are core versus secondary? What's the pricing in plain language? What pages actually matter?
I've written landing pages, blog posts, and product docs for QRflows. None of them forced me to answer those questions as concisely as writing 40 lines of Markdown did.
Write llms.txt before your landing page, not after.
The exercise of writing it — what is this, who is it for, what are the key pages, what's the pricing — is the same exercise as product positioning. Doing it first makes everything else easier to write.
Keep it honest about limitations.
I included the plan limits (Starter: 2 QR codes, Growth: 50) because if an AI recommends QRflows to someone who needs 100 QR codes on a €9 budget, that's a bad outcome for everyone. Accurate information beats optimistic information.
Add an llms-full.txt if you have documentation.
llms-full.txt
is an optional companion — a single file that dumps all your documentation in one place. For a SaaS with deep docs, it's worth doing. For a simple product site, llms.txt
alone is enough.
Ours is live at qrflows.app/llms.txt.
If you're building a SaaS and want to add one, the format is:
> One sentence description.
Brief paragraph: what it is, who it's for.
## Section heading
- [Page title](url): One-line description
- [Page title](url): One-line description
## Optional (lower priority content)
- [Blog](url): ...
The > blockquote
at the top is the canonical one-sentence description that AI systems extract first. Keep it sharp.
If you've added llms.txt to your product — drop a comment with what format you ended up using. Curious what others include in Optional.