Audit-grade memory backbone for agent teams. Bi-temporal facts, deterministic retrieval, signed provenance, role-based access, per-agent budgets, and hard tenant isolation.
Attestor MCP provides 9 well-structured memory management tools with consistent naming patterns (memory_*), comprehensive parameter schemas, and clear descriptions. However, output schemas are not documented, error handling lacks recovery guidance, and no tool annotations are present. Schemas are complete with types and descriptions for all parameters, which is a strong baseline. The descriptions are adequate (averaging ~120 chars) but could be more prescriptive about when to use each tool vs. alternatives. No critical naming issues, but composition could be tighter, memory_recall and memory_search overlap significantly without clear guidance on which to call in different scenarios.
Store a new memory/fact about the user or project. Use this to remember preferences, decisions, context, and important facts.
Soft-delete a memory (mark as archived; temporal replay still finds it).
Get a specific memory by ID with full metadata and provenance.
List memories with optional filters by status, category, entity, or namespace.
Search memories for relevant context using natural language similarity and optional filters.
Search memories by text, category, entity, or status with optional filters.
Get statistics about the memory store (counts by category, entity, namespace, etc.).
Output schemas not documented. Tools return results but LLMs cannot determine what fields to expect, breaking chaining and forcing guesswork during planning.
Ambiguous tool overlap: memory_recall (natural language similarity) and memory_search (text/filter-based) are not clearly differentiated. No guidance on when to use each. LLMs will guess wrong half the time.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). memory_delete claims to be soft-delete (reversible), but this semantic is not signaled to clients via annotation.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 48 | - | v1 |
Get chronological history of an entity across all memories.
Update the content, category, tags, or entity of an existing memory.
Error handling not visible in source. No evidence of recovery guidance (e.g., 'If memory not found, try memory_search()'). LLMs lack guidance on error resolution.
memory_stats has no description of what statistics are returned (counts by what dimensions?). Description is too sparse to guide selection.
memory_timeline description does not explain what 'chronological history' means or what fields are included in the result. LLMs cannot reason about when to use it.