Back

Danny Keane Developer Docs: API and MCP Server

Developer docs for dannykeane.com, Danny Keane's site: the REST API and its OpenAPI spec, two MCP servers, auth.md, and llms.txt. Everything built for programmatic use -- by agents, crawlers, and developers -- at one predictable URL. Open source tools are on GitHub; the endpoints below are live on this domain, unauthenticated.

Three resources have their own pages: the Danny Keane REST API reference at /developers/api, the Danny Keane MCP Server at /developers/mcp, and the SDKs and CLI at /developers/sdk. This page summarizes them and indexes the rest.

Danny Keane MCP server

This site runs its own Model Context Protocol server over Streamable HTTP. Point any MCP client at https://dannykeane.com/mcp -- no auth, no registration. Four tools: get_about (background, career, skills; section for just the story or the career table), get_work_history (full history across Guild.ai, Jasper.ai, Titan, Google/YouTube, Zesty, and side projects, or one role in detail with company), get_contact (email, LinkedIn, Twitter, GitHub, Figma; channel for one), and get_page (full content of a specific page by slug). Same data as llms.txt, queryable per topic instead of read whole.

The server manifest is published at /.well-known/mcp.json, /.well-known/mcp/server-card.json, and /.well-known/mcp/server-cards.json -- the same document at every path MCP discovery conventions have used, so any scanner finds it.

MCP manifestDanny Keane MCP Server docs

Danny Keane docs MCP server

A second MCP server, for the documents rather than the profile: point a client at https://dannykeane.com/docs/mcp to search and read this page, the privacy policy, and the rest of the site's documents. Two tools: search_docs (the sections that match a query, each with its source URL) and get_doc (one document whole, as Markdown). Same bodies the .md routes serve; no auth.

Docs MCP server cardDocs server tools and setup

llms.txt

A machine-readable summary of who Danny Keane is, in the llms.txt format: current role, career history, side projects, availability, and contact. llms-full.txt is the complete version with the detail attached. Both are plain text at the standard paths.

developers/llms.txt is a section-scoped version of this page -- just the developer resources, for agents that want that scope without the whole profile.

llms.txtllms-full.txtdevelopers/llms.txt

Danny Keane REST API

The public HTTP endpoints -- live visitor stats, the GitHub contribution calendar, a cursor-paginated list of roles (/api/v1/work), the Habbo NPC chat and avatar proxy, event tracking, a batch endpoint for bulk reads, and the web app manifest -- are documented in an OpenAPI 3.1 spec at /openapi.json. No auth on any of them.

The stable surface is versioned under /api/v1 (see Versioning and deprecation below). Every error is a structured JSON object with a machine-readable code, a message, and a hint -- including 404s and 405s, so no probe ever hits an HTML page. Every response carries advisory RateLimit headers (60 requests per 60-second window per endpoint), and a 429 carries Retry-After.

Async batch: send Prefer: respond-async to /api/v1/batch for a 202 and a Location to poll (/api/v1/jobs/{id}). Jobs are stateless -- the id carries the request, the batch runs when you poll, nothing is stored -- and ids expire after an hour.

openapi.jsonapi-catalogapi/llms.txtDanny Keane REST API reference

Danny Keane SDKs and CLI

Official client libraries for the REST API, published as dannykeane on npm, PyPI, and RubyGems. All three are zero-dependency, cover every data operation in the OpenAPI spec -- work history with cursor pagination, the GitHub contribution calendar, live stats, the NPC chat, and batch reads -- raise the API's ErrorResponse as a typed error, and retry a 429 after its Retry-After.

Each package also installs the official dannykeane command-line tool: one command per API operation, the API's JSON on stdout, and errors on stderr as ErrorResponse JSON with a non-zero exit code, so agents can pipe it.

Install with npm i dannykeane, pip install dannykeane, or gem install dannykeane. Every method, every CLI command, and usage examples are on the SDKs and CLI page.

Danny Keane SDKs and CLI docsdannykeane on npm (opens in new tab)dannykeane on PyPI (opens in new tab)dannykeane on RubyGems (opens in new tab)

Versioning and deprecation

The stable surface is /api/v1. Breaking changes ship as a new version prefix, never in place. A deprecated endpoint answers with a Deprecation header (RFC 9745) and, once a removal date is set, a Sunset header (RFC 8594) at least six months before removal. Nothing is deprecated today.

Every /api response carries Link: <https://dannykeane.com/developers>; rel="sunset" -- the RFC 8594 pointer to this policy -- so a client can find it from any call.

Authentication

None. Every endpoint, both MCP servers, and every discovery document here are public, read-only (bar anonymous event tracking), and anonymous: no account, no API key, no OAuth. auth.md says the same for agents that look for it there.

auth.md

Natural-language query (NLWeb)

GET or POST /ask accepts a natural-language query and returns the same real answers the MCP tools and terminal give -- about, work history, or contact -- routed by simple keyword matching, not a generated guess. Request SSE streaming with Accept: text/event-stream, a streaming=true query param, or {"prefer": {"streaming": true}} in the POST body; the stream emits start, result, and complete events.

Markdown content negotiation

Every page on this site content-negotiates: send Accept: text/markdown to /, /about, /contact, /privacy, /habbo, or this page and the same URL returns a Markdown body rendered from the same copy the HTML ships. Each page also serves a literal .md twin at the same path (/about.md, /contact.md, and so on) for clients that fetch a suffix instead of negotiating -- both return the same frontmatter-led body.

index.mdpricing.md

Agent discovery manifests

Beyond the MCP server card, this domain publishes an Agentic Resource Discovery catalog, an Agent Skills index, and an A2A-shaped agent card -- three views of the same tools, for clients that check different well-known paths.

The three profile tools also ship as standalone Agent Skills -- each a SKILL.md file under /skills, checked into this repo and served as-is, with a SHA-256 digest in the Agent Skills index so a client can verify the file it fetched is the one advertised.

The whole site is also bundled as an Agent Plugin (agent-plugins.org): plugin.json at the site root, with the same MCP server declared in a sibling mcp.json and the same skills discovered from /skills.

The homepage also answers /?mode=agent with a structured JSON view -- the same MCP tools, REST endpoints, and resource links above, for clients that check a query-param convention instead of negotiating on Accept.

ai-catalog.jsonagent-skills indexagent-card.jsonget-about SKILL.mdget-work-history SKILL.mdget-contact SKILL.mdplugin.jsonmcp.json

Open-source tools

figmanage: open source CLI and MCP server for Figma workspace admin. 122 tools covering seats, permissions, billing, files, and components -- the Figma admin API surface exposed to AI agents. Runs locally, connects to any MCP client, and chains into larger agent workflows. 3K+ downloads in its first week (2026). The official CLI ships on npm: npm install -g figmanage.

Figma plugins: design-to-dev handoff tooling, Redlines and others. 130K+ installs, used at Google, Facebook, Apple, and Airbnb.

GitHub holds the source for both, plus the Bootstrap CSS animation work that shipped to Mars on NASA's Ingenuity helicopter.

figmanage (opens in new tab)figmanage on npm (opens in new tab)Figma plugins (opens in new tab)GitHub (opens in new tab)

Crawling and indexing

robots.txt allows AI search and answer engines, lets GPTBot and ClaudeBot crawl, and declines training (Content-Signal ai-train=no); sitemap.xml lists every indexable route with real last-modified dates. Questions, bug reports, or an agent hitting something unexpected: email me@dannykeane.co.uk.

robots.txtsitemap.xmlme@dannykeane.co.uk