llms.txt and Markdown Exports

Public docs can be consumed without an agent key through machine-readable endpoints.

Markdown on docs URLs

An agent can ask for the Markdown of any docs page at its normal URL:

GET /docs/{workspace}/{slug}
Accept: text/markdown

GET /docs/{workspace}/{slug}.md

The response has Vary: Accept, so a cache keeps the HTML and the Markdown apart. The workspace landing answers with its llms.txt index, and the changelog page with the changelog in Markdown.

Site index

GET /llms.txt

The index lists public workspaces and article Markdown URLs for the current host. A workspace with published changelog entries also lists its changelog feed, and a workspace with a public OpenAPI spec lists the spec. The index ends with an Agents section that links the full text and, when a workspace allows AI agents, the MCP endpoint.

Full text

GET /llms-full.txt
GET /llms-full.txt?workspace={workspace}

The full text holds the Markdown of every page that the index lists, in one file. A very large site ends with a note that names the index.

Raw article Markdown

GET /w/{workspace}/{slug}.md

Only public, published articles without a password or end-to-end encryption are exported. Drafts, articles in review, private articles, password-locked articles and encrypted articles stay unavailable to anonymous readers. The raw Markdown route returns 404 for an encrypted article, for members too.

A generated API reference page keeps only the curl sample of each request, because the samples in the other languages send the same request.

Changelog feeds

GET /w/{workspace}/changelog.rss
GET /w/{workspace}/changelog.md

The feeds hold the published entries whose publish time has come.

OpenAPI spec

GET /w/{workspace}/openapi.json
GET /w/{workspace}/openapi.yaml

A public workspace serves the OpenAPI spec that is attached to it, in the format that it was attached in. A request for the other format redirects. The route returns 404 when a page that came from the spec isn't open to anonymous readers, so the spec never shows an operation whose page your team keeps internal, private, unpublished, or locked.

AI policy in robots.txt

Each public workspace has an AI policy in Admin > Settings > Publishing > AI access. It allows or blocks 3 groups apart: AI search crawlers such as OAI-SearchBot, AI training crawlers such as GPTBot and ClaudeBot, and AI agents that fetch a page for a person, such as ChatGPT-User. robots.txt follows the policy. When every public workspace has the same policy, robots.txt also has a Content-Signal line. Blocking AI agents also turns off the public MCP endpoint for that workspace.

robots.txt is a request, not a wall. A crawler that ignores it is not blocked, so keep content that must stay private in an internal or private workspace.