Mimir has 18 tools with mostly complete schemas and descriptions. Naming is verb-forward and clear (remember, recall, forget, supersede). Descriptions average ~80 chars, meeting the 10-1024 baseline. However, several tools lack parameter descriptions (e.g., 'report' and 'savings' have empty input objects with no field guidance), and output schemas are not documented in the source. Error handling is minimal, no recovery guidance or actionable error messages visible. Security is reasonable (no secrets in params), but composition could be tighter: 'recall-inject' and 'rewrite' are specialized variants that could be unified. Tool descriptions are functional but terse; they state WHAT but rarely WHEN or WHY.
Session brief: a hard-capped digest of the project's most drift-preventing memories (gotchas + decisions)
Context-window guard: nudge before an auto-compact takes control
Health checks: database integrity, FTS availability, model presence
Soft-delete a node (--hard to remove permanently)
Show full records by reference (logs the access)
Create config + database and print setup instructions
Recent memories, newest first
Tools 'report' and 'savings' have empty input schemas (no parameters documented).
Output schemas are not documented in source code. LLMs cannot plan downstream calls or extract required fields without knowing what each tool returns. Baseline: 100% of A+ tools have documented return types.
No error handling guidance visible. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next. Baseline: A+ tools include recovery guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | <=2025-11-25 | v2 |
Dense code-context layer: signature map (outline) or single symbol's body (peek)
Return a single symbol's body (resolved against the project's code graph)
Search memories (and later docs/code) with hybrid ranking
Print at most one relevant memory for a prompt, or nothing if none clears the relevance floor
Capture a memory (refuses near-duplicates unless --force)
Activity table: day / week / month / year / all-time
Rewrite a shell command to use `mimir run` (used by the PreToolUse hook)
Token-savings analytics (outline/peek/filter/proxy)
Store overview: counts by kind, scope, database size
Mark OLD as superseded by NEW (OLD stops surfacing in recall, kept as history)
Count tokens in stdin or the given text (Mimir's bundled tokenizer)
Tool 'get' has a generic name and vague description ('Show full records by reference'). Does not clarify what 'records' are or when to use 'get' vs 'recall'. Ambiguous names cause LLM confusion.
Specialized tools 'recall-inject' and 'rewrite' are narrow variants that could be unified or better documented. 'recall-inject' is unclear without context about when it is called vs 'recall'. Composition could be tighter.