llms.txt at the root of your docs site that lists, in plain Markdown, the resources you want LLMs to know about.
Exa proved this works in production. Their llms.txt has a single line under ## Integrations pointing to nevermined.md, and that’s it — every agent that reads their docs index now knows the Nevermined integration exists, what it costs, and how to invoke it. This page covers how to do the same for your service.
The two files you need
A line in your llms.txt
Add an
## Integrations section (if you don’t have one) and a single line linking to your Nevermined integration page. That’s the entry point — every LLM-aware crawler that reads your llms.txt will follow this link.What goes in nevermined.md
Six sections, in this order:
| Section | Why it’s there |
|---|---|
| Intro | One sentence: what your service does, what the integration enables. |
| Buy a key | The endpoint URL + the payment-signature header. The “API surface” of the integration. |
| What $X buys | Pricing table mapping the plan price to concrete units in your product (e.g. “1000 searches”, “10,000 documents”). |
| Sample request | A complete, copy-pasteable TypeScript snippet. The reference for any agent that needs to generate code. |
| Parameters you get from Nevermined | Plan ID, scheme (nvm:card-delegation), spending limit, network — the concrete values an agent needs to substitute in. |
| When the key runs out | The HTTP 402 response shape (status code, error tag, message). Agents must key off tag: "NO_MORE_CREDITS", not your human-readable error string. |
| References | Links to your full API docs, Nevermined docs, x402 spec. |
Copy-paste template
The same templates ship inside theweb-search-paid-api-ts tutorial under src/llms-txt-template/. Pull them from there if you’d rather grab the raw files.
llms.txt (root of your docs site)
nevermined.md (next to your other integration docs)
Where to host the files
| File | Hosting location | Why |
|---|---|---|
llms.txt | Root of your docs site, e.g. https://yourservice.example/docs/llms.txt | The llms.txt convention says “at the root”. Crawlers look there first. |
nevermined.md | Next to your other integration docs, e.g. https://yourservice.example/docs/integrations/nevermined.md | URL must be stable — the llms.txt entry references it by absolute URL. |
.md mirrors next to your HTML pages, you’ll need to add that. Mintlify-based sites get it automatically; for other doc tools the easiest path is dropping the file in public/ or whatever your static-asset folder is called.
Test it before agents see it
Verify the file is reachable
curl https://yourservice.example/docs/llms.txt and curl https://yourservice.example/docs/integrations/nevermined.md should both return 200 with the expected content. No JavaScript redirects, no auth walls.Validate the sample request
Run the TypeScript snippet in your
nevermined.md against your real endpoint, using a sandbox plan. If your own copy-paste doesn’t work, no agent’s will either.Have an LLM follow the chain
Paste your
llms.txt URL into Claude, ChatGPT, or any agent that supports web fetching, and ask: “I want to use {{SERVICE_NAME}}. Read the llms.txt and explain how an agent would pay for and use this service.” The summary should match what you actually built — if it doesn’t, your nevermined.md is ambiguous.Known agent rakes
Tips collected from running real agents against real integration pages. This list will grow as we validate more agents against the pattern.This section will be populated after the multi-agent validation pass that follows nevermined-io/nvm-monorepo#1684. For now, the test it before agents see it checklist above covers the basics.
Related
- Monetize paid APIs for agents — the use case this discoverability layer plugs into
- API Providers — implementation guide — the server-side handler this integration page describes
- llms.txt specification — the broader convention
- Exa’s live
llms.txtandnevermined.md— production reference