Persistent memory, project context, and research instrumentation for Claude Code. Provides tools for storing/retrieving memory entries, managing dispatch queues, tracking Protocol Documents, and monitoring project state with source attribution and Obsidian sync.
Server has 15 tools with complete input schemas and descriptions. Naming follows verb_noun convention (store_memory, get_memory, list_dispatches). Descriptions are present and substantive (avg ~120 chars), exceeding the 20-char minimum. However, output schemas are not documented in the source code provided, LLMs cannot see what fields to expect from responses. Parameter descriptions are adequate but lack explicit constraints (enums, ranges, formats). Error handling is not visible in the provided code. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) detected. Security considerations (audit logging, permission gates) are mentioned in comments but not enforced in tool definitions. Composition is sound, tools are single-responsibility and chainable (e.g., list_dispatches → get_dispatch). Overall: solid foundation, but missing output documentation and formal constraints that would elevate this to 75+.
Mark a Protocol Document as deprecated so it no longer appears in search results.
Retrieve cost summary including total spend, by-condition breakdown, and cache hit rate.
Retrieve prompt cache hit rate and token savings statistics.
Retrieve current project context including stage, summary, and recent memory entries.
Retrieve detailed information about a specific dispatch by ID.
Retrieve memory entries by category, tags, or search query with optional filtering by date range.
Retrieve a Protocol Document by its SHA-256 ID.
Output schemas not documented. LLMs cannot see what fields responses contain, forcing them to guess downstream field names and risk broken tool chains.
Parameter constraints not formalized. 'category' in get_memory accepts 'note|decision|discovery|milestone|null' but is not declared as an enum. 'limit' parameters lack min/max bounds. LLMs may pass invalid values.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes (store_memory, record_dispatch, register_pd, deprecate_pd) without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Retrieve overall project status including memory directory, dispatch count, and recent activity.
List recent dispatch observations with filtering by task type, outcome, or date range.
Record a Protocol Document usage event and increment its use count.
Record a new dispatch observation with tokens, latency, cost, and ablation condition.
Register a Protocol Document (PD) with content-addressing by SHA-256. Identical PDs deduplicate automatically.
Search Protocol Documents by task type and/or interaction pair, ordered by usage frequency.
Update project context: current stage and summary for the session.
Store a memory entry (note, decision, discovery, or milestone) with automatic UUID, source attribution, and optional Obsidian sync.
Error handling not visible in provided code. No recovery guidance, error classification, or actionable error messages documented. Agents cannot self-correct on failures.
Pagination not fully specified. list_dispatches and search_pds accept 'limit' but no 'offset', 'cursor', or 'next_token' for continuation. Large result sets may be truncated without clear indication.