An MCP server for compiling To-Dos from multiple sources
Plan My Today has 14 tools with significant definition gaps. Most tools (11/14) have only 1-2 word descriptions ('List calendar events', 'List Linear issues') that fail to explain WHEN to use them or WHAT they return. No input schemas are visible in the provided source code for 13 of 14 tools, only list-all-tasks-today shows a partial schema. Parameter descriptions are absent across nearly all tools. The one exception, list-all-tasks-today, has a detailed description (200+ chars) and explicit input schema with parameter descriptions, but this is the outlier. Error handling is structured (StructuredToolError type exists) but tool-level recovery guidance is missing. No tool annotations (readOnlyHint, destructiveHint) are present despite clear risk classifications (READ_ONLY vs WRITE). Composition is reasonable, tools are single-purpose, but output schemas are undocumented.
Delegate a task to ROIbot
Dismiss a task from the task store
Fetch tasks and events from all sources, enrich with priority metadata, and write to the task store. Returns a confirmation with per-source item counts — use read-dashboard-tasks to access the full data. Sources: Calendar, Linear, Gmail, Google Drive, GitHub, Slack, Meeting Notes (Granola)
List assigned actions
List calendar events
List Google Drive activity
13 of 14 tools have no visible input schemas. Only list-all-tasks-today shows parameter definitions. This violates the critical requirement that every tool must declare its input contract.
11 of 14 tools have descriptions under 20 characters ('List calendar events', 'List Linear issues'). These fail to explain WHEN to use the tool, WHAT it returns, or how it differs from similar tools. LLMs cannot make informed selection decisions.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
List GitHub to-dos
List Gmail to-dos
List Linear issues
List meeting notes actions
List Slack to-dos
Read tasks from the dashboard task store
Restore a previously dismissed task
Set task priority
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present despite clear risk classifications. dismiss-task, restore-dismissed-task, set-task-priority, and delegate-task-to-roibot are WRITE operations that should be marked destructiveHint=true to signal irreversibility to agents.
Output schemas are not documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., task IDs for set-task-priority) without knowing what list-all-tasks-today or read-dashboard-tasks return.
Error handling is structured at the server level (StructuredToolError type) but tool descriptions lack recovery guidance. When a tool fails (e.g., 'Authorization failed'), the LLM has no guidance on what to do next (retry, ask user to reauthorize, try alternative source).