klypix-mcp
Shared project memory for Claude Code, Codex and Cursor: decisions, corrections, overlap warnings.
npm · fingerprint ac1a046d60297cce78d696a1 · repository · RSS
27tools
5recorded versions
16dtracked
changed 4d ago
What changed
Changed 2026-10-26 12:56 UTC
1 description rewritten.
--- pinned/brain_rules +++ observed/brain_rules { - "description": "Turns lessons this brain recorded (\"every new route must also be in PRIVATE_ROUTES\", \"a new *.test.ts must be listed in package.json\", \"this file is mixed CRLF/LF\") into DETERMINISTIC diff checks, versioned in the repo as .klypix/rules.json, each citing the card it came from. Checked before the code reaches CI: brain_sync shows the rules for the files you declare; the edit hook (Claude Code; Codex gets the same) and an opt-in git pre-commit/pre-push hook report findings. Rules WARN by default; only a rule the human approved with --block stops an edit (Claude Code) or a commit, and a commit that skips a blocking rule (--no-verify) is recorded. Actions: \"propose\" routes each lesson to rule / instruction / note and drafts the checkable ones; \"add\" writes completed drafts as CANDIDATES (inert); \"promote\" and \"retire\" need the human's 8-character approval code (`npx klypix-mcp rules code promote|retire <ids>` — never shown to you, never guess it; a rule that blocks you is lifted only by the human); \"check\" runs the rules on the working tree, the staged change, or a range (include_candidates:true tests candidates before approval); \"status\" lists rules with fires / blocks / overrides / false alarms and retirement suggestions; \"false_alarm\" records that a finding was wrong (it does not lift the rule). Kinds: listed-in, forbid-pattern, preserve-eol, cloud-required. Checks are string/glob/regex work over the diff — milliseconds, offline; the project's own tests stay with its CI.", + "description": "Turns lessons this brain recorded (\"every new route must also be in PRIVATE_ROUTES\", \"a new *.test.ts must be listed in package.json\", \"this file is mixed CRLF/LF\") into DETERMINISTIC diff checks, versioned in the repo as .klypix/rules.json, each citing the card it came from. Checked before the code reaches CI: brain_sync shows the rules for the files you declare; the edit hook (Claude Code; Codex gets the same) and an opt-in git pre-commit/pre-push hook report findings. Rules WARN by default; only a rule the human approved with --block stops an edit (Claude Code) or a commit, and a commit that skips a blocking rule (--no-verify) is recorded. Actions: \"propose\" routes each lesson to rule / instruction / note and drafts the checkable ones; \"add\" writes completed drafts as CANDIDATES (inert); \"promote\" and \"retire\" without approve open a human review prompt (MCP form or Windows dialog); never answer it for the human or repeat after decline unless asked. Other hosts can use the human's 8-character approval code (`npx klypix-mcp rules code promote|retire <ids>` — never shown to you, never guess it; a rule that blocks you is lifted only by the human); \"check\" runs the rules on the working tree, the staged change, or a range (include_candidates:true tests candidates before approval); \"status\" lists rules with fires / blocks / overrides / false alarms and retirement suggestions; \"false_alarm\" records that a finding was wrong (it does not lift the rule). Kinds: listed-in, forbid-pattern, preserve-eol, cloud-required. Checks are string/glob/regex work over the diff — milliseconds, offline; the project's own tests stay with its CI.", "execution": { "taskSupport": "forbidden" }, - "description": "promote / retire: the human's 8-character code. Never guess or fabricate it.", + "description": "promote / retire: omit to request human approval in a form or Windows dialog. Optional terminal fallback: the human's 8-character code. Never guess it.", "type": "string" }, "base": { - "description": "promote: true only when the human printed the code with --block, making these rules stop an edit or a commit instead of warning. Rules warn by default.", + "description": "promote: request blocking checks instead of warnings; the human reviews this severity in the approval prompt. With a terminal code, must match --block.", "type": "boolean" }, "files": {
Changed 2026-10-25 11:22 UTC
1 description rewritten.
--- pinned/brain_handoff +++ observed/brain_handoff { "annotations": { "destructiveHint": false, - "description": "The session handoff. Call {action:\"write\"} when you are stopping before the work is done — the human asked for a handoff, your context or usage limit is near, the day ends, you are blocked or switching tool — with the task, what is done, what is NEXT in order, the files and how to verify: it becomes a 🤝 card in the project brain that the human can see and correct, and the next session on this project (any agent — Codex, Claude Code, Cursor) sees it at its first brain_sync / session start. Call {action:\"take\", id} (a card) or {action:\"take\", session} (unfinished work a session left without a card — KLYPIX records every session's last reply, files and commits automatically) before continuing it, so peers see it is taken; {action:\"done\"} when it is finished (the card is archived); {action:\"list\"} shows every open handoff and every unfinished session. Never ask the human to paste a summary into the next session — write a handoff. Machine-local for the automatic layer; the card travels with the brain.", + "description": "The session handoff. On hosts without native transcript access, call {action:\"capture\", turns:[{id,role,at,text}]} as user requests and replies arrive, before writing a handoff. Capture only observed text with stable ids and known timestamps; never reconstruct missing history. Captured evidence is local and does not establish full conversation coverage. Call {action:\"write\"} when you are stopping before the work is done — the human asked for a handoff, your context or usage limit is near, the day ends, you are blocked or switching tool — with the task, what is done, what is NEXT in order, the files and how to verify: it becomes a 🤝 card in the project brain that the human can see and correct, and the next session on this project (any agent — Codex, Claude Code, Cursor) sees it at its first brain_sync / session start. Call {action:\"take\", id} (a card) or {action:\"take\", session} (unfinished work a session left without a card — KLYPIX records every session's last reply, files and commits automatically) before continuing it, so peers see it is taken; {action:\"done\"} when it is finished (the card is archived); {action:\"list\"} shows every open handoff and every unfinished session. Never ask the human to paste a summary into the next session — write a handoff. Machine-local for the automatic layer; the card travels with the brain.", "execution": { "taskSupport": "forbidden" }, - "description": "write (default): record a handoff card. take: claim a handoff card (id) or unfinished work (session) before continuing it. done: mark it finished. list: every open handoff card and every unfinished session on this project.", + "description": "capture: preserve observed user/assistant turns for this connected session on any MCP host; never marks full history covered. write: record a handoff. take: claim it and check conversation freshness. review: read source conversation pages, then acknowledge the final reviewToken with a summary of pending requests. done: mark finished. list: open handoffs and unfinished sessions.", "enum": [ "write", "take", - "list" + "list", + "review", + "capture" ], "type": "string" }, + "cursor": { + "description": "review: nextCursor from the preceding page; omit to start.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, "done": { "description": "write: what is already finished (so it is not redone).", "items": { - "description": "take / done: the handoff card id (from brain_sync, the session-start brief, or list).", + "description": "take / done / review: the handoff card id (from brain_sync, the session-start brief, or list).", "maxLength": 64, "type": "string" }, + "reviewToken": { + "description": "review: acknowledge only AFTER reading every conversation page; supply the final token and a summary including outstanding requests. New source activity invalidates this token.", + "maxLength": 64, + "type": "string" + }, + "revision": { + "description": "review: exact transcript revision from the preceding page.", + "maxLength": 64, + "type": "string" + }, "session": { - "description": "take / done: the session id (or a unique prefix of 8+ characters) from the unfinished-work list, when the work has no card.", + "description": "take / done / review: the session id (or a unique prefix of 8+ characters) from the unfinished-work list, when the work has no card. Review creates a reviewable draft if needed.", "maxLength": 160, "type": "string" }, - "description": "done: what was finished, in one or two sentences. take: an optional note.", + "description": "done: what was finished. take: optional note. review acknowledgement: required account of completed and still-pending requests after reading all conversation pages.", "maxLength": 400, "type": "string" }, + "turns": { + "description": "capture: observed turns only, stable ids for retries and original timestamps in milliseconds. Never invent missing history. Stored locally outside the brain; full coverage remains unknown.", + "items": { + "properties": { + "at": { + "exclusiveMinimum": 0, + "maximum": 8640000000000000, + "type": "integer" + }, + "id": { + "maxLength": 160, + "minLength": 1, + "type": "string" + }, + "role": { + "enum": [ + "user", + "assistant" + ], + "type": "string" + }, + "text": { + "maxLength": 24000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "id", + "role", + "at", + "text" + ], + "type": "object" + }, + "maxItems": 30, + "minItems": 1, + "type": "array" + }, "verify": { "description": "write: how to check the state — a command or a visible result.", "maxLength": 400,
Changed 2026-10-24 10:56 UTC
1 description rewritten, 2 schema or annotation changes with the description left byte-identical, 1 tool added.
--- pinned/add_to_canvas +++ observed/add_to_canvas { "description": "Append cards (and optional connections) to an existing v4 .klypix, preserving all existing items and their positions. New cards are placed to the right of the current content, bordered and readable on KLYPIX's dark and Paper themes; a card with a group goes into the titled box of that name. Connections may reference new cards (by index/title) or existing cards (by title). On a canvas that is open in the KLYPIX app (Windows), the cards go to KLYPIX itself while it lets AI tools use it: they appear at once, marked as yours, one Ctrl+Z in KLYPIX removes them, and KLYPIX saves them (mode \"app\"). When KLYPIX cannot take them it refuses (OPEN_IN_APP, ACCESS_OFF, BLOCKED …) and nothing is written — tell the user, in the sentence the result gives. Project brains are written as files, which KLYPIX merges. Returns the new card ids.", "execution": { - "description": "Source card: index (0-based), title, or id.", - "type": [ - "number", - "string" - ] + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "description": "Source card: index (0-based), title, or id." }, "label": { "type": "string" - "description": "Target card: index, title, or id.", - "type": [ - "number", - "string" - ] + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "description": "Target card: index, title, or id." } }, "required": [
--- pinned/brain_note +++ observed/brain_note { - "description": "Record something in the project brain ON DEMAND — the agent-neutral twin of the Claude-Code capture hook, so any client (Cursor / Cline / Desktop) can write the brain, not just read it. Unlike add_to_canvas (a flat append), this routes through the brain's capture engine, so a new decision SUPERSEDES a heavily-overlapping older one, ✓ RESOLVES/archives a matching card, closes: resolves the strategy/question a milestone fulfils, and ~ UPDATES a card in place — the full decision lifecycle, with dedup. Use marker \"+\" to record a 🛠️ SKILL — a reusable how-to/gotcha/convention (\"always dedup zKeys before REORDER\") that should resurface every session and never age out, distinct from a one-time decision. Use it to remember a decision, ask an open question, mark a milestone, log a skill, resolve a finished item, or correct a card. Defaults to the project brain (\"brain\").", + "description": "Record something in the project brain ON DEMAND — the agent-neutral twin of the Claude-Code capture hook, so any client (Cursor / Cline / Desktop) can write the brain, not just read it. Unlike add_to_canvas (a flat append), this routes through the brain's capture engine, so a new decision SUPERSEDES a heavily-overlapping older one, ✓ RESOLVES/archives a matching card, closes: resolves the strategy/question a milestone fulfils, and ~ UPDATES a card in place — the full decision lifecycle, with dedup. Use marker \"+\" to record a 🛠️ SKILL — a reusable how-to/gotcha/convention (\"always dedup zKeys before REORDER\") kept until corrected and shown first to sessions that touch the files it names, distinct from a one-time decision. When the mistake is mechanical, end the text with a `rule:` suffix to make the lesson RULE-READY: repo globs, then `never \"<text>\"`, `never /<regex>/`, `must \"<text>\"`, `listed-in <file>[,<file>]`, `keep-eol` or `costly` — e.g. `rule: web/tests/**/*.test.ts never \"from '@/\"`. The globs must name tracked files; it lands as a visible \"⚙ rule candidate\" line that nothing checks until brain_rules adds it and a person approves it. Use it to remember a decision, ask an open question, mark a milestone, log a skill, resolve a finished item, or correct a card. Defaults to the project brain (\"brain\").", "execution": { "taskSupport": "forbidden" },
+ tool added: brain_rules
--- pinned/create_canvas +++ observed/create_canvas { "description": "Create a new .klypix canvas from cards + connections and save it to the vault. The user opens it in the KLYPIX app (Canvas → Open). Prefer short, titled cards (one idea each) connected by meaningful arrows. For anything a person reads IN ORDER — steps, phases, checklists, sections — put the cards in `groups`: each group becomes a titled box with its cards stacked in the order given, boxes left-to-right; the loose grid follows arrows, not reading order, and scatters a sequence.", "execution": { - "description": "Source card: index (0-based), title, or id.", - "type": [ - "number", - "string" - ] + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "description": "Source card: index (0-based), title, or id." }, "label": { "type": "string" - "description": "Target card: index, title, or id.", - "type": [ - "number", - "string" - ] + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "description": "Target card: index, title, or id." } }, "required": [ - "type": [ - "number", - "string" + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } ] }, "minItems": 1,
Changed 2026-10-23 11:38 UTC
2 descriptions rewritten.
--- pinned/brain_message +++ observed/brain_message { - "description": "Leave a DELIBERATE, targeted note for another agent session working on this project (\"merged the hook refactor — rebase before you commit\", \"don't touch canvasStore, mid-refactor\"). Address it to a session id from the brain_sync peer list or brain_doctor. A LIVE session gets it on its next lifecycle event or KLYPIX tool call, even if it is idle right now. A session KLYPIX has identified before that is NOT on the lane now (closed, or quiet) still receives a directed note the moment it next acts — the note is kept for up to 7 days — so if you would otherwise ask the human to relay or paste something to another agent session, send it here instead and tell them it was sent or queued. If the human wants a queued note handled sooner, brain_reopen asks them whether to reopen that session now. Broadcasts (\"all\") reach only sessions live right now. Any MCP client can send and receive through the shared machine-local presence lane. Delivery contract: a supported action offers the note into model-visible context, a later independent action acknowledges it, and it retires either by an explicit brain_message_receipt (\"acted on it\") or by auto-consumption on a further independent action; your receipt line names which, and neither is proof a human read it. Expiry or capacity loss leaves a failed per-recipient receipt instead of silently disappearing. OS-user-local and machine-local. Ephemeral and NOT persisted to the brain — for a durable decision use brain_note instead.", + "description": "Leave a DELIBERATE, targeted note for another agent session working on this project (\"merged the hook refactor — rebase before you commit\", \"don't touch canvasStore, mid-refactor\"). Address it to a session id from the brain_sync peer list or brain_doctor. A LIVE session gets it on its next lifecycle event or KLYPIX tool call, even if it is idle right now. A session KLYPIX has identified before that is NOT on the lane now (closed, or quiet) still receives a directed note the moment it next acts — the note is kept for up to 7 days — so if you would otherwise ask the human to relay or paste something to another agent session, send it here instead and tell them it was sent or queued. If the human wants a queued note handled sooner, brain_reopen asks them whether to reopen that session now. Broadcasts (\"all\") reach only sessions live right now. Any MCP client can send and receive through the shared machine-local presence lane. Delivery contract: a supported action offers the note into model-visible context, a later independent action acknowledges it, and it retires either by an explicit brain_message_receipt (\"acted on it\") or by auto-consumption on a further independent action; your receipt line names which, and neither is proof a human read it. Expiry or capacity loss leaves a failed per-recipient receipt instead of silently disappearing. OS-user-local and machine-local; with KLYPIX network installed on both computers, a session on another computer in the same project is reached too (its id starts with net:, and there is no read receipt across computers). Ephemeral and NOT persisted to the brain — for a durable decision use brain_note instead.", "execution": { "taskSupport": "forbidden" },
--- pinned/brain_sync +++ observed/brain_sync { "annotations": { "destructiveHint": false, - "description": "APPROVAL-FREE task gateway over the authorized MCP connection. Call FIRST with a concise intent and expected files, again when scope changes, and with phase:\"complete\" before the final response. One bounded response returns compact task-relevant brain context, active TASK peers (idle connections hidden), one-time messages, structured exact-file conflicts, and late-arrival overlap alerts. A completion that supplies machine-checkable result manifests is fail-closed: invalid, conflicting, or incomparable evidence returns needs-reconciliation and retains task scope. `results` is ONLY for such manifests, never a summary of the work: with nothing machine-checkable to claim, complete without it. Works on any MCP host — it needs only the authorized MCP connection, so native lifecycle hooks are optional. LIMITS: blocking overlap is EXACT-PATH over the declared files of each session plus the edits its host observed; sessions on different branches are also test-merged with git merge-tree (committed work only); a same-folder overlap is an advisory notice; coordination/result reconciliation is machine-local and OS-user-local (a teammate on another machine is invisible), and file overlap remains ADVISORY.", + "description": "APPROVAL-FREE task gateway over the authorized MCP connection. Call FIRST with a concise intent and expected files, again when scope changes, and with phase:\"complete\" before the final response. One bounded response returns compact task-relevant brain context, active TASK peers (idle connections hidden), one-time messages, structured exact-file conflicts, and late-arrival overlap alerts. A completion that supplies machine-checkable result manifests is fail-closed: invalid, conflicting, or incomparable evidence returns needs-reconciliation and retains task scope. `results` is ONLY for such manifests, never a summary of the work: with nothing machine-checkable to claim, complete without it. Works on any MCP host — it needs only the authorized MCP connection, so native lifecycle hooks are optional. LIMITS: blocking overlap is EXACT-PATH over the declared files of each session plus the edits its host observed; sessions on different branches are also test-merged with git merge-tree (committed work only); a same-folder overlap is an advisory notice; coordination/result reconciliation is machine-local and OS-user-local; a teammate on another computer appears only when KLYPIX network is installed on both computers (presence, intent, files and brain_message, no result reconciliation), and file overlap remains ADVISORY.", "execution": { "taskSupport": "forbidden" },
Current tools
Show all 27 tool fingerprints
add_to_canvas
brain_ask
brain_challenge
brain_connect
brain_doctor
brain_garden
brain_handoff
brain_insights
brain_lens
brain_message
brain_message_receipt
brain_note
brain_reconcile
brain_reopen
brain_rules
brain_sync
canvas_view
create_canvas
klypix_status
list_canvases
project_map_context
project_map_drift
project_map_scan
read_canvas
read_card_contents
search_all_brains
search_canvases
Watch this server yourself
If you run this server, put the proxy in front of it. It pins these exact fingerprints on first connect and stops the session if they move.
npx -y mcp-pin@0.2.3 -- <your klypix-mcp command>
Or subscribe to this page's RSS feed to be told when it changes.
Badge
The badge states one fact about time and nothing else. It never claims a server is safe.
[](https://mcp-pin.gautamkhosla.com/servers/4e4dbd28a92d0f49.html)