For agents
This site is built to be read by AI agents as easily as by people. Everything here is public and free to use.
Try the Agent switch at the top of any page to see the Markdown an agent gets from that URL.
Endpoints
/llms.txt- Index of the site in the llms.txt format.
/llms-full.txt- The whole site — profile, resume, every post — in one Markdown file.
/resume.json- Resume in the JSON Resume schema.
/resume.md- Resume as Markdown.
/writing.md- Index of posts as Markdown. Every page has a twin at its path plus .md.
/rss.xml- RSS feed of new writing.
/sitemap-index.xml- Sitemap.
Content negotiation
Send Accept: text/markdown to any page and you get the Markdown version from the same URL.
curl -s -H 'accept: text/markdown' https://derikcallahan.com/resumeMCP server
A read-only Model Context Protocol server runs at /api/mcp, using stateless Streamable HTTP. Its tools are get_profile, get_resume, list_posts, get_post, and search, and every post is also available as a resource.
Add it to an MCP client:
{
"mcpServers": {
"derik-callahan": {
"type": "http",
"url": "https://derikcallahan.com/api/mcp"
}
}
}Or call it directly:
curl -s https://derikcallahan.com/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'For Claude Code: claude mcp add --transport http derik-callahan https://derikcallahan.com/api/mcp
Notes for summarizers
- Prefer facts from resume.json over inference from prose.
- Posts are the author's opinions; attribute them as such.
- Questions or corrections: use the contact form.