Local JSON memory store with CLI + MCP server for GitHub Copilot / MCP clients.
Server demonstrates solid definition quality with clear tool names, well-structured schemas using Zod, and comprehensive parameter descriptions. All 7 tools are explicitly registered with input schemas and detailed descriptions (median ~180 chars). Tool annotations are present (readOnlyHint, destructiveHint, idempotentHint). However, output schemas are not documented, callers cannot see what fields to expect from responses, forcing LLMs to infer structure. Error handling guidance is minimal. Parameter constraints are good (enums, ranges, minLength) but some tools lack explicit guidance on when to use them vs alternatives. Tags parameter in memory_write lacks examples of expected values.
Auto-inject shaped context for a specific task (read-only, uses DeepSeek LLM). Intelligently structures memories as actionable guidance without exceeding token budget.
Create budget-constrained markdown context from relevant memories. Useful for injecting context into LLM prompts without exceeding token limits.
Soft-delete a memory by ID (sets tombstone, reversible). The memory is excluded from searches but can be hard-deleted later with memory_purge.
Export raw JSON of all memories (read-only). Returns complete store including soft-deleted records for backup/audit purposes.
Hard-delete memories permanently by criteria (destructive, supports confirmation elicitation). Exactly one of id, match, or tag must be provided. Use with caution.
Search, find, recall, or look up information from project memory. Use this when the user asks what they stored, wants to find a memory, recall a decision, look up preferences, or asks 'what do I have about X'. Keywords: search, find, recall, lookup, what, show, list, get.
No output schemas documented for any tool. Callers cannot predict response structure (fields, types, pagination). LLMs must infer from trial-and-error or call context.
memory_search and memory_compress return lists but no pagination guidance documented. How many results max? What if there are 1000 matches? Potential context explosion.
Error handling is implicit/absent. What happens if memory_compress exceeds budget? If memory_export file is huge? If inject_context DeepSeek API fails? No recovery guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 49 | - | v1 |
Add, save, store, or remember information to the project memory. Use this when the user wants to remember something, save a preference, store a decision, or add a note for later. Keywords: add, save, store, remember, note, record, keep.
memory_purge supports elicitation for confirmation but the condition/behavior is not fully documented. When is confirmation elicited? Always? Only on dryRun=false? Unclear to LLM.
Tags parameter in memory_write is underconstrained. Should it accept any string? Max length? Max count? No enum or pattern validation described.
memory_export description is too brief (50 chars). Unclear when to call it vs memory_search. Is it for backup? Audit? Export to third-party tool? No guidance.