Explainable long-term memory for LLMs — bucketed, provenance-tracked, scan-budgeted retrieval for agents and RAG. Provides memory_add, memory_search, and memory_ask tools via MCP protocol.
Three tools with clear verb-noun naming (memory_add, memory_search, memory_ask) and reasonable descriptions (40-60 chars). All tools have input schemas with typed parameters and descriptions. However, output schemas are not formally documented in the tool definitions, only visible in implementation code. Parameter descriptions are minimal (10-20 chars) and lack actionable constraints. No error handling guidance, no enum constraints, no pagination support despite search returning multiple results. Composition is sound (each tool has one responsibility), but descriptions could be more LLM-optimized per pattern:tool-description baseline (target 50-200 chars).
Store a memory utterance. Returns a write receipt (n_stored, superseded, status).
Answer a question from dated memory with evidence receipts.
Retrieve dated memory evidence without generating an answer.
Output schemas not formally documented in tool definitions. Implementation returns complex nested objects (hits array with fact/text/timestamp/status/source_ref/doc_name fields, trace metadata) but tool descriptions do not specify return structure. LLMs cannot plan downstream calls or extract fields reliably.
Parameter descriptions are too brief (10-20 chars) and lack actionable constraints. 'Search query' does not explain format, length limits, or expected content. 'Number of top results to return' lacks min/max bounds.
No error handling guidance. If store is empty, memory_search returns {error: 'store is empty'} but does not tell the LLM what to do next (e.g., 'Call memory_add() to populate the store'). Per pattern:recovery-guide, errors must guide recovery.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
memory_search accepts top_k parameter but no pagination support (no offset, limit, next_cursor, or total_count). If results exceed top_k, agent cannot iterate. Per pattern:paginated-result, tools returning lists must support pagination.
Tool descriptions lack WHEN-to-use guidance. 'Retrieve dated memory evidence' does not explain when to call memory_search vs memory_ask. Per pattern:tool-description, descriptions should state WHAT, WHEN, and prerequisites.