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:
- /llms.txt: a list of pages and Markdown URLs;
- /llms-full.txt: the complete text;
- /api/content.json: titles, dates, topics, URLs and plain text;
- /api/profile.json: my profile and projects;
- /sitemap.xml: the public pages;
- /feed.xml: the RSS feed for new notes.
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=yesCrawlers 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
Written by Kenneth Assogba. Email me