Back to writing

Making this website AI-native

Markdown pages, WebMCP tools, and content discovery based on Cloudflare’s recommendations.

I’m making this website AI-native, following Cloudflare’s agent-readiness recommendations and Double Slash’s implementation.

For this site, that means an agent can find the content, read it as Markdown, and search the notes and publications. Here’s what I added.

Markdown pages

The notes are written in Markdown. The build generates full HTML pages with React and shadcn/ui, plus a Markdown version of each page. The HTML already contains the content before JavaScript runs.

Every article has a Read as Markdown link and a copy button. The homepage is available at /index.md; this note is at /notes/a-website-for-people-and-agents/index.md.

Content discovery

The build generates these files:

The JSON endpoints are listed in the API catalog, with an OpenAPI description. They are static files and don’t require an account or API key.

WebMCP tools

The search button and ⌘ / Ctrl K open a local search over the writing. The query stays in the browser.

In browsers with WebMCP support, the page registers two tools:

  • search_content: searches the notes and publications using the same function as the search interface;
  • read_page: reads the Markdown of a known page on this site.

Both tools are read-only. WebMCP is still experimental, so the Markdown files and JSON endpoints are also available directly.

Content Signals

I allow search, AI input, and model training. These preferences are declared in robots.txt:

Content-Signal: search=yes, ai-input=yes, ai-train=yes

Crawlers that support Content Signals can read these preferences. The signals themselves don’t enforce them.

Hosting

GitHub Pages serves the HTML and Markdown files. It can’t run the server code needed to return Markdown from an HTML URL using Accept: text/markdown, so agents should use the explicit Markdown URLs there.

I included an optional Cloudflare Worker adapter for content negotiation. It also adds HTTP Link discovery headers and Vary: Accept so caches distinguish HTML from Markdown. The adapter is in the repository and isn’t deployed.

DNS-based discovery would require a domain I control. The github.io subdomain doesn’t provide that access.

The For agents page lists the resources. The build tests check the content exports, the browser tools, and content negotiation.

References

Read as Markdown

Written by Kenneth Assogba. Email me