This site as text
An index at /docs/llms.txt, everything in one file at /docs/llms-full.txt, a Markdown twin at every documentation address, and /SKILL.md — with no MCP server behind any of it.
The reader of a documentation page is often not a person, so every page here exists twice: once as HTML and once as Markdown, from the same build-time export. Nothing is behind a key, nothing is rate-limited, and none of it is generated on request — every surface below is static.
The index at /docs/llms.txt
The llmstxt.org shape, scoped to the documentation: an H1, a one-paragraph summary, then one section per sidebar group. The sections are built from the page tree the sidebar itself renders, so the index cannot drift from the navigation, and every link points at the Markdown twin rather than the HTML page — an agent that follows one reads text. Each entry carries that page's description.
It ends with an ## Optional section naming the full text, the site-wide index and the skill. It
is served as text/plain and carries no other header.
Everything in one file at /docs/llms-full.txt
Every documentation page concatenated, separated by horizontal rules, with a header block giving the index URL and the page count. Agents fetch it about twice as often as the index, because one request is cheaper than forty, and each page inside it keeps the same header block its own mirror has.
A Markdown twin at every address
Append .md to any documentation URL:
| Page | Markdown |
|---|---|
/docs/quickstart | /docs/quickstart.md |
/docs/reference/cli | /docs/reference/cli.md |
/docs | /docs/index.md |
A twin opens with the title, the description, the canonical page URL and its own URL, then the body. The citation comment every page carries under its frontmatter is stripped out first: it is a note to whoever edits the page, and a list of paths in another repository is not something an agent should go looking for.
The copy and view controls at the top of each page fetch that same file rather than re-deriving the text in the browser, so what a reader pastes into an agent is byte-identical to what the URL serves.
curl -sS https://chatfuel-sdk.com/docs/llms.txt
curl -sS https://chatfuel-sdk.com/docs/quickstart.mdBehind the scenes those addresses are rewrites. The App Router cannot name a dynamic segment
[[...slug]].md — a segment that does not end in ] is read as a literal directory — so the
mirror lives at /docs.md/* and two rewrites map the public address onto it, in the afterFiles
phase, which is what lets them win over /docs/[[...slug]].
The headers those carry
Both the twins and the full text carry three:
| Header | Value |
|---|---|
Content-Type | text/markdown; charset=utf-8 |
X-Robots-Tag | noindex — the mirror carries the same words as the HTML page, which is canonical |
X-Markdown-Tokens | An estimate, characters over four, so you can budget context before fetching the body |
/docs/llms.txt is the exception: it is text/plain and carries neither of the other two.
The link in every documentation page's head
Every documentation page advertises its own mirror in its head as a
<link rel="alternate" type="text/markdown">, beside the canonical URL and the two RSS feeds.
That is what lets a client discover the text version from the HTML without knowing the .md
convention. It is a docs-page thing: the marketing pages have no mirror to advertise.
/SKILL.md
This site written as a skill file, in the format a coding agent already reads. Save it into a
skills directory as it stands, or paste the URL into a prompt. It carries name and description
frontmatter, the command to run, the thirteen module skills with the --modules id each answers
to, the directory each agent reads them from, and four links out — the documentation index, the
full text, the quickstart and the source.
The skills in it come from the same registry the table on Skills is built
from, so the two cannot disagree. Unlike the .md mirrors it is not noindex: it has no HTML twin
and it is a link people share.
The site index at /llms.txt
The map of the whole site rather than the documentation: the marketing pages, the comparisons, the
module pages, the solutions, the blog and its tags. It stays short and points at
/docs/llms.txt instead of reprinting every documentation entry, and it ends with a
machine-readable section listing every surface of this kind — the two documentation indexes,
/SKILL.md, and the changelog and blog as Markdown and as RSS.
There is no MCP server
That list is the complete set, and no entry on it is an MCP endpoint. Fetching a URL is the whole
interface — no key to request, no handshake, no session. The one route not on the list is
/api/search, which is Fumadocs' search handler over the same source and exists to serve the
search box on these pages; robots.txt disallows it along with /dev/, and allows everything
else.