What the Agent Noticed

Illustration from De arte excerpendi by Vincent Placcius

Illustration from De arte excerpendi by Vincent Placcius

Summary

slipbox-mcp gives my notes typed links and hands the agent the tending and upkeep I was never going to keep up with myself.

A few weeks ago Claude connected two notes I'd never have put together on my own.

The first was a January note on Liz Fong-Jones reframing what AI-assisted development actually is: "a language model changes you from a programmer who writes lines of code, to a programmer that manages the context the model has access to, prunes irrelevant things, adds useful material." I'd filed it under ai-coding, context-management, developer-experience.

The second was a February note on Jackson Mac Low, an avant-garde poet who in the 1990s took a computer-poetry program's output and reworked it by hand. He rearranged words, added articles, dropped in punctuation, folded the lines into prime-number sequences. The algorithm's output was raw material. Mac Low made it a poem. I'd filed that under jackson-mac-low, creative-process, algorithmic-constraint.

Seven weeks apart. No shared tags. No shared references. One about AI coding in 2026, one about experimental poetry from 1994.

Underneath, the same idea. When the algorithm does the generating, the human curates. You prune, you order, you decide what counts. Fong-Jones called it context curation. For Mac Low it was an editorial job, deciding what the machine's raw output actually meant. Claude proposed a supports edge between the two and handed me a one-sentence reason.

I opened the Mac Low note to look at the proposal and, near the bottom, hit a line from February I had no memory of writing:

"This model anticipates current AI-human creative partnerships: algorithm as generative constraint, human as editorial curator and aesthetic arbiter."

A poet in 1994 had this worked out three decades before I built a tool around it. My past self wrote the thesis of this essay and filed it under poetry.


The graveyard

Evernote, Notion, Roam, Obsidian. I've run the gauntlet. Read the books, learned the method. I was good at capturing and useless at connecting, and at some point I stopped pretending the connecting was ever going to happen. Five hundred and fifty notes in, my slipbox had quit being a thinking tool. It was the warehouse at the end of Raiders. Crates I'd never open again.

Finding connections across 550 notes overruns my working memory, full stop. I'd write a note, link the two or three obvious neighbors, and skip the ten I'd written six months earlier and forgotten I owned. That isn't a discipline problem. The job is the wrong size for a normal person who isn't a full-time academic.


What changed: typed operations for an agent

When Claude Desktop shipped the Model Context Protocol (tools an AI can call to read, write, and reason over your data directly), I stopped treating note-taking as software I use and started building it for an agent. Agentic AI isn't autocomplete or chat. It's AI with tools that act on your behalf. It creates, links, searches, and analyzes instead of just suggesting.

So I built the slipbox for the agent, not for me. The MCP server gives it a small typed vocabulary: create_note, create_link, find_similar_notes, analyze_note, find_clusters. Claude runs the infrastructure and I do the thinking. I capture, write, and decide what matters. Claude searches the whole graph, proposes typed links, catches emergent clusters, writes structure notes when a topic crosses a threshold. I approve.

A year in, I stopped missing those ten connections. I hadn't gotten better at holding 550 notes in my head. The job had moved off it.


Typed links, not backlinks

Two weeks ago Andrej Karpathy described a version of this in public1. Ingest raw documents, compile them into a markdown wiki with backlinks and categorization, run health checks that find inconsistencies and propose new connections. He closed the thread:

"I think there is room here for an incredible new product instead of a hacky collection of scripts."

Karpathy's wiki uses backlinks: X is linked to Y. This tool uses typed links: X refines Y, X contradicts Y, X supports Y, and the verb does most of the work.

A backlink tells you two notes share a reference. A contradicts edge lets you ask your slipbox what disagrees with a given claim, which a backlink graph simply can't do. Vector similarity breaks at the far end. It'll tell you two notes are close and stay quiet on how they relate, or whether they relate. Two notes can sit next to each other in embedding space and mean nothing to one another.

Seven link types: extends, contradicts, supports, questions, refines, related, reference. I can still hold the full set in my head, and it catches the shape of how one thought leans on another. When the agent proposes a refines link between a Mac Low note and a DIASTEX5 note, it isn't saying "these co-occur." It's claiming that one idea acts on the other. The claim is useful or it's wrong, and either way I can audit it.


The division of labor

Give the agent typed operations, let it run the infrastructure, and keep the thinking for yourself.

Raw file access isn't enough on its own. The agent needs a vocabulary shaped like the work: explicit note types, explicit link types, search that reads semantic proximity, cluster detection that surfaces themes before I've formalized them. Once that vocabulary exists, the split arranges itself, and it lands where you'd want it. The judgment stays mine. Everything mechanical about running a graph of hundreds of notes goes to Claude.

Which is why the tool is deliberately boring. I never built much of a UI, and I left out real-time sync and collaboration on purpose. What's left is note storage, typed operations, and batch analysis, and that's plenty once the agent handles the rest.


What it is

Python! An MCP server exposing 19 tools and 6 workflow prompts. SQLite with FTS5 for BM25-ranked full-text search across 550+ notes. Seven typed link types. Cluster analysis on graph structure and tag co-occurrence. Notes are flat markdown with YAML frontmatter, and the database is an index, not the source of truth. Delete it and rebuild from files any time. Works with any MCP client (Claude Desktop, Claude Code, OpenCode, Copilot, anything else that speaks MCP) and runs alongside any markdown editor (Obsidian, Foam, Logseq) for visual editing. Open source, MIT licensed.

Code and full roadmap: github.com/jamesfishwick/slipbox-mcp. Setup takes about ten minutes. It's early-stage software, so there are no automated schema migrations yet, the automation scripts skew macOS, and the search index can drift if you edit in Obsidian while the server is running. Back up your notes before you experiment. The README covers the caveats in full.

If you try it, tell me what you discover, what breaks, and what you actually need versus what sounded useful on paper.


What Mac Low already knew

What Mac Low worked out with DIASTEX5 (a 1994 computer-poetry program) was prior art, not metaphor. A poet had already sketched the shape of the partnership. The program produced raw material a human wouldn't have written unaided. Mac Low did the part only a poet could do. He decided what was worth keeping, what belonged where, what the poem meant.

Fong-Jones described the same split in programming terms, seven weeks before I wrote the Mac Low note. I didn't see the connection until Claude set the two notes side by side. The division of labor is old news. What's new in 2026 is that the algorithm can reach back into your own archive and tell you this supports that, across domains you'd filed in separate rooms. DIASTEX5 only ever generated forward. The agent goes back through the things you already wrote and forgot.

My past self described all of this in February and filed it under poetry. It took the agent to find it. And it's taken me this whole essay to admit that Mac Low got there first.


  1. Andrej Karpathy on X, April 2, 2026.