Publish agent-readable output
Serve the same documentation as raw Markdown, LLM indexes, negotiated Markdown, and read-only MCP tools.
Ginko Docs exposes agent-readable forms of the same canonical pages that power the website. You do not need a second Markdown tree or a script that copies source files into public/.
Use the static files
A production generation writes these public artifacts:
/raw/**.mdfor normalized Markdown versions of published pages;/llms.txtfor a compact, sectioned index;/llms-full.txtfor the selected pages combined into one document.
For example, /docs/getting-started is available as /raw/docs/getting-started.md. A bilingual build also writes locale-specific raw routes plus /de/llms.txt and /de/llms-full.txt.
These files work on an ordinary static host because they are prerendered. Production output excludes drafts; data collections such as authors do not become public agent pages.
pnpm generate
find .output/public/raw -type f -name '*.md'Inspect .output/public/llms.txt and .output/public/llms-full.txt before deploying.
Know what requires Nitro
On an SSR or hybrid deployment, Nitro can return Markdown for the normal page URL when the request accepts text/markdown:
pnpm buildcurl -H 'Accept: text/markdown' \
https://docs.example.com/docs/getting-startedThe /mcp endpoint also requires a running Nitro server. It exposes the read-only list-pages and get-page tools, which read /llms.txt and canonical raw Markdown rather than maintaining another index.
A static host cannot execute content negotiation middleware or the MCP endpoint. Point static consumers at /raw/**.md, /llms.txt, or /llms-full.txt instead.
Configure the page menu
Every documentation page keeps its primary Copy Markdown, Copy link, and View Markdown actions. markdownActions only controls the optional ChatGPT, Claude, and MCP entries in the split menu:
export default defineAppConfig({
ginkoDocs: {
markdownActions: {
chatGpt: false,
claude: false,
mcp: true,
},
},
});These booleans hide menu entries. They do not disable raw Markdown, LLM files, request negotiation, or the /mcp server.
Custom MDC components normally keep an explicit component representation in agent Markdown. Add a server-side serializer only when a component needs a clearer text form; custom components shows the registration boundary.