MCP server for Mora, a personal memory and context management system that integrates with AI tools via loopback HTTP and companion device APIs
Mora provides 6 tools with basic descriptions and parameter schemas, but falls short of production quality. All tools have descriptions (10-80 chars, below the 194-char baseline), and all parameters have type definitions and descriptions. However, descriptions are generic and lack actionable context for LLM selection. No output schemas are documented. Error handling is absent, no guidance on recovery, retryability, or user-fixable vs fatal errors. The tool set lacks composition clarity: 'think' and 'search_memory' overlap functionally; 'brief' and 'get_entity' are near-duplicates. No tool declares permissions, audit trails, or idempotency guarantees. Parameter constraints are minimal (no enums, ranges, or format specs). The server is read-heavy (5 of 6 tools are READ_ONLY) with one write tool ('write_memory') that lacks confirmation or dry-run support.
Get a brief summary of information about an entity, optionally with envelope, token limits, and time range
Retrieve information about a named entity from the vault
Prepare context for a meeting by retrieving relevant memories and information
Search the memory vault for entries matching a query, optionally scoped and limited
Query the vault with a question or thought, optionally scoped and limited
Write a new memory entry to the vault with title, text, type, scope, and source
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., does 'think' return a list or a single result? What fields are in each item?). Baseline: 100% of A+ tools document return types.
Descriptions are too short (10-80 chars vs 194-char baseline) and lack actionable context. 'Query the vault with a question' does not explain WHEN to use 'think' vs 'search_memory' vs 'brief'. LLMs cannot disambiguate overlapping tools.
Functional overlap: 'think' and 'search_memory' both query the vault; 'brief' and 'get_entity' both retrieve entity info. No descriptions explain the distinction. LLMs will waste reasoning cycles choosing between near-duplicates.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
No error handling guidance. If 'write_memory' fails, the LLM has no recovery path. No distinction between retryable (transient) and user-fixable (invalid input) errors. No confirmation step for the destructive write operation.
No parameter constraints (enums, ranges, formats). 'limit' and 'max_tokens' are unbounded, LLMs can pass absurd values (e.g., limit=999999). 'type' in write_memory has no enum of valid types.