MCP server exposing HopfieldMemory tools over stdio
10 tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. All tools have descriptions (10-100+ chars), and input schemas are present with type definitions. However, most parameter descriptions are minimal (1-2 words), output schemas are not documented, and error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint). Naming is verb-forward but generic (store, retrieve, query). This is a typical community server, functional but not production-grade.
Return all stored fact strings (empty if none). Same file is shared across agents when using HOPFIELD_STATE_PATH.
Load memory state from a file
Report match quality metrics for a query
Query the memory and return the best matching fact
Query the memory and return the best matching fact if similarity exceeds threshold, otherwise None
Retrieve facts from memory based on a query
Save the current memory state to a file
Output schemas not documented. Tools return dicts, lists, and strings but LLMs cannot see field names, types, or structure. E.g., retrieve() returns [[fact, weight], ...] but no schema explains this nested structure.
Parameter descriptions are minimal (1-2 words). 'The fact to store', 'The query string', 'The question to query' lack context on format, constraints, or when to use each tool. LLMs cannot distinguish query() from query_or_none() from retrieve() without richer descriptions.
No tool annotations. Tools like store() and store_negative() (WRITE) and retrieve() (READ_ONLY) lack readOnlyHint/destructiveHint annotations. Agents cannot infer safety or retry semantics.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Store a fact in the Hopfield memory network
Store a negative pattern (repulsive memory) in the network
Report persistence path, whether it exists on disk, fact count, and encoder kind.
No error handling guidance. Tools return raw dicts or None on failure (e.g., query_or_none returns None if similarity < threshold). No actionable error messages or recovery hints for LLMs.
Ambiguous tool naming. query(), query_or_none(), and retrieve() all search memory but differ subtly. Descriptions do not explain when to use each. LLMs will guess wrong.