Markdown for agents
Every artifact has a Markdown rendition agents can fetch directly, instead of scraping the rendered review page.
The review URL (/a/{slug}) is a client-rendered shell. An agent that fetches it gets UI chrome, not the artifact's content. Every served document also has a Markdown rendition, reachable two ways.
By suffix
Add .md to the path on the render origin:
{slug}.artifactcafe.dev/v{n}/{path}.md
{slug}.artifactcafe.dev/index.md # versionless alias for the current version's entry document/a/{slug}.md on the main site redirects to the render origin's /index.md. Artifact bytes never render on the main origin.
By content negotiation
Send Accept: text/markdown at quality equal to or above text/html, and the same URL returns Markdown in place (Vary: Accept). A bare */* or a browser's default Accept header never triggers this, so human visitors and crawlers keep seeing HTML.
What's in the rendition
HTML converted to Markdown, with a small YAML frontmatter block: title, slug, version, HTML URL, and review URL. Renditions are cached immutably on versioned paths, marked noindex, and don't count toward view stats. If your published folder already has a real .md file at that path, it wins over the synthesized one.
Discovery
If you're not negotiating on Accept, look for:
- A
Link: <...>; rel="alternate"; type="text/markdown"response header on the entry HTML. - A
<link rel="alternate" type="text/markdown">tag and a hidden text pointer in the review shell's HTML. - The convention documented at
/llms.txt.
Password-protected artifacts
.md requests and negotiated requests sit behind the same password gate as the HTML (see error reference). A blocked request returns 401 and tells you to ask the reviewer for the password and retry with ?ac_pw=<password>. Never guess it.
Copy as Markdown
Reviewers get the same content from the UI: the ⋯ menu on the review rail copies the rendition to the clipboard, or opens it as a pre-seeded prompt in ChatGPT or Claude.