MCP Tools

What this site exposes over MCP

Model Context Protocol is the standard for letting an LLM client (Claude, Cursor, agents, anything that speaks the spec) discover and call tools from external services. This site runs its own MCP server at /api/mcp, and the assistant on this site also discovers tools from any external MCP servers configured via the MCP_SERVERS_JSON env var.

MCP server endpoint

/api/mcp

JSON-RPC 2.0 over HTTP, protocol version 2025-06-18. Implements initialize, tools/list, tools/call and ping.

Live
How to connect
Claude CodeAdd the server with one command. The agent will list tools on next session.
claude mcp add --transport http portfolio https://YOUR-DOMAIN/api/mcp
Cursor / generic JSON configDrop into the MCP servers map in your client's settings.
{
  "mcpServers": {
    "portfolio": {
      "url": "https://YOUR-DOMAIN/api/mcp"
    }
  }
}
Quick smoke testNo client required — POST a JSON-RPC tools/list and inspect the response.
curl -X POST https://YOUR-DOMAIN/api/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Native tools — exposed by this site
9 tools

search_articles

Keyword search across Pete's published articles. Returns the top matches with title, summary and a short excerpt. Use this whenever the user asks about Pete's writing, opinions or arguments.

Parameters
  • querystring
  • limitinteger

get_experience

Pete's career timeline with role, dates, summary, highlights and impact badges. Optionally filter by company name. The copy variant is selected by the reader's view mode (public, pm or ba).

Parameters
  • companystring · optional

list_skills

List Pete's skill groups (Product & Strategy, AI & Engineering, Delivery & Governance, etc.) and the skills inside each. Optionally filter by category heading.

Parameters
  • categorystring · optional

list_projects

List Pete's published projects with title, sector, status and one-line summary. Optionally filter by status.

Parameters
  • statusstring · optional

get_project

Fetch a single project by slug, including up to ~4000 chars of body content. Use after list_projects to drill in.

Parameters
  • slugstring

get_interests

Get Pete's personal interests: running training (weekly volume, weekly schedule, current PBs) and baking (the bakes he makes, with notes). Use this whenever the user asks about hobbies, life outside work, fitness, food or anything personal.

get_education

Pete's education history: degree (institution, period, grade) and secondary-school grades. Includes a short context note framed for the reader's selected view mode (public, pm or ba).

get_pillars

Pete's career pillars / value propositions — the headline areas of work he focuses on, framed for the reader's selected view mode (public, pm or ba). Use this when summarising what Pete does or where he's strongest.

get_impact_metrics

Pete's headline impact metrics (e.g. founding-PM scope, trial-activation uplift, defect-clearance rate, integration programmes managed). Returns value + label pairs, ordered by the reader's selected view mode (public, pm or ba).

External tools — discovered via MCP_SERVERS_JSON
0 tools

No external MCP tools wired in. To add some, set the MCP_SERVERS_JSON env var to a JSON array describing one or more servers. Example:

MCP_SERVERS_JSON='[{"name":"github","url":"https://your-mcp.example.com","auth":{"type":"bearer","token":"..."}}]'