Local, durable, provenance-aware memory for agents.
Strong schema definitions with proper type constraints and validation patterns. All 9 tools have descriptions and input schemas with Pydantic annotations. Naming follows verb_noun convention (memory_put, memory_get, memory_search, etc.). However, descriptions are terse (10-80 chars, below the 50-200 char baseline for LLM optimization), and parameter descriptions lack actionable guidance on constraints, dependencies, and error recovery. Output schemas are inferred from return type hints but not explicitly documented. Error handling is minimal, no recovery guidance or categorization.
Delete one memory by exact namespace and key.
Export unexpired memories as deterministic JSON Lines.
Retrieve one unexpired memory by exact namespace and key.
Report local SQLite storage health.
List unexpired memory namespaces with bounded pagination.
Delete every memory below a namespace prefix.
Create or replace one memory with provenance and optional sliding TTL.
Descriptions are too terse (10-80 chars vs. 50-200 char baseline). LLMs cannot determine when to select memory_delete vs memory_purge_namespace, or when memory_sweep_expired is needed. Add context: 'When to use', 'What it returns', 'Prerequisites'.
Parameter descriptions lack actionable constraints. E.g., 'namespace' says '1-16 items, each 1-255 chars, no dots/spaces/NUL' but LLMs cannot read JSON Schema patterns, this must be in the description text. Same for 'ttl_minutes' (>0, <=525600) and 'limit' (1-1000).
No error handling guidance. Tools raise ToolError but do not tell LLMs what to do next. E.g., memory_get returns None silently, should it suggest memory_search? memory_put raises 'Memory write did not persist', is this retryable? Add recovery hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Search unexpired memories within a namespace prefix.
Delete expired memories immediately.
Destructive tools (memory_delete, memory_purge_namespace, memory_sweep_expired) lack confirmation or dry-run support. An agent could accidentally purge an entire namespace. Add a 'confirm' parameter or separate 'preview' tool.
Output schemas not documented. Return types are inferred from type hints (MemoryEntry, HealthReport) but LLMs cannot see the field structure. Add explicit schema documentation or return examples in docstrings.