Microsoft To Do (Microsoft 365) MCP Pack - Read-only access to Microsoft To Do tasks via Microsoft Graph v1.0
Four read-only tools with complete input schemas and clear descriptions (avg 180 chars, within baseline 194). All parameters typed and described. Tool names follow verb_noun pattern (list_, get_, find_). However, output schemas are undocumented, LLMs cannot plan downstream calls or extract structured data. Error handling returns raw API errors without recovery guidance. No tool annotations (readOnlyHint, idempotentHint). Missing pagination support despite list_tasks potentially returning large result sets. Parameter descriptions lack format constraints (e.g., 'days_ahead' has no min/max bounds).
Find upcoming, incomplete Microsoft To Do tasks across all of the user's to-do lists that are due within the next N days. Returns a flat list of due reminders with their list name, title, due date, and importance. Use to answer "what tasks are due soon" or "what are my upcoming reminders".
Get the full details of a single Microsoft To Do task by its list ID and task ID, including title, status, importance, full body/notes, due date, reminder time, created/completed times, and any checklist (sub-task) items. Use after list_tasks or find_due_tasks to read a to-do item in full.
List the Microsoft To Do task lists for the signed-in user, with display names and whether each is a well-known list (e.g. the default "Tasks" or flagged-email list). Use to discover a to-do list and its ID before listing tasks or reminders.
List the tasks in a Microsoft To Do list. Returns compact task summaries (title, status, importance, due date, created/completed times, and a body preview). Optionally filter by status. Use to browse a user's to-do list and see what tasks or reminders it contains.
Output schemas undocumented. LLMs cannot infer response structure, field names, or types. Prevents planning downstream calls and extracting required data.
Error responses return raw API status codes and text bodies without recovery guidance. 'error: 401, message: <html>...' gives LLM no actionable next step.
list_tasks lacks pagination. 'top' parameter caps at 100, but no cursor/offset or total_count returned. Large lists will be truncated silently.
find_due_tasks 'days_ahead' parameter has no min/max bounds in description. LLMs may pass 0, negative, or absurdly large values (e.g., 999999).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, idempotentHint). All tools are read-only and safe to retry, but LLMs cannot infer this without explicit hints.