recall-mcp-v2 has well-structured tool definitions with complete JSON schemas and clear descriptions. All 5 tools are explicitly registered with proper input schemas including types, enums, and required fields. Descriptions are concise (10-50 chars) and action-oriented. However, output schemas are not documented, LLMs cannot predict response structure. Parameter descriptions in the schema are minimal (e.g., 'Namespace for the memory' lacks guidance on format/constraints). Error handling is absent from tool definitions. The server uses Zod for validation but does not expose validation rules or recovery guidance to the LLM. Security is well-handled server-side (auth token, constant-time comparison), but this is not visible in tool definitions.
Get a markdown digest of strong/medium memories in a namespace
Forget or weaken a memory by ID
Get memory by ID
Insert a new memory
Search memories by query
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Forces agents to guess what data is returned.
Parameter descriptions lack format/constraint guidance. E.g., 'Namespace for the memory' does not explain valid characters, length limits, or naming conventions. LLMs cannot validate input before calling.
No error handling guidance in tool definitions. Zod validation happens server-side but LLMs see no recovery hints. Invalid input returns generic errors without actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 76 | 2026-07-28+ | v2 |
recall_forget combines two distinct operations (delete vs weaken) in one tool. Should split into recall_delete and recall_weaken for single responsibility.
recall_digest description is vague ('Get a markdown digest'). Does not explain when to use it vs recall_search, what 'strong/medium' filtering means, or output format.