Production-grade persistent memory service for AI agents. Stores, searches, and manages episodic, semantic, and procedural memories using semantic similarity and recency-based retrieval.
memex demonstrates solid definition quality with clear tool names, comprehensive parameter descriptions, and good schema structure. All 4 tools follow verb_noun naming (store_, search_, delete_, count_) with explicit action semantics. Parameter descriptions are detailed (average ~100 chars), covering constraints, defaults, and use cases. Input schemas are present and typed for all tools. However, output schemas are not formally documented, tools return plain strings rather than structured JSON objects with typed fields. Error handling provides contextual guidance ('Invalid memory_type, must be one of: episodic, semantic, procedural') which is good, but no structured error categories or retry guidance. The server lacks tool annotations (destructiveHint for delete_memory, readOnlyHint for search_memories/count_memories) which would be valuable for agent planning.
Return the total number of stored memories for an agent/user pair.
Delete a specific memory by ID. The agent_id is used as an ownership check — agents cannot delete each other's memories.
Search memories using semantic similarity + recency decay. Returns top-k ranked results with scores.
Store a memory for an agent/user pair. Content is embedded locally (ONNX) and persisted to Postgres. Returns the memory ID on success.
Output schemas not formally documented. Tools return plain strings ('Stored memory {id}...', 'Found {n} memories...') rather than structured JSON with typed fields. LLMs cannot plan downstream tool calls or parse results reliably when return types are undocumented.
Tool annotations missing. delete_memory lacks destructiveHint; search_memories and count_memories lack readOnlyHint. These annotations guide agent planning and help prevent unintended side effects.
Error handling lacks structured categories. While error messages are contextually helpful (e.g., listing valid memory_type values), there is no way for the agent to distinguish retryable errors from user-fixable errors. Example: UUID parsing failure in delete_memory vs actual permission denial both return similar messages.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | A | 83 | 2026-07-28+ | v2 |
No dry-run or confirmation step for irreversible delete_memory operation. Agents can permanently delete memories without a chance to review. Per pattern:confirmation-request, destructive tools should support a dry-run or explicit confirmation.
search_memories returns results as a formatted string ('Found N memories...') rather than a paginated, structured JSON array. Cannot access individual memory fields for downstream processing. Violates pattern:paginated-result and pattern:response-shaper.