Local-first semantic memory for AI agents — time-travel, contradiction radar, automatic synthesis. MLX (Apple Silicon) or CPU sentence-transformers (Linux) embeddings + sqlite-vec, MCP server. No cloud, no API keys.
The memo server provides 5 tools with reasonable descriptions and input schemas. Most tools follow verb_noun naming conventions (memo_entity_search, memo_event_poll, memo_feedback_implicit). Descriptions are present but vary in quality, some are conversational and helpful (entity_search explains the 'persons, technologies, projects' boosting behavior), while others are terse (memo_version is adequate but minimal). All tools have input schemas with type definitions and descriptions, meeting baseline requirements. However, several issues limit the score: (1) Parameter descriptions could be more prescriptive about constraints and formats. For example, 'mode' in memo_entity_search lists 'hybrid, vec, or bm25' but does not explain when to use each or what they mean. (2) Output schemas are not documented in the provided source, no response structures are visible, preventing validation of whether fields support downstream tool chaining. (3) Error handling strategy is not evident from the definitions. (4) The tool set is narrow and focused on memory operations, no discovery or introspection beyond memo_version. (5) STDIO transport limits practical deployment.
Search memories with entity-aware boosting. Extracts named entities (persons, technologies, projects) from the query and boosts results whose stored entities overlap. Useful for 'what do I know about Alice and React?' style queries.
Publish one `agent` event to the shared local event journal (multi-agent sync). Agent-id is this memory's own; the event lands in `memo events list` and is visible to other local agents via memo_event_poll.
Read `agent` events written by OTHER local agents since last poll. Idempotent: each event id is delivered once per session and excluded from later polls. Empty list means no new cross-agent activity.
Record implicit feedback (click/ignore) without requiring a thumbs up/down decision.
Get memo version info — the package version and the backend protocol version. Use this to check which version of memo is running.
Output schemas not documented. No visible response structures for any tool, LLM cannot infer what fields to expect or plan downstream chaining.
Enum constraints not formally declared in schemas. 'mode' in memo_entity_search and 'signal' in memo_feedback_implicit list values in descriptions but do not use JSON Schema 'enum' field, leaving LLM without machine-readable constraints.
Parameter descriptions lack prescriptive guidance. 'mode' does not explain when to use hybrid vs vec vs bm25. 'event_type' has no valid value examples or constraints. LLMs cannot infer these distinctions from names alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Error handling not documented. No guidance on what to do if source_id is invalid, query is empty, or event_type is malformed. No recovery paths provided.
STDIO transport limits deployment. Server cannot be accessed by hosted/remote MCP clients and is not testable via standard MCP client libraries.