The Continuity Layer for AI Agents — an MCP memory server that preserves project knowledge, decisions, and conventions across sessions so every session starts where the last one ended. Offline, token-efficient, no LLM, no server; works with 20+ agents.
toon-memory presents 25 tools with consistent naming (memory_*, context_*, vault_*) and decent categorization, but exhibits critical gaps in schema documentation and parameter descriptions. Tool definitions are inferred from an Astro documentation component (Tools.astro) rather than directly visible in the MCP server implementation code. While names follow verb_resource convention well, parameter schemas lack type definitions for many fields (tags, links as semicolon-separated strings with no formal schema), and descriptions are generic rather than LLM-optimized. Error handling guidance is absent. The server treats secrets (vault_store, vault_retrieve) as first-class tools rather than implementing server-side injection, which violates the pattern:secret-injection baseline.
Generate an incremental briefing showing recent git changes and memory updates since a time period
Export memory in compact markdown format suitable for pasting into prompts
Generate a targeted briefing for a specific topic with related code, tests, and memories
Generate a full project briefing (README, git status, memory, sessions) in compact markdown
Audit memory integrity: orphaned links, duplicates, file references, stale sessions
Create a backup snapshot of memory state with timestamp and optional compression
Compress memory file using lightweight encoding while preserving searchability
Tool definitions inferred from documentation component rather than visible in MCP server code. Astro component (Tools.astro) provides descriptions and some input schema, but the actual server implementation code (src/mcp/server.ts, src/mcp/tools.ts) is not provided for verification. This violates the principle that tool registration must be traceable to source code.
Parameter descriptions lack type constraints and formatting guidance. 'tags' and 'links' are described as 'semicolon-separated' strings in natural language rather than formal enum, regex, or pattern definitions. LLMs cannot reliably parse natural-language constraints, they need JSON Schema type/format/pattern fields or explicit constraint lists.
Vault tools (vault_store, vault_retrieve, vault_list, vault_forget) expose secrets as first-class tool parameters instead of implementing server-side secret injection. This violates pattern:secret-injection, agent traces will log all vault keys and values, leaking sensitive data into logs and prompt history.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Merge duplicate entries and remove obsolete records to maintain memory integrity
Encrypt sensitive memory entries with optional key management
List all memory entries with optional filtering and sorting
Soft delete, hard delete, or restore memory entries with optional supersession tracking
Merge entries from multiple sessions with conflict resolution and deduplication
Generate a compact project briefing suitable for context injection in every LLM call
Retrieve memories by query, tags, or pattern matching with optional ranking
Store a new memory entry or update existing entries with knowledge, decisions, bugs, or patterns
List active sessions with file tracking, entry counts, and branch awareness
Intelligent recall using quality scoring, relevance ranking, and contextual filtering
Display memory statistics including entry counts, tags, quality scores, and graph metrics
Mark an old entry as superseded by a new one with automatic linking and status updates
Update specific fields of an existing memory entry
Generate a visual representation of memory graph structure and relationships
Delete a secret from the vault
List all stored secret keys (values are not returned)
Retrieve a secret value from the encrypted vault
Store a secret value in the local encrypted vault
Empty input schemas for stateless tools. memory_stats and context_generate accept '{}', correct, but memory_stats, context_health, vault_list, and context_generate lack any input schema documentation in descriptions, making it unclear to LLMs whether parameters are optional or mandatory.
No error handling or recovery guidance. Tool descriptions do not include failure modes, actionable error messages, or next steps. E.g., memory_recall does not document what happens when no matches are found, memory_forget does not explain the difference between soft/hard/restore modes in recovery terms, and context_export does not mention possible size limits.
Irreversible operations lack confirmation/dry-run patterns. memory_forget (hard delete), memory_consolidate (merge), and vault_forget (delete secret) can destroy data but do not document confirmation steps, undo mechanisms, or dry-run support. Only memory_consolidate mentions 'dryRun' parameter; others are missing this critical safeguard.
Generic descriptions that lack LLM-optimized context. Examples: 'memory_stats' → 'Display memory statistics including entry counts, tags, quality scores, and graph metrics' (57 chars, vague on WHEN to call); 'context_health' → 'Audit memory integrity...' (no action guidance). Descriptions should be 50-200 chars and answer WHAT, WHEN, and OUTCOME.
Unclear parameter relationships and mutual exclusivity. memory_recall has both 'query' and 'tags' filters but does not document whether they are AND or OR combined, whether omitting both returns all entries, or what the default limit is. memory_merge_sessions does not explain what happens if no 'strategy' is provided.