marvin-mcp has well-structured tool definitions with clear naming (verb_noun pattern), documented schemas using Zod, and descriptions for all tools. However, parameter descriptions are sparse or missing for several tools (marvin_brief, marvin_hierarchy, marvin_tasks has minimal param docs), and output schemas are not explicitly documented. The apply tool is complex with discriminated unions but lacks guidance on error recovery. No tool annotations visible in source despite errorReporting=true claim. Descriptions average ~80 chars, below the 194-char baseline for A+ tools.
Apply a batch of task changes as one ordered set
Get today's brief: what is scheduled, what is overdue, and what is in the inbox
Capture a task into the inbox or a specific container
Mark a task done
List projects and categories
Search and filter tasks
Output schemas not documented. Tools return results but LLMs cannot predict response structure (fields, types, pagination). Forces agents to guess downstream field names.
Parameter descriptions missing or minimal. marvin_brief and marvin_hierarchy have empty input schemas with no guidance. marvin_tasks params (query, parent, done, unscheduled, overdue) lack descriptions explaining when to use each filter.
No error recovery guidance. apply tool performs destructive operations (delete, update) but provides no guidance on what errors mean or how to recover. No dry-run or confirmation pattern.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2025-06-18+ | v2 |
Tool annotations claimed (errorReporting=true, toolAnnotations=true) but not visible in source code. No readOnlyHint, destructiveHint, or idempotentHint attributes found in tool definitions.
Ambiguous parameter naming in marvin_tasks. 'query' could mean full-text search, regex, or substring match. 'parent' could be ID or name. Descriptions needed to disambiguate.