Model Context Protocol server for Microsoft To Do (via Microsoft Graph).
Strong tool naming (verb_noun pattern throughout) and comprehensive parameter schemas using Zod. All 16 tools have descriptions and input schemas. However, output schemas are not explicitly documented in the source code, responses are inferred from handler implementations. Parameter descriptions are present but vary in detail; some lack format/constraint guidance. Error handling is minimal, no recovery guidance or actionable error messages visible. Risk annotations (read/write/destructive) are present but not exposed as tool annotations in the MCP protocol.
Add a checklist item to a task.
Show the current Microsoft sign-in state for this server — account, token expiry, and any pending device-code sign-in. Read-only; makes no Graph call.
Mark a task as completed (convenience for update_task with status='completed').
Create a new task in a To Do list.
Create a new To Do task list.
Delete a checklist item from a task. This cannot be undone.
Output schemas not documented. Tool descriptions do not specify what fields are returned or their types. LLMs cannot plan downstream tool calls or extract required data without knowing response structure.
No error handling guidance. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next. E.g., 'User not found. Try search_users()' is absent.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | <=2025-11-25 | v2 |
Permanently delete a task. This cannot be undone.
Permanently delete a To Do task list AND all tasks inside it. This cannot be undone.
Get a single To Do task by id.
List the checklist (sub-step) items of a task.
List all Microsoft To Do task lists for the signed-in user.
List tasks in a To Do list. Optionally filter by status and expand checklist items / linked resources inline.
Start signing in to Microsoft To Do via the device-code flow. Returns a short code and a URL — tell the user to open the URL in a browser, enter the code, and approve the consent; then have them ask you to continue (or call auth_status, or just retry the original action). The sign-in completes in the background. If already signed in, reports that instead. (You don't strictly need to call this — any tool that needs a token will start the same flow and return the code in its error.)
Update a checklist item (rename and/or check/uncheck).
Update fields of an existing task. Pass null for dueDateTime/reminderDateTime to clear them. Set status to 'completed' to complete the task.
Rename a To Do task list.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) not exposed in MCP protocol. Risk levels are tracked internally but not communicated to clients. Clients cannot determine which tools are safe to retry or destructive.
Parameter descriptions lack format/constraint guidance. E.g., 'displayName' says 'minimum 1 character' but does not specify max length, character restrictions, or examples. 'dueDateTime' accepts 'string|object' but does not explain the object structure.
Pagination cursors documented as 'opaque' but no guidance on when to use them or how to detect end-of-results. LLMs may not know when to stop paginating.