API — crawler routes

The contracts of robots.txt, sitemap.xml, the web manifest, the Apple icon, the share images and the noindex header.

  • Status: Current
  • Last updated: 2026-11-03
  • Related ADRs: ADR-0035

Snapshot of the system as it stands today. Edit in place; never record what changed.

All of these are prerendered at build, take no input and need no authentication. They are built only from pages already published, so a private project stays out of them by staying out of content/ (AGENTS.md §6.1).

Endpoints

MethodPathPurposeAuth
GET/robots.txtWho may crawl, and where the sitemap isNone
GET/sitemap.xmlEvery page that should be indexedNone
GET/manifest.webmanifestThe site's name, colours and iconsNone
GET/apple-iconThe brand mark, drawn at buildNone
GET/og/image.pngThe home page's share imageNone
GET/og/<page>/image.pngA page's share imageNone

GET /robots.txt

Purpose. Tells every crawler it may read the site.

Responses

SITE_URLBody
SetUser-Agent: *, Allow: /, and Sitemap: <SITE_URL>/sitemap.xml
Not setUser-Agent: *, Disallow: /

GET /sitemap.xml

Purpose. Lists the home page and each page ADR-0035's table marks, as absolute addresses, with lastmod from git. No changefreq or priority.

Responses

SITE_URLBody
SetOne <url> per listed page
Not setAn empty <urlset>

GET /og/image.png and GET /og/<page>/image.png

Purpose. A PNG of 1200 by 630, the same on every request.

Responses

StatusMeaningBody
200A page, or the home pageimage/png
404No such pageNext.js not-found page

The noindex header

X-Robots-Tag: noindex is on these, which stay readable and are not blocked in robots.txt: /llms.mdx/… (with /<page>.md and Markdown negotiation), /llms.txt, /llms-full.txt, /static.json and /diagrams/….

On this page

3 min read