Dart MCP server demonstrates solid tool coverage with 16 well-structured tools across task and document management. All tools have descriptions (194-char baseline met) and explicit JSON Schema input definitions with type constraints and patterns. Naming follows verb_noun convention consistently (get_, list_, create_, update_, delete_). However, several gaps prevent a higher score: (1) output schemas are not documented in the source, LLMs cannot predict response structure; (2) error handling guidance is absent, no recovery hints or categorization; (3) some parameter descriptions lack format/constraint details (e.g., 'Filter by assignee name or email' doesn't specify format); (4) no pagination guidance in list_tasks despite accepting limit/offset; (5) custom properties and task relationships use complex oneOf schemas that may confuse LLMs. Tool composition is strong, tools chain well (create_task returns ID usable in update_task, add_task_comment). Descriptions are action-oriented and state what the tool does.
Add a comment to a task.
Create a new document in Dart. You can specify title, text content, and folder.
Create a new task in Dart. You can specify title, description, status, priority, size, dates, dartboard, assignees, tags, parent task, custom properties, and task relationships.
Delete a document by its ID.
Delete a task by its ID. This will move the task to trash.
Get information about the user's space, including all of the possible values that can be provided to other endpoints. This includes available assignees, dartboards, folders, statuses, tags, priorities, sizes, and all custom property definitions.
Output schemas not documented. LLMs cannot predict response structure for any tool, forcing them to guess what fields are returned and breaking downstream tool chaining.
No error handling guidance. Tools lack recovery hints (e.g., 'If task not found, try list_tasks() to find the correct ID'). LLMs cannot self-correct on failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Retrieve a dartboard (project or list) by its ID or title.
Retrieve an existing document by its ID. Returns the document's information including title, text content, and folder.
Retrieve a folder by its ID or title.
Retrieve an existing task by its ID. Returns the task's information including title, description, status, priority, dates, custom properties, and more.
Retrieve a view by its ID or title.
List documents from Dart with optional filtering parameters. You can filter by folder, title, and more.
List comments on a task.
List tasks from Dart with optional filtering parameters. You can filter by assignee, status, dartboard, priority, due date, and more.
Update an existing document. You can modify its title, text content, and folder.
Update an existing task. You can modify any of its properties including title, description, status, priority, dates, assignees, tags, custom properties, and task relationships.
Complex custom properties schema uses oneOf with 10 variants. LLMs struggle to construct valid customProperties objects. Simplify by documenting examples or providing a discovery tool.
list_tasks and list_docs accept limit/offset but lack pagination guidance in descriptions. No mention of default limit, max limit, or total count in response. LLMs may request excessive results.
get_dartboard, get_folder, get_view accept both 'id' and 'title' but neither is required. Ambiguous which to use when both are provided. Should clarify precedence or make one required.