MCP server exposing memharness bi-temporal agent memory: remember, recall, revise, diff, why, forget, stats.
Strong tool definitions with comprehensive parameter schemas and detailed descriptions. All 7 tools have clear names (verb_noun pattern: remember, recall, revise, forget, why, diff, stats) and descriptions (194 - 450 chars, well above 10-char minimum). Input schemas are fully specified with types, descriptions, and constraints (enums for basis, numeric ranges for confidence). Output schemas are documented in descriptions. Error handling guidance is present (e.g., 'writes over 1500 are rejected'). Main gaps: no tool annotations (readOnlyHint/destructiveHint/idempotentHint), no explicit output schema JSON, and some parameter descriptions could be more prescriptive about format/constraints (e.g., ISO 8601 timestamp format stated but not in schema pattern field).
Show what changed in the belief set over a time range. Returns facts that were added, revised, or retracted since a given timestamp. Useful for auditing what the agent learned or corrected in a session, or for understanding what changed between two points in time.
Retract a fact: mark it as no longer believed. The fact remains in the database (history is preserved) but is excluded from recall. Use when you learn something you stored was wrong, or when a temporary belief (e.g. a task state) is no longer relevant. Unlike revise, forget does not create a successor fact — use it for corrections you don't want to replace with a new belief, or for pruning transient state.
Retrieve facts from long-term memory. By default returns current beliefs (facts valid now). Use subject to filter by what the fact is about. Use query for full-text search (hybrid: FTS + vector if embeddings are available). Use as_of to ask what was believed at a past time — useful for understanding why a past decision was made. Use ranking_features to tune the recall ranking (e.g. boost recent facts, or facts from a specific source). Returns facts sorted by relevance, with confidence and source metadata.
Store ONE atomic fact in long-term memory: a single assertion, ideally one sentence (aim for under 250 characters; writes over 1500 are rejected). Split compound knowledge into multiple remember calls so each piece can be revised independently later. Use for durable knowledge about the user, their projects, preferences, decisions, and environment — not transient task state. If this contradicts an existing belief, find it with recall and use revise instead. Always fill source_ref with where this came from (session, file, URL) if known. If the fact describes code you just read at a known commit, also set source_commit (and source_path) so staleness checking can flag it when the repo moves past that commit.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools like 'remember', 'revise', 'forget' are destructive/write operations; 'recall', 'why', 'diff', 'stats' are read-only. Annotations help LLMs reason about side effects and retry safety.
Output schemas not formally documented in JSON Schema format. Descriptions mention return structure (e.g., 'Returns facts sorted by relevance, with confidence and source metadata') but no explicit schema object with typed fields. LLMs cannot reliably parse unstructured output.
Parameter 'ranking_features' in recall is an object with undocumented nested fields (recency_weight, source_ref_filter, basis_filter, min_confidence). Schema shows type 'object' but no properties definition. LLMs cannot infer valid keys.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Update a fact when new information contradicts it. Preserves history: the old fact remains in the database with valid_to set, and a new fact is created with valid_from set to when the change became true. This creates a chain you can query with why() to understand how beliefs evolved. Use revise (not remember + forget) so the system knows these are related and can track causality. Set valid_from to backdate the change if you learn it happened earlier.
Return aggregate statistics about the belief set: total facts, current beliefs, revisions, retractions, subjects, and storage size. Useful for monitoring memory health and understanding the scale of what's been stored.
Trace the history of a fact: show what led to it and what it led to. Returns the fact itself, its ancestors (facts that caused it via revise), and its descendants (facts it caused). Useful for understanding causality and for auditing belief evolution. The chain shows how a belief changed over time and what decisions depended on each version.
ISO 8601 timestamp parameters (as_of, valid_from, since, until) lack format constraints in schema. Descriptions mention ISO 8601 but schema does not enforce it (no 'format: date-time' or pattern). LLMs may pass invalid timestamps.
No pagination guidance for 'recall' results. Description mentions 'limit' parameter but does not state default (10), max, or whether results are sorted/cursored. Large result sets could exhaust context.