jev-carryforward
MCP server with record and recall tools: facts are logged during a session and Jev keeps only those relevant to the next task.
Overview
carryforward is an MCP server that preserves what earlier agent sessions knew. Its record tool saves a fact the moment it happens, typed as a constraint, decision, measurement or thread with optional references and refresh notes; its recall tool, run at the start of a task, brings facts back and uses Jev via the Vercel AI Gateway to keep only those that matter for that task. Nothing is summarised and nothing is deleted. It targets what summaries lose when sessions end or are compacted: the reasons behind decisions, measured numbers, rules that then get broken, and guesses later repeated as facts.
The README reports a revealing eval using claude plugin eval: on a task where a rule recorded earlier said never to force-push, the agent with the tools and skill installed called recall zero times in four runs and proposed a force push. The author's conclusion is that an available MCP tool is not enough, which is why a SessionStart hook injects relevant facts. Mocks make eval runs deterministic and free. It installs with npx for Claude Code, Cursor, Claude Desktop or any MCP client, needs Node 22+, has CI and is MIT licensed.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Is this recorded fact relevant to the current task?(inferred) | yes · no |
How it works
- Record facts with type and reference during work
- At task start, recall with the task description
- Jev filters the ledger to relevant facts
- SessionStart hook injects them so the agent sees them
Strengths
- No summarisation loss; facts kept verbatim
- Relevance filtering keeps context small
- Deterministic, free eval runs with mocks
Caveats
- Agents may ignore recall without the hook
- Requires a Vercel AI Gateway key
Getting started
`claude mcp add carryforward -e AI_GATEWAY_API_KEY=$AI_GATEWAY_API_KEY -- npx -y carryforward`.At a glance
- Type
- MCP server
- Status
- beta
- Language
- TypeScript
- Runtime
- MCP server (Node 22+)
- Has code
- yes
- Has tests
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
What your last session knew, scored against what this one is doing. MCP server: a per-project ledger written as things happen, recalled per task with TypeSafe's Jev evaluation model via Vercel AI Gateway.
logicrw/awesome-jev-projects
Frequently asked questions
What does Jev decide?
Which recorded facts are relevant to the task being started.
What did the eval find?
Agents never called recall on their own in four runs, motivating the SessionStart hook.
Which clients are supported?
Claude Code, Cursor, Claude Desktop and any MCP client.
Related projects
Project memory for Claude Code that asks Jev whether each chat statement is worth keeping and checks tool calls against saved rules.
ProjectbetaTypeScriptLocal memory for coding agents that stores verbatim quotes and has Jev grade memory lines as keep, stale, wrong or unsupported.
ProjectbetaPython- fast-jev-compaction★ 7,616
Claude Code plugin and npm library that replaces the compaction summary with Jev keep, truncate or drop scores for every tool call.
PluginbetaTypeScript Cursor CLI plugin that asks Jev keep-or-drop nouls for each tool call and result, then re-injects kept facts after compaction.
CLIbetaTypeScriptLocal compaction proxy for Claude Code and Codex that compacts more often with local rules and keeps full history searchable.
ProxybetaGoClaude Code plugin where Jev asks one yes/no per standing rule and delivers only the rules relevant to each prompt, once per session.
ProjectbetaJavaScript