Memory for coding agents from the sessions they already wrote to disk — Claude Code, Codex, Cursor and the rest — local, from the CLI or over MCP
deja-vu is a Go-based MCP server with 3 tools focused on session history recall and pattern injection. All three tools have descriptions, but the input schemas are problematic: parameters lack descriptions in the actual schema definitions, making it impossible for LLMs to understand what each field controls. The tool names use hyphens (hook-tool, hook-tool-after, fix) rather than verb_noun conventions, and descriptions are vague about when/why to use each tool. No output schemas are documented. The 'hook-tool' and 'hook-tool-after' tools accept nested 'tool_input' and 'tool_output' objects with minimally described fields. Error handling is not evident from the code samples provided. Overall, the definitions would cause LLMs to struggle with correct tool selection and parameter mapping.
Tool that exposes fix pairs from session history, showing what command followed a particular error in previous sessions
Recall at the moment of the action rather than at the moment of the sentence. Injects prior decisions and patterns from indexed sessions into agent tool execution hooks
The fix pair delivered at the failure. When a command fails, injects the prior fix that followed this error in previous sessions
Tool names do not follow verb_noun convention. 'hook-tool', 'hook-tool-after', and 'fix' are unclear action names. LLMs cannot infer intent from names like 'hook-tool', it should be 'recall_tool_pattern' or 'inject_hook_decision'.
Input schema parameters lack descriptions. The 'hook_event_name', 'tool_name', nested 'command', 'file_path' fields in tool_input have no descriptions in the schema. JSON Schema descriptions are required for LLM comprehension.
No output schemas documented. Tools return unspecified structures. Without documented return types, LLMs cannot plan downstream tool calls or extract required fields for chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Tool descriptions are vague and lack situational guidance. 'Recall at the moment of the action rather than at the moment of the sentence' is cryptic, it doesn't tell an LLM WHEN to invoke this tool or WHAT it will return. Descriptions should answer: What? When? What's returned?
Nested object schemas (tool_input, tool_output, error) lack internal field descriptions. The 'command' and 'file_path' fields inside 'tool_input' have no descriptions explaining what they represent or how to populate them.
No error handling guidance documented. If a session_id is invalid or a tool_name does not exist in history, what happens? How should the LLM recover? No error classification or recovery hints present.
The 'fix' tool accepts only 'error_signature' but it is unclear: is this a free-form string, regex pattern, or exact match? No constraints, format hints, or examples provided.