This documentation site serves machine-readable twins of every page, following the `llms.txt` convention — so an agent can pull exactly the docs it needs (or all of them) instead of scraping HTML.

| Endpoint                   | Contains                                                | Pull it when            |
| -------------------------- | ------------------------------------------------------- | ----------------------- |
| `/llms.txt`                | Spec map — H1, summary, curated links, Optional rest    | The agent needs the map |
| `/llms.json`               | Same catalogue as JSON (`slug`, `html`, `markdown`)     | Structured clients      |
| `/llms-full.txt`           | All pages concatenated; teaching figures as blockquotes | Whole-docs context      |
| `/llms.mdx/docs/⟨slug⟩.md` | One page as source markdown                             | One page — e.g. Vault   |
| `/changelog`               | Index of minor-version release-note pages               | Recent history          |
| `/llms/agents`             | The `AGENTS.md` contract                                | Session bootstrap       |
| `/robots.txt`              | Allow-all, including named AI crawlers                  | Crawler policy          |
| `/sitemap.xml`             | HTML pages plus the machine endpoints                   | Crawler map             |

## Use them

```bash
curl https://oke.omqkhafi.dev/llms.txt
curl https://oke.omqkhafi.dev/llms.json
curl https://oke.omqkhafi.dev/llms-full.txt
curl https://oke.omqkhafi.dev/llms.mdx/docs/elements/vault.md
curl -H "Accept: text/markdown" https://oke.omqkhafi.dev/docs/elements/vault
curl https://oke.omqkhafi.dev/llms/agents
```

<Callout title="Which one first?">
  Start with `/llms.txt`. Fetch `/llms-full.txt` only when breadth matters more than tokens.
  Per-page `/llms.mdx` is the precise instrument. `/llms.mdx/docs/⟨slug⟩/content.md` still works.
</Callout>

The homepage **Onboard AI** button copies a one-line prompt that points an agent at
`/llms.txt` plus `/llms/agents` on this origin — project-wide context, not a single docs page.

HTML docs pages advertise `rel="alternate"` `type="text/markdown"` to the twin.
`Accept: text/markdown` on the same URL returns that twin and sets `Vary: Accept`.

`/llms.txt` opens with **When to use this** — The Problem, The Model, AGENTS.md,
MCP, CLI, errors, npm, GitHub — then the curated map.

Crawlers that honor `robots.txt` are allowed; `/sitemap.xml` lists the handbook and the machine entry points.

## How it pairs with the docs MCP

These endpoints serve the _published_ docs of the framework. During `oke dev`, the [docs MCP server](/docs/ai/mcp) also runs on :6536 (`oke.docs.search` / `oke.docs.get`), answering from the same content over the MCP protocol — pick the plain HTTP endpoints for one-shot context, the MCP tools when the agent is already connected as a client.

## Learn more

- [MCP](/docs/ai/mcp) — runtime and docs MCP servers
- [Agent contracts](/docs/ai/skills) — teaching agents the vocabulary these pages use
- [Reference](/docs/reference/configuration) — the most-cited pages for config questions

## Next

<Cards>
  <Card title="MCP" description="Runtime :6535 · docs :6536." href="/docs/ai/mcp" />
  <Card
    title="Skills"
    description="AGENTS.md and the shipped agent skills."
    href="/docs/ai/skills"
  />
  <Card title="AI element" description="Models inside your app." href="/docs/elements/ai" />
</Cards>
