Persistent cross-session memory for Claude Code and any MCP-compatible client.
Bloom provides well-structured tool definitions with complete JSON schemas, clear descriptions, and thoughtful parameter constraints. All 6 tools have descriptions (avg ~100 chars), input schemas with types, and reasonable defaults. Naming follows verb_noun convention (recall, remember, recent, forget, sessions, stats). However, descriptions lack actionable context about when to use each tool vs. alternatives, and error handling guidance is minimal. Output schemas are documented in code but not exposed to clients. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles.
Soft-delete a single turn by id so it no longer appears in recall or recent.
Search Bloom memory for past turns matching a query, ranked by keyword overlap and recency.
Return the last N turns from a specific session, in chronological order.
Persist a single turn to Bloom memory so future recall calls can surface it.
List known sessions with turn counts and timestamps.
Return DB stats: turn count, session count, size, schema version.
Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools like 'forget' (reversible delete) and 'remember' (write) should declare their risk profile to clients.
Descriptions lack actionable context. 'Search Bloom memory for past turns' does not explain when to call recall vs. recent, or how session_bias differs from filter_session. LLMs cannot disambiguate.
No error recovery guidance. Tool responses return {ok: true/false, error: string} but do not guide LLM on next steps. E.g., 'content too large' should suggest chunking or compression strategies.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | <=2025-11-25 | v2 |
Output schema not exposed to clients. Code documents return structure (ok, count, results, id, ts) but MCP tool definitions do not include outputSchema. Clients cannot validate or plan downstream calls.
'stats' tool name is generic and vague. Does it return database statistics, session statistics, or performance metrics? Rename to 'get_database_stats' or 'describe_memory_usage' for clarity.