Skip to main content

Writing

Notes on AI, agents, web technologies, and building with LLMs

Technical articles on AI integration, agents, agent harnesses, MCP, web technologies, and emerging tools. Working notes from a Google Developer Expert with 25+ years of building and teaching.

  1. MCP's Progressive Tool Discovery

    Progressive tool discovery is usually sold on prompt caching. Keep the tools array fixed, the argument goes, and the cached prefix survives. I ran 72 benchmarks across gemini-3.5, 3.6 and 3.7 Flash at 14, 42, 84 and 280 tools. The fixed prefix cached in exactly zero of 36 runs, the pattern it argues against cached up to 93%, and the point where the pattern starts paying moved down to about 20 tools on the newest model.

  2. Stateless MCP servers

    The MCP server most tutorials ship, mine included, opens with a session handshake: initialize, get back an Mcp-Session-Id, carry it on every request, hold a live transport per client on the server. A stateless server drops all of it. Each request stands alone, any copy of the server can answer it, and the July 2026 spec makes that the only model there is. Here are both servers side by side, compared on the wire.

  3. The agent said it was in stock

    Agents keep giving me confident, wrong answers about the real world. WebMCP fixes half of that problem; discovery is still wide open.

  4. The forward deployed engineer land grab

    Four companies committed roughly $9 billion in nine weeks to putting their own engineers inside customer organisations. What a forward deployed engineer actually costs, who really gets one, and the question to ask before you sign anything: what remains when they leave?

  5. Authenticating MCP servers

    Almost every MCP tutorial, mine included, ships a server with no idea who's calling it: any client that reaches the endpoint gets the same data. For a while the protocol had no answer to that. It does now, and auth is the part of the MCP spec that has moved most. Here's the smallest server that sits on the right side of it, with a bearer token at the door and each user seeing only their own data, checked on the wire.

  6. Headless tools: let an LLM act in the user's browser

    A model's tools normally run on the server. But the interesting capabilities, location, IndexedDB, the clipboard, live in the browser. Here's a pattern that declares a tool's schema to Gemini and runs its body on the user's device, with no agent framework and the API key never leaving the server.

  7. Introduction to WebMCP

    WebMCP lets a page hand structured tools to an in-browser agent instead of making it guess at your UI. I wired 22 tools into Watch Anchor; here's how the API works and what I learned.

  8. Graph memory for AI agents

    How to give an agent a memory that stores the way facts connect and updates them when they change. A walk through extraction, entity resolution, time-ranged edges, and ranked recall, in about 150 lines of node:sqlite, sqlite-vec, and Gemini.

  9. MCP Apps

    For its first eighteen months MCP let a model call a tool and read the result back as text. That's a low ceiling the moment a user wants to sort, filter or drill into something. MCP Apps raise it: the server ships an actual interface into the chat. Here's how MCP got here, what the new proposal says, and a small app you can run in Claude Desktop, built on the official SDK and checked against the spec.

  10. Joining the Agentic AI Foundation as an ambassador

    I've been accepted into the Agentic AI Foundation's ambassador programme. Here's what the foundation is, why it matters that this work is happening in the open, and what I've actually signed up to do.