llms.txt & Depth Model
Two build-time endpoints, served by the Astro integration, that give AI agents a curated map of your published content — no crawling required.
llms.txt
GET /llms.txt
Follows the llms.txt convention: a plain-text, Markdown-formatted index of every published entry, grouped by collection, with a one-line summary per entry (summaryMachine, falling back to excerpt, then humanSummary, then the title).
# My Site > A site about things. - Home: https://your-site.com - Full content: https://your-site.com/llms-full.txt - JSON Feed: https://your-site.com/orbiter/feed.json - Sitemap: https://your-site.com/orbiter/sitemap.xml ## Posts - [My First Post](https://your-site.com/posts/my-first-post): A short summary. - [Another Post](https://your-site.com/posts/another-post): ...
All collections are included by default. To restrict which collections appear, set the llms.collections setting (comma-separated collection IDs) — there's no dedicated UI for this yet, so set it via the meta API:
curl -X PUT https://your-site.com:4322/api/meta/llms.collections \
-H "Authorization: Bearer <admin-session-token>" \
-H "Content-Type: application/json" \
-d '{"value": "posts,pages"}' llms-full.txt
GET /llms-full.txt
Same index, but with full body content inlined instead of one-line summaries — for agents that want everything in a single fetch.
JSON Feed + Depth Model
GET /orbiter/feed.json
A JSON Feed v1.1 document. Every item includes an _orbiter block (collection, slug, and — when present — author, authorship, contentType, dossierId).
Progressive disclosure with ?depth=
Schema fields can carry a depth property (0–3), letting you tier how much detail a request gets:
| Depth | Intent |
|---|---|
0 | Narrative — title, body, excerpt. What a human reader sees. |
1 | Research — supporting fields (hypothesis, test setup, findings, ...) |
2 | Evidence — claims, sources, relationships |
3 | Machine — provenance and agent-facing fields (authorship, machine summary, suggested prompts, ...) |
GET /orbiter/feed.json?depth=1 # narrative + research fields only GET /orbiter/feed.json?depth=3 # everything GET /orbiter/feed.json?collections=posts,dossiers
Fields without an explicit depth are treated as depth 0. Omit ?depth= entirely to get every field regardless of tier.
depth: it's a per-field schema property, same place as type and label. The built-in Dossier template (Schema tools) is the reference example — its fields span all four depth levels, grouped into Content, Research, Evidence, Meta, Provenance, and Agent sections.Use cases
- Give an AI agent a single entry point (
/llms.txt) instead of expecting it to crawl your sitemap - Serve different levels of detail to different consumers — a chat agent might want depth 0, a research pipeline depth 3
- Combine with the MCP Server or Public Content API for agents that need to query rather than just fetch a static index