Persistent cross-session memory system for AI coding assistants with semantic search, consolidation, Ebbinghaus spaced repetition, and quality scoring
B12 demonstrates solid naming conventions (verb_noun pattern: memory_search, memory_store, memory_delete) and comprehensive parameter descriptions. However, output schemas are not documented in the provided source, and several tools lack clarity on return structures. Tool descriptions are adequate (100-200 chars) but could better explain WHEN to use each tool vs. alternatives. Error handling guidance is absent, tools do not indicate what to do on failure. Security considerations around LLM provider credentials are not visible in the MCP server code.
Consolidate similar memories into a single summary memory using LLM extraction. Requires B12_LLM_PROVIDER environment variable.
Return dashboard metadata: memory counts, tag distribution, recent activity, and graph statistics.
Soft-delete a memory by content hash (marks deleted_at timestamp, does not remove from database).
Apply Ebbinghaus spaced repetition algorithm to memories. Updates review intervals and difficulty scores based on FSRS (Free Spaced Repetition Scheduler).
Score memory quality based on content length, tag presence, type, and deduplication. Returns quality metrics.
Refine memory candidates using quality scoring and deduplication. Returns refined memories with quality scores.
Output schemas not documented. Tools return structured data but LLMs cannot see what fields to expect (e.g., memory_search returns what? Just content? With scores? With metadata?). This forces LLMs to guess and risks downstream tool failures.
No error handling guidance. Tools do not indicate what to do on failure (e.g., if B12_LLM_PROVIDER is missing for memory_consolidate, or if a content_hash is not found). LLMs receive no recovery path.
memory_consolidate and memory_refine descriptions lack clarity on WHEN to use them vs. memory_search. Both appear to filter/process memories, but the distinction is unclear. LLMs may pick the wrong tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Search memories using semantic similarity and full-text search with optional tag filtering and Ebbinghaus spaced repetition scoring
Generate session context summary from recent memories and session metadata. Used at session start to inject relevant memories.
Store a new memory with content, tags, type, and optional metadata. Returns the stored memory with its content hash.
Update an existing memory's content, tags, or metadata by content hash. Returns the updated memory.
memory_dashboard has empty input schema ({}). While this is technically valid, the description does not explain what metadata is returned or how to interpret it. LLMs cannot plan downstream use.
No pagination or result limits documented for memory_search. If a query matches thousands of memories, does the tool cap results? What is the default limit? Unbounded results risk context window exhaustion.