The /.well-known/ files and headers that tell AI agents how to use your site
There is a quiet convention for telling an AI agent how to use your site: a few files under /.well-known/ and a handful of HTTP headers, all in predictable places. Most sites expose none of them. Here is what each one does and which are worth your time.
Last updated June 17, 2026AI agents look for machine-readable signals in predictable places: manifest files under /.well-known/ and a few HTTP headers that hand over clean content. Together they tell an agent who you are, what it may call, and how to read you without scraping HTML. As of 2026 the space is fragmented and mostly optional, so ship the cheap, settled parts (markdown delivery) and add the agent manifests only if agents are a real channel for you.
- Markdown delivery is the cheap win: honour
Accept: text/markdown, serve a.mdvariant, or point to one with aLinkheader. Any one is enough. - The manifests under
/.well-known/split three ways: declarative identity (ai-agent.json), agent-to-agent discovery (agent-card.json), and callable tools (MCPserver-card.json). - MCP and agent cards only earn their keep on sites with real endpoints (commerce, bookings, APIs), not on a blog or a brochure.
- The formats are young and still moving, so do not over-invest in any single unsettled manifest. Ship the settled basics first.
There is a quiet convention for telling an AI agent how to use your site: a small set of files under /.well-known/ and a few HTTP headers, all in predictable places so an agent can find them without guessing. Most sites expose none of them, and most sites do not need all of them. This is the map of what exists in 2026, what each one does, and the short list actually worth shipping. It is the deepest layer of agent readiness, the one almost nobody has reached yet.
01 · The conventionWhat /.well-known/ is, and why agents use it
A standardised directory at the root of a domain (defined in RFC 8615) where services publish machine-readable metadata at predictable URLs, so a client can find it without being told where to look. Originally used for security contacts and TLS validation, it is now where AI agents look to discover what a site is and what it can do.
The idea is old and boring, which is exactly why it works. Instead of every service inventing its own place to publish metadata, they agree on one prefix: /.well-known/. A client that wants your security contact, your certificate-validation file, or your login configuration knows precisely where to look. You have met it before:
/.well-known/security.txtlists who to contact about a vulnerability./.well-known/acme-challenge/is how Let’s Encrypt verifies you own the domain./.well-known/openid-configurationtells an app how to authenticate against you.
AI agents now use the same shelf. Rather than scrape your homepage and infer what you are, an agent can fetch a known path and read a structured answer. That is the whole move: predictable location, machine-readable content, no guessing.
02 · The manifestsThe files that describe you to an agent
Several competing manifests live under /.well-known/, and they answer different questions. They sit alongside the root-level files an agent also looks for, like your llms.txt and sitemap. The split that matters is declarative versus functional: some files just say who you are, others expose things an agent can actually call.
| File | What it declares | Read by | Type |
|---|---|---|---|
/.well-known/ai-agent.json |
Your identity, capabilities, contact | Any agent, no auth | Declarative |
/.well-known/agent-card.json |
An agent’s skills, inputs, outputs, auth (A2A) | Other agents | Declarative |
/.well-known/mcp/server-card.json |
Callable tools, transport, auth (MCP) | MCP clients: Claude, ChatGPT, Cursor | Functional |
A declarative file like ai-agent.json, a vendor-neutral identity spec published in early 2026, is cheap: a short JSON object with a name and description, plus optional capabilities and contact. It tells an agent who you are. It does not let it do anything.
{
"name": "Pagewatch",
"description": "Monitors any webpage for changes and alerts you instantly.",
"capabilities": ["change-monitoring", "webhooks"],
"contact": "support@pagewatch.dev"
}The functional one is the MCP server card. The Model Context Protocol is the standard agents use to call tools, and a server card at /.well-known/mcp/server-card.json lets an MCP client discover and connect to your tools automatically, instead of a user wiring it up by hand. This is the powerful end of the spectrum, and the expensive one, because you need an actual MCP server behind it.
This layer is young and fragmented. The A2A card was /.well-known/agent.json before it became agent-card.json; the MCP discovery paths are still active proposals rather than a frozen standard; and ai-agent.json is only months old. Expect names to change. Implement the manifest that matches a protocol you actually use, and do not chase every competing format.
Model Context Protocol SDK downloads a month by early 2026, across more than 10,000 public servers, after OpenAI, Google, Microsoft and AWS adopted Anthropic’s protocol. The rails are real, even though almost no consumer site exposes a discovery file yet.
03 · Content negotiationThe headers that hand agents clean content
Files under /.well-known/ tell an agent what you are. Headers tell it how to read you. The cheapest and most useful thing here has a name now: serving markdown to agents.
When an agent fetches a page it wants clean text, not your navigation, scripts, and styling. There are four interchangeable ways to give it that, and any one is enough:
- Honour an
Accept: text/markdownrequest header by returning markdown. - Publish a
.mdversion at the same path, so/pricinghas a sibling/pricing.md. - Add a link to the markdown version in your HTML head.
- Send a
Link:response header pointing at the markdown version.
<link rel="alternate" type="text/markdown" href="/pricing.md" />Cloudflare, which coined the “markdown for agents” label, pairs these with its own Content-Signal and x-markdown-tokens headers, but the conventions work on any web server. There is also a small, growing set of authentication headers (HTTP message signatures, used by Web Bot Auth) that let a well-behaved agent prove which company it belongs to, so you can trust it rather than guess from a spoofable user-agent string. That ties into your crawler-access decisions, and it matters more for high-traffic sites than for most indie products.
04 · The honest triageWhat is actually worth shipping
Almost nobody exposes any of this, which makes it tempting to either ignore it entirely or over-build it. Both are mistakes. Sort it by cost and payoff:
| Ship now (cheap, settled) | Ship if you have endpoints | Skip unless you are sure |
|---|---|---|
| Markdown delivery (one of the four methods) | MCP server-card.json over a real server |
Multiple competing identity manifests |
ai-agent.json, a few lines of JSON |
A2A agent-card.json if you run agents |
Hand-rolling a format before it settles |
The rule of thumb: declarative is cheap, functional is expensive. A few lines of JSON declaring who you are costs nothing and helps a curious agent. An MCP server that exposes real, callable actions costs real engineering, and only pays off if your site has something to do, like a booking, a price check, or an API. A blog does not. A configurator or a checkout does. Build the functional layer when an agent calling it would genuinely help your user, not because a scanner handed you a red mark.
Find out which agent signals you already expose
Most sites expose none and have no idea. Nilkick probes your /.well-known/ paths and content headers as part of your readiness report, then shows which are present, which are missing, and which are worth adding for your kind of product.
05 · VerificationHow to check what you expose
You can check most of this from a terminal in a minute. Request a page the way an agent would, and see what comes back:
curl -s -H "Accept: text/markdown" https://yourdomain.com/pricing | head
curl -s https://yourdomain.com/pricing.md | headThen hit the well-known paths directly, and confirm they return JSON rather than a 404 or your HTML not-found page:
curl -s https://yourdomain.com/.well-known/ai-agent.json
curl -s https://yourdomain.com/.well-known/mcp/server-card.jsonIf you would rather not do it by hand, a few free checkers cover the same ground: Cloudflare’s isitagentready.com for the broad picture, markdown-for-agents checkers for content negotiation, and Nilkick’s readiness report for these signals alongside the rest. Expect almost everything to come back missing. That is normal, and it is the opportunity, because this is the layer where being early costs the least.
Common questions
/.well-known/security.txt and the files that issue TLS certificates. AI agents now use it the same way, to find out who you are and what you can do./.well-known/mcp/server-card.json advertises callable tools, which makes sense for commerce, APIs, and configurators. For a blog or a marketing site there is nothing to call, so a declarative manifest or clean markdown delivery is plenty.llms.txt lives at your root, not under /.well-known/, and it is a curated reading list for language models. The /.well-known/ manifests are about machine discovery and action: who you are and what an agent may call. They complement each other, and most of llms.txt’s real audience today is the same developer tooling that reads these manifests..md version of your important pages, or honouring an Accept: text/markdown header, helps the AI coding tools and agents that already fetch content today. Add /.well-known/ manifests later, and only if your site has actions worth exposing.Get your free launch-readiness score
See what else is between your product and its first real users — Nilkick scores your readiness and hands you the map. Free, no login.
https:// optional · no account · we don't email you
What is agent readiness?
Agent readiness is how well your site can be discovered, parsed, and acted on by AI agents. What it means in 2026, what actually matters, and what is hype.
Should you block or allow AI crawlers? The GPTBot and ClaudeBot decision
A clear decision framework for AI crawlers in 2026: block the bots that only train, allow the ones that answer, and avoid quietly deleting yourself from AI search.
llms.txt in 2026: do AI crawlers actually read it?
Independent server-log studies show AI search crawlers almost never fetch llms.txt, yet Google PageSpeed Insights now audits for it. Here is what that means in 2026.