Your memory across every AI you use: a self-hostable, append-only memory vault for AI assistants, over MCP.
afair defines 3 tools with clear names (remember, recall, observe) that follow verb_noun conventions. Descriptions exist and are substantive (100-200 chars), guiding LLM selection. However, schemas are incomplete: parameter types are declared but constraints (enums, min/max, regex patterns) are sparse. Input parameters lack the depth expected for production-grade tools. Error handling guidance is absent, responses do not tell LLMs what to do on failure. No documented output schemas. Tool composition is sound (each does one thing), but lack of schema rigor and absent error recovery patterns prevent higher scores.
Log observational data for internal auditing and improvement. Records operator feedback, pipeline diagnostics, and tuner metrics.
Query the vault for relevant memories by semantic or entity-based search. Returns matching events with optional pending corrections.
Store an event in the vault with optional blob attachment. Accepts text, structured data, or binary content via blob-ref.
No documented output/response schemas. LLMs cannot predict what fields to expect from tool responses, forcing guesswork on downstream composition.
Parameters accept untyped 'object' types (content in remember, payload in observe, decide in recall). LLMs cannot validate or constrain payloads; free-form objects invite hallucinated fields and broken downstream references.
No error handling guidance. Tool descriptions do not indicate what errors are possible, what they mean, or what the LLM should do on failure (retry, ask user, give up). Agents will be stuck on errors.
'entity_ids' and 'tags' in remember are arrays with no constraints on element types, max length, or valid value ranges. 'decide' parameter in recall is an opaque object with no field documentation.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2025-06-18+ | v2 |
'limit' parameter in recall has no min/max bounds. LLMs could pass 1000000, causing memory/latency issues. Should enforce 1 - 100 range per best practice.
No idempotency guarantees documented. 'remember' appears to append events, retries could duplicate records if network fails mid-response. Tool description should state idempotency behavior explicitly.