Decentralized Knowledge Hub for AI - MCP server for managing memory spaces and episodic memories
The server provides 5 tools with basic Zod schemas and descriptions, but has significant gaps in parameter documentation, error handling, and output schema clarity. Tool naming follows conventions (verb_noun), but descriptions lack strategic guidance on WHEN to use each tool versus alternatives. Most tools have enum or string parameters with descriptions, but several lack depth (e.g., 'limit' and 'offset' in get_all_memories are typed as strings rather than integers, and memory_names lacks format guidance). No error handling patterns visible in the code, no recovery guidance, no retryable/fatal classification, no validation of inputs before API calls. Output schemas are not explicitly documented, forcing LLMs to infer response structure. The server does implement prompts and resources, which add context, but the core tool quality baseline is C-range.
Creates a new memory space with the specified name
Deletes a memory space with the specified name
Gets all memories for a user with optional filtering
Gets all memory spaces
Uploads a new memory to a specified memory space
get_all_memories uses string type for numeric parameters (limit, offset). Rubric baseline: numeric params should have min/max bounds (e.g., limit 1-100, offset >= 0). LLMs will pass absurd values like limit='99999' without validation.
No output schemas documented. Rubric: 'Document the output schema. LLMs need to know what fields to expect.' Users cannot see what fields create_space, upload_memory, or get_all_memories return. This forces inference and risks incorrect downstream chaining.
No error handling patterns visible. Rubric: 'Error responses must tell the LLM what to do next.' Code in createSpace.ts, deleteSpace.ts etc. does not show try-catch, error classification (retryable/user-fixable/fatal), or recovery guidance. If API calls fail, agents receive raw HTTP errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 8 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
delete_space lacks confirmation/dry-run support. Rubric: 'Irreversible operations (delete, send, publish) should support a dry-run or confirmation step.' No evidence of confirmation, preview, or undo mechanics. Agents can destroy spaces without safeguards.
get_all_memories memory_names parameter description lacks format guidance. Rubric: 'When a parameter has a regex pattern, length limit, or character restriction, state it in the description.' Current description says 'Comma-separated list' but no mention of max items, max length, or escaped comma handling.
Tool descriptions do not answer WHEN to use each tool versus alternatives. Rubric: 'A tool description must answer: What does it do? When should the LLM call it instead of a similar tool?' get_all_spaces, get_all_memories, and upload_memory lack strategic guidance on prerequisite discovery calls or dependency ordering.
No input validation hints in descriptions. Rubric: 'Describe the expected format, range, and allowed values directly in the parameter description.' space_name in create_space and delete_space has no guidance on length, allowed characters, or case sensitivity.
MemorySpaceType enum is referenced in createSpace.ts (z.nativeEnum(MemorySpaceType)) but not visible in source. Type definition is inferred from the request body schema {'type': 'enum', 'enum': ['AGENT_MEMORY', 'EXTERNAL_MEMORY']}. Cannot verify enum is properly constrained or documented.