Local, private, and portable lifelong memory management for AI agents.
This server has critical definition quality issues. Both tools have minimal descriptions (under 20 chars each), no formal input schemas visible in the MCP tool registration, missing parameter type information, and no documented output schemas. The code shows CLI argument parsing via Commander, not MCP protocol tool registration. While the underlying logic is sound, the tool definitions lack the structure and rigor required for agent interaction. No error handling guidance, no input validation messaging, and no schema constraints are visible in the tool definitions.
Search the memory lake for a keyword
Store a new memory in the lake
No formal MCP tool schema definitions visible. Tool definitions are inferred from Commander CLI arguments, not explicit MCP tool registration. Input parameters lack JSON Schema type definitions (string, number, boolean, etc.).
Tool descriptions are too short (<20 characters). 'Store a new memory in the lake' (30 chars) and 'Search the memory lake for a keyword' (37 chars) lack context for when/why an agent should use each tool. Descriptions should be 50-200 chars and answer: What does it do? When should I use it? What does it return?
No output schemas documented. Agents cannot predict what fields they'll receive from store() or query(). query() logs results to console rather than returning structured data; store() returns success/failure status only. Agents need documented return types to plan downstream actions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 24 | 2026-07-28+ | v2 |
Parameter descriptions are missing or incomplete. The 'tags' parameter on store has a description ('Comma-separated tags') but no type annotation in the schema. The 'keyword' parameter on query has description but type is inferred only from context, not declared.
No error handling guidance. If query() finds no matches or store() fails to write (e.g. disk full), the tool logs an emoji message to console but does not return structured error data. Agents cannot detect failures or know how to recover.
store() accepts a 'tags' parameter with default value but no enum constraint or validation. Agents can pass arbitrary strings; no guidance on tag format, max count, or character restrictions.
query() returns results via console.log() rather than as structured tool output. The agent cannot extract or process search results programmatically, all output is text printed to stdout.