rowan-kendal.com API & Agent Documentation
Machine-readable resources for developers and AI agents
Resources
OpenAPI 3.1 specification — the full public API surface with typed schemas and operation IDs.llms.txt — guidance for AI agents, including when to use this site.sitemap.xml — all indexable URLs with last-modified dates.robots.txt — crawler policy. All major AI crawlers are welcome.
Authentication
The public API requires no authentication. Endpoints are open, rate-limited per client IP, and safe to call from agents and scripts.
Versioning & deprecation
The API is version 1; every /api/* response carries an X-API-Version: 1 header. Endpoints, request shapes, and response fields documented in the OpenAPI spec will not change incompatibly within a version. Before any breaking change, affected endpoints will return Deprecation and Sunset headers (RFC 8594) at least 90 days before removal, and the OpenAPI spec will mark the operation deprecated. New fields may be added at any time; treat unknown response fields as forward-compatible.
MCP server
An MCP (Model Context Protocol) server with Streamable HTTP transport is available at https://www.rowan-kendal.com/api/mcp (alias /mcp). It exposes read-only tools: get_profile, get_about, and get_contact. No authentication required.
{
"mcpServers": {
"rowan-kendal": { "url": "https://www.rowan-kendal.com/api/mcp" }
}
}CLI
The official CLI, rowan-kendal-cli (npm), scripts these endpoints without custom integration code:
npx rowan-kendal-cli profile # profile as markdown
npx rowan-kendal-cli contact # contact channels
npx rowan-kendal-cli openapi # OpenAPI 3.1 specErrors
All API error responses are structured JSON — never HTML. Every error carries a human-readable error message, a machine-readable code, and, where useful, a hint describing how to resolve it:
{ "error": "Not found", "code": "not_found",
"hint": "Unknown API path. See https://www.rowan-kendal.com/openapi.json for the available endpoints." }Unknown API paths return this JSON 404 with code not_found.Rate limits
Rate-limited endpoints return RFC RateLimit headers on every response so clients can self-throttle in real time, and a Retry-After header on HTTP 429:
RateLimit-Policy: 60;w=60
RateLimit-Limit: 60
RateLimit-Remaining: 59
RateLimit-Reset: 42Each endpoint's limit is listed in the OpenAPI spec.Markdown content negotiation
The pages /, /about, /contact, /docs, /privacy, and /testing-phases serve a Markdown variant when requested with Accept: text/markdown (the acceptmarkdown.com convention). Responses include Vary: Accept so caches keep the variants apart.
curl -s -H 'Accept: text/markdown' https://www.rowan-kendal.com/