Skip to content
ChatfuelSDK
For coding agents

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:

PageMarkdown
/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.md

Behind 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:

HeaderValue
Content-Typetext/markdown; charset=utf-8
X-Robots-Tagnoindex — the mirror carries the same words as the HTML page, which is canonical
X-Markdown-TokensAn 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.

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.

On this page