Bio-inspired persistent episodic memory for coding agents
Two tools with complete input schemas and reasonable descriptions. memory_save has good parameter coverage (summary, primary_path, related_paths, type, observations, decision) with type constraints and defaults. memory_recall includes pagination (limit, min_similarity). However, descriptions are terse (under 100 chars each), lack WHEN/WHY guidance, and output schemas are not documented. No error handling guidance visible. Tool names follow verb_noun pattern but lack clarity on what 'memory' abstraction means to an LLM unfamiliar with episodic memory systems.
Delegate to core memory_recall and return structured diagnostics.
Validate MCP input, delegate to core memory_save, and compact output.
Tool descriptions lack WHEN/WHY context. 'Validate MCP input, delegate to core memory_save, and compact output' describes implementation, not user intent. LLMs need: What does this tool do? When should I call it instead of alternatives? What does it return?
Output schemas not documented. Callers cannot plan downstream operations or extract required fields. memory_save and memory_recall responses are opaque to the LLM.
No error handling guidance. Code shows validation (anchor paths, episode types) but CallToolResult does not indicate what errors are retryable, user-fixable, or fatal. LLM cannot self-correct on invalid anchor paths.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2025-06-18+ | v2 |
Parameter 'type' is ambiguous without enum constraint. Code shows EPISODE_TYPE_ALIASES fallback to OBSERVATION, but LLM sees only 'Episode type (decision, bug_fix, failed_approach, observation, convention)', no enum in schema forces free-form strings.
memory_recall limit parameter lacks bounds. Default 5 is reasonable, but no min/max stated. Unbounded integers let LLMs pass absurd values (limit=999999) that could exhaust memory or timeout.