A portable markdown memory MCP server for any agent. Store durable, searchable memories as git-friendly markdown files.
Smriti has well-structured tool definitions with clear naming (verb-noun pattern: remember, recall, search, list, update, append, archive, delete, trace, consolidate). All 10 tools have descriptions and input schemas with typed parameters. However, descriptions are often generic and lack actionable context for LLM selection. Parameter descriptions exist but are sparse on constraints (enums, ranges, formats). Output schemas are not documented, LLMs cannot predict return structure. Error handling guidance is absent. Security considerations (permission gates, audit trails) are not visible in tool definitions. The metadata schema is comprehensive but overly permissive (many optional fields with minimal validation hints).
Append content to an existing memory without replacing it.
Archive a memory by setting its status to 'archived'.
Consolidate traces into a new memory or merge into an existing memory.
Permanently delete a memory file.
List all memories with optional filtering by category, status, or tags.
Retrieve a memory by ID and return its full markdown content.
Store a new memory with optional metadata. Returns the memory ID and file path.
Search memories by query text with optional filters. Returns ranked results with snippets.
Output schemas not documented. LLMs cannot predict return structure (fields, types, pagination). Tools like search() and list() accept limit/offset but return format is undocumented.
Destructive operations (delete, archive) lack confirmation/dry-run patterns. No guidance on error recovery or undo steps. delete() description does not warn of irreversibility.
Parameter constraints missing. 'limit' accepts 1 - 50 (search) and 1 - 10000 (list) but no enum/min/max in schema. 'status' field has no enum (active|archived). LLMs will hallucinate invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Record an observation or event trace for memory consolidation and learning.
Update a memory's metadata and/or content. Partial updates are supported.
Tool descriptions lack context for LLM selection. 'Retrieve a memory by ID' (recall) does not explain when to use recall vs search. No dependency hints (e.g., 'Use search() first if you only have a query').
No error handling guidance. Tools do not document what happens on invalid ID, missing memory, or permission denial. LLMs receive no recovery hints (retry, lookup, ask user).