Model Context Protocol server for interacting with the Mochi spaced repetition platform API. Provides comprehensive access to cards, decks, and templates management.
The Mochi MCP server provides 15 tools with complete input schemas and descriptions. Naming follows verb_noun conventions consistently (create_card, get_deck, list_templates, etc.). Descriptions are present and reasonably detailed (avg ~120 chars), explaining WHAT each tool does and WHEN to use it. However, several issues limit the score: (1) Parameters lack granular type constraints, e.g., 'limit' has no min/max bounds despite appearing in 3 tools; (2) Output schemas are entirely absent, the code shows Tool definitions with inputSchema but never documents what these tools return; (3) Error handling is generic (lines 95-104 show basic HTTP error wrapping with no recovery guidance); (4) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear read/write/destructive semantics; (5) Resource files (MOCHI_FORMATTING_GUIDE.md, EXAMPLES.md) are referenced but not visible in source, so resource completeness cannot be verified. The implementation is solid but incomplete for production use.
Create a new flashcard in a deck. Cards support markdown content and can use templates with fields.
Create a new deck to organize cards.
Create a new card template with custom fields and styling.
Permanently delete a card from the trash.
Permanently delete a deck from the trash.
Permanently delete a template.
Output schemas completely absent. The code defines tools with inputSchema but never documents what fields, types, or data structures each tool returns. LLMs cannot plan downstream calls or extract return values without knowing output structure.
No parameter bounds for numeric inputs. 'limit' appears in list_cards, list_decks, and list_templates with no min/max constraints. LLMs may pass invalid values (0, -1, 999999) causing API errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Retrieve a specific card by its ID.
Retrieve a specific deck by its ID.
Retrieve a specific template by its ID.
List cards with optional filtering by deck and pagination support.
List all decks with optional filtering.
List all card templates with optional pagination.
Update an existing card's properties.
Update an existing deck's properties.
Update an existing template's properties.
No tool annotations despite clear semantics. Per spec 2026-07-28, tools should declare readOnlyHint (get_*, list_*), destructiveHint (delete_*), and idempotentHint where appropriate. This allows clients to apply extra caution or confirmation flows for destructive operations.
Generic error handling with no recovery guidance. Lines 95 - 104 catch HTTP errors and dump response text/JSON, but never tell the LLM what to do next. Per pattern:recovery-guide, errors should state 'Try X instead' or classify as retryable vs user-fixable.
Resource files not present in source code. The server references MOCHI_FORMATTING_GUIDE.md and EXAMPLES.md in read_resource() but these files are not included in the repository snapshot. Cannot verify documentation completeness or LLM usability guidance.
No idempotency guarantee stated for write operations. create_card, create_deck, create_template should declare idempotency key support or document retry semantics. Per pattern:idempotent-operation, agents retry on ambiguous failures, non-idempotent tools risk duplicate records.