A personal AI memory layer — remember everything, recall by meaning
Rekall has three well-named tools (recall, remember, forget) with clear action verbs and solid descriptions (150 - 250 chars each). All tools have input schemas with typed parameters and descriptions. However, output schemas are not formally documented, tools return JSON strings without declared field structures. The 'remember' tool lacks explicit error guidance for deduplication conflicts. Parameter descriptions are adequate but could specify constraints (e.g., 'limit' range, 'type' enum values). No tool annotations (readOnlyHint, destructiveHint) are present. Overall: functional definitions suitable for basic agent use, but missing production-grade schema documentation and error recovery patterns.
Remove a memory from active recall. The memory is archived, not permanently deleted — it can be recovered if needed.
Search your personal knowledge base for relevant memories, decisions, research, and past conversations. Use this FIRST before web search to check if you already have knowledge on this topic.
Store a piece of knowledge, preference, decision, or fact for future recall. Deduplicates automatically — if this knowledge already exists, it will be reinforced instead of duplicated. Set metadata.source to 'user-explicit' when the user directly states something, or 'observed' when you infer it from behavior.
Output schemas not documented. Tools return JSON strings without declared field structures (e.g., recall returns array of objects with id, content, type, confidence, score, source_document, source_title, but this is inferred from code, not in schema). LLMs cannot plan downstream calls without knowing response structure.
No tool annotations. 'recall' should have readOnlyHint=true; 'remember' and 'forget' should have destructiveHint=true (forget is reversible but modifies state). Agents cannot distinguish safe from risky calls without annotations.
Parameter 'type' in recall and 'type' in remember lack enum constraints. Code suggests type can be 'fact', 'instinct', 'decision', etc., but descriptions do not enumerate valid values. LLMs will hallucinate invalid types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. 'remember' deduplicates silently (returns 'reinforced' status) but does not guide the agent on what to do if dedup fails or if confidence is too low. 'forget' does not document what happens if memory_id is invalid.
Parameter 'limit' in recall lacks range constraints. Description says 'Maximum number of results' but does not specify min/max (e.g., 1 - 100). Agents may pass absurd values (0, 999999) causing performance issues.