Skip to content
← All posts
·2 min read

Your documentation site should be an MCP server

I contributed to Fresh in 2023 and 2024. Working on a general web framework was cool, but I've always been more interested in documentation. The whole time I kept thinking: where is the Deno-native documentation framework? There wasn't one.

Fast forward a couple of years. I got openclaw running on a home server and wanted to take it for a test drive. Out popped the first pass of Denote. Most of the work since then has been a mix of Claude Code and manual testing.

The AI-native angle came while I was using Claude Code and openclaw to build the thing. They kept needing to look things up, and I realized documentation sites have two consumers -- humans and agents -- but they're only serving one of them. And then: wait, I'm building a documentation framework. What if it was AI-native?

What AI-native actually means

AI-native documentation means treating agents as first-class citizens, on equal footing with humans. Humans get nice UI pages. Agents get nice programmatic access. Most frameworks don't do this. Denote does.

Concretely: your documentation site is an MCP server. It also serves llms.txt, llms-full.txt, sitemap.xml, /api/docs/, and /api/search/. Programmatic access used to be an afterthought. With Denote it's the point.

You can see the shape of this on my own blog. Go to reed.vonredwitz.com/llms.txt. That's what an agent sees. Every site should have this.

The opinionated part

Agents will be the primary consumer of documentation in the future. If your documentation platform is targeting humans, your product is going to lose. Agent traffic will outnumber human traffic in a developer's docs workflow before most teams realize it.

If you write docs for anything developers touch, you're the audience for Denote.

Try it

deno run -Ar jsr:@denote/init scaffolds a project. Run deno task dev and explore the endpoints. Thirty seconds, start to finish. Configure your agent of choice to target the local MCP server if you want more.

Curious how it works? It's on JSR at @denote/core and on GitHub at deer/denote.

Want to see it in your browser before checking anything out? denote.sh is created using Denote. Proof:

What I'm not building

At first I thought Denote could be a classic open-core play: ship the framework as open source, build a hosted version on the side. But I'm happily employed and I'm a father of a toddler. There isn't time for product marketing and side hustles on top of building. Founding isn't an option right now.

So Denote is open source. That's the whole project. If you want a hosted version, self-host it -- it's MIT. Deno Deploy makes it trivial to deploy a site built with Fresh (what Denote is built on).

What's next

I'll be using Denote to document the rest of the open source work I've been doing. Spoiler: most of it is targeted at agents. The documentation needs to match.