Persistent semantic memory MCP server (Python + Rust/PyO3)
Contextwell demonstrates solid tool design with complete input schemas, clear descriptions, and thoughtful parameter organization. All 6 tools have explicit descriptions (194 - 450 chars, within baseline 34 - 392 range). Parameters are well-typed with enums for constrained inputs (type, scope, format). However, output schemas are not documented, LLMs cannot predict response structure for chaining. Error handling is minimal; most tools return plain strings rather than structured error objects with recovery guidance. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels (WRITE, DESTRUCTIVE, READ_ONLY). Naming is verb-forward and clear (remember, recall, forget, list_memories, export_memories, import_file). Parameter descriptions are detailed and include format hints (ISO 8601, git repo context). Missing: output schema documentation, structured error responses, tool annotations.
Export memories in JSON, Markdown, or Org-mode format.
Delete a memory by its ID.
Import memories from a file (Markdown, Org-mode, plain text, or source code).
Browse stored memories with optional filters.
Search memories by meaning using semantic similarity.
Store a new memory. When ``CONTEXTWELL_CHUNKING=1`` is set and *content* exceeds ``CONTEXTWELL_CHUNK_SIZE`` words (default 400), the content is automatically split into overlapping chunks and stored separately. Each chunk shares a ``chunk_of`` group ID so that ``recall`` can deduplicate them, showing only the best-matching chunk.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination) for downstream tool chaining or data extraction.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are marked with Risk levels in metadata but not exposed to LLM via MCP annotations, preventing agents from reasoning about side effects.
Error handling returns plain strings ('Error: ...') rather than structured error objects. LLMs cannot classify errors as retryable, user-fixable, or fatal, limiting recovery guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
recall and list_memories accept pagination (k, limit, offset) but response structure not documented. LLMs cannot determine if results are truncated or how to fetch next page.
forget tool lacks confirmation/dry-run pattern for destructive operation. Agents cannot preview what will be deleted before committing.