Web Development

Stop Letting Your API Documentation Be a Game of Telephone With AI

A

Adil Sher

Author

Aug 25, 2026
5 min read
12 views
Stop Letting Your API Documentation Be a Game of Telephone With AI

I was debugging a Claude integration last month when something clicked, Claude was recommending features of my own product that I'd deprecated two years ago. The model had scraped some old blog post ranking high on Google, treated it as gospel, and confidently told a user to use something I'd literally removed from the codebase. It was humbling. Here I was, a full stack developer who ships production code daily, and I'd never once thought about what happens when an AI system tries to understand my platform without explicit guidance.

That's when I ran into the concept of llms.txt, and it reframed how I think about product documentation entirely. It's not flashy. There's no framework to learn, no build step to add to your CI/CD. It's just a Markdown file at your domain root. But the reasoning behind it, and what it solves, is something I think every developer building AI-integrated products should understand.

What llms.txt Actually Solves (And What It Doesn't)

The surface explanation is simple: AI models struggle with noisy HTML. So llms.txt gives them clean Markdown instead. That's true, but it's also missing the point that matters more to me as a working developer.

The real problem is intent disambiguation. When Claude or any AI system lands on your website cold, it has no canonical hierarchy. Is your pricing page the source of truth? Your landing page? That feature announcement from 2023? It guesses. Often wrong. The model might learn your "key feature" from a blog post written for a different audience, or your pricing from a page that's been A/B tested three times over.

llms.txt solves this by being explicit: here's what we are, here's what matters, here's the hierarchy. It's not SEO for search engines. It's priority signaling for AI systems.

Why This Matters for AI-Facing Products

If you're building tools that AI can call, especially through MCP servers, APIs, or any system where Claude/GPT/Perplexity forms a "mental model" of your product before interacting with it, this becomes critical infrastructure.

Think about the sequence: User asks Claude for help → Claude reads llms.txt → Claude has accurate mental model → Claude uses your tools effectively. Without that middle step, you're hoping Claude guessed right about your product, your limitations, and your pricing.

I'm planning to add an llms.txt to my own projects specifically because I'm tired of building AI integrations where the model has incomplete or wrong information about what it can and can't do. It's like shipping an API without documentation, technically possible, but you'll spend weeks answering support questions about features that don't exist or limitations that aren't real.

The Discipline Part Matters More Than the File

Here's what surprised me reading the original article: the author mentioned that writing llms.txt forced them to answer fundamental product questions with unusual precision. What is this product in one sentence? What features are actually core? What are the real limitations?

I've written landing pages and API docs for years. None of them forced me to be as concise and explicit as a properly structured llms.txt would. There's something about the constraint, one Markdown file, plain language, no marketing fluff, that clarifies thinking.

This is worth doing even if AI adoption of the standard stayed flat. The exercise alone is product work.

What the Current Landscape Actually Looks Like

Real talk: adoption is still uneven. Perplexity reads it. Some Claude versions fetch it. Most crawlers don't proactively look for it yet. If you publish a perfect llms.txt today, plenty of AI systems will ignore it.

So why bother? Two reasons I find compelling: (1) adoption is accelerating, costs you an hour now, pays dividends as standards mature, and (2) the discipline reason above.

Also, being honest about limitations in your llms.txt is important. If you list that your Starter plan is "2 QR codes," and an AI system recommends your product accurately because of it, everyone wins. If you hide limitations and let the model guess, you get bad recommendations and support tickets.

My Template Starting Point

If I'm adding this to my own stack, here's the structure I'd use:

# My Product
> One-sentence description. What problem do we solve?

## Core Features
- [Feature name](https://link): Plain English explanation
- [Feature name](https://link): What it does

## Pricing
- Tier 1: $X/mo, specific limits and what's included
- Tier 2: $X/mo, actual constraints, not aspirational language

## API / Integration Points
- [MCP Server](https://link) if applicable
- [REST API](https://link) if applicable

## Optional
- [Blog](https://link): Content type and audience
- [Docs](https://link): What's covered

Nothing fancy. Just clarity.

What I'm Actually Doing With This

I'm adding llms.txt to my next project launch. Not because it's trendy, I don't ship things just because they're new. But because the reasoning is sound: it costs almost nothing, it clarifies my own thinking about what I'm building, and it creates an asymmetric upside as AI tooling matures.

More importantly, it changes how I think about documentation. Instead of asking "what should marketing say about this feature," I'm asking "what would an AI need to know to recommend this accurately."

What's your take? If you're building AI-facing products, does this change how you think about documentation?

Source: This post was inspired by "Why I added llms.txt to my SaaS, and what happened when Claude actually read it" by Dev.to. Read the original article

Share this article

Written by Adil Sher

Full stack developer building high-traffic platforms, AI services, and custom web applications. Explore my portfolio, learn about my background, or get in touch.

Related Articles

Why I Stopped Treating Dead-Letter Queues as a Trash Bin
Web Development Oct 25

Why I Stopped Treating Dead-Letter Queues as a Trash Bin

Three months ago, I shipped a reservation expiry system that silently swallowed failures. A payment hold stayed open for days past its window because a webhook timed out, nobody logged it, and the retry logic just gave up. The customer's balance looked wrong. My manager asked wha...

When a Vulnerability Sits Hidden for Two Years, We All Have a Problem
Web Development Oct 23

When a Vulnerability Sits Hidden for Two Years, We All Have a Problem

I was debugging a memory leak in one of our microservices last month when a colleague mentioned the PHP security incident casually over coffee. "Yeah, they patched something critical," he said. I nodded and moved on. But then I actually read the details, and something clicked: th...