Everything on benmilne.com is available programmatically. All endpoints are public, unauthenticated, and CORS-enabled.

API Documentation

ResourceURLFormat
API reference/apiHTML
OpenAPI spec/openapi.jsonJSON
Machine docs/llms.txtText
Full machine docs/llms-full.txtText
API-scoped docs/api/llms.txtText

MCP Server

Model Context Protocol endpoint for AI agents. Streamable HTTP transport with JSON-RPC.

ResourceURL
MCP endpointPOST https://benmilne.com/mcp
MCP documentation/mcp/docs
Server card/.well-known/mcp/server-card.json

Tools: list_posts, get_post, search_posts.

Install

  • Add to VS Code
  • claude mcp add --transport http benmilne https://benmilne.com/mcp

GraphQL API

Read-only GraphQL with Relay-style cursor pagination, typed errors, and full schema introspection.

ResourceURL
EndpointPOST https://benmilne.com/graphql
Schema (SDL)/graphql
Documentation/graphql (HTML)

Client Libraries

PlatformPackageInstall
Node.jsbenmilne-apinpm install -g benmilne-api
Pythonbenmilne-apipip install benmilne-api

Agent Discovery

ResourceURL
Agent card (A2A)/.well-known/agent.json
Agent skills/.well-known/agent-skills/index.json
API catalog (RFC 9727)/.well-known/api-catalog
Agent instructions/agents.md
Platform configsgithub.com/benmilne-com/agents

Content Negotiation

Every essay URL supports multiple formats via the Accept header:

  • text/html — rendered page (default)
  • application/json — structured post data
  • text/markdown — clean source markdown

Quick Start

# Search posts
curl https://benmilne.com/api/search?q=stablecoins

# Get a post as JSON
curl -H "Accept: application/json" https://benmilne.com/rate-of-change

# MCP tools/list
curl -X POST https://benmilne.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

# GraphQL query
curl -X POST https://benmilne.com/graphql \
  -H "Content-Type: application/json" \
  -d '{"query":"{ posts(first:3) { edges { node { slug title } } } }"}'