MCP tools
Three tools. The hooks are the primary channel; these exist for deliberate, agent-initiated search.
remember
| Parameter | Type | Notes |
|---|---|---|
type |
str | decision or episode |
title |
str | short, searchable |
body |
str | write it as an instruction, not a description |
anchors |
list | [{file, symbol?, lines?: [start, end]}] |
tags |
list | optional |
triggers |
list | required for episodes — verbatim error strings |
supersedes |
str | id of a memory this corrects (must cover its anchors) |
{
"type": "episode",
"title": "deferred BEGIN deadlocks under concurrency",
"body": "Use BEGIN IMMEDIATE. busy_timeout cannot fix a write-write conflict - SQLite raises SQLITE_BUSY on lock upgrade without calling the busy handler.",
"anchors": [{"file": "sync/worker.py", "symbol": "bump_counter"}],
"triggers": ["sqlite3.OperationalError: database is locked"]
}
Write bodies as guardrails: "Use X, not Y, because Z" — with the causal clause, so a future reader can judge whether the reason still applies instead of cargo-culting the fix.
recall
Search. Pass the files you are editing as files_in_focus (absolute or
relative — both work) to boost memories anchored to them. Every result carries
a staleness flag.
deprecate
Soft-delete a memory that is wrong, recording a reason. It leaves the search index but stays in git history.
Suggested CLAUDE.md line
When an approach fails, call the legendary `remember` tool with type=episode
and the verbatim error string as a trigger.