Microsoft To Do MCP
Microsoft To Do MCP
A Model Context Protocol (MCP) server that enables AI assistants like Claude and Cursor to interact with Microsoft To Do via the Microsoft Graph API. This service provides comprehensive task management capabilities through a secure OAuth 2.0 authentication flow.
Features
15 MCP Tools: Complete task management functionality including lists, tasks, checklist items, and organization features
Seamless Authentication: Automatic token refresh with zero manual intervention
OAuth 2.0 Authentication: Secure authentication with automatic token refresh
Microsoft Graph API Integration: Direct integration with Microsoft's official API
Multi-tenant Support: Works with personal, work, and school Microsoft accounts
TypeScript: Fully typed for reliability and developer experience
ESM Modules: Modern JavaScript module system
Related MCP server: microsoft-todo-mcp-server
Prerequisites
Node.js 16 or higher (tested with Node.js 18.x, 20.x, and 22.x)
pnpm package manager
A Microsoft account (personal, work, or school)
Azure App Registration (see setup below)
Installation
Option 1: Global Installation (Recommended)
# Install globally using npm
npm install -g microsoft-todo-mcp-server
# Or using pnpm
pnpm install -g microsoft-todo-mcp-server
# Or run directly with npx (no installation)
npx microsoft-todo-mcp-serverThe package provides three command aliases:
microsoft-todo-mcp-server- Full package namemstodo- Short alias for the MCP servermstodo-config- Configuration helper tool
Option 2: Clone and Run Locally
git clone https://github.com/jordanburke/microsoft-todo-mcp-server.git
cd microsoft-todo-mcp-server
pnpm install
pnpm run buildAzure App Registration
Go to the Azure Portal
Navigate to "App registrations" and create a new registration
Name your application (e.g., "To Do MCP")
For "Supported account types", select one of the following based on your needs:
Accounts in this organizational directory only (Single tenant) - For use within a single organization
Accounts in any organizational directory (Any Azure AD directory - Multitenant) - For use across multiple organizations
Accounts in any organizational directory and personal Microsoft accounts - For both work accounts and personal accounts
Set the Redirect URI to
http://localhost:3000/callbackAfter creating the app, go to "Certificates & secrets" and create a new client secret
Go to "API permissions" and add the following permissions:
Microsoft Graph > Delegated permissions:
Tasks.Read
Tasks.ReadWrite
User.Read
Click "Grant admin consent" for these permissions
Configuration
Environment Setup
Create a .env file in the project root (required for authentication):
CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secret
TENANT_ID=your_tenant_setting
REDIRECT_URI=http://localhost:3000/callbackTENANT_ID Options
organizations- For multi-tenant organizational accounts (default if not specified)consumers- For personal Microsoft accounts onlycommon- For both organizational and personal accountsyour-specific-tenant-id- For single-tenant configurations
Examples:
# For multi-tenant organizational accounts (default)
TENANT_ID=organizations
# For personal Microsoft accounts
TENANT_ID=consumers
# For both organizational and personal accounts
TENANT_ID=common
# For a specific organization tenant
TENANT_ID=00000000-0000-0000-0000-000000000000Token Storage
The server stores authentication tokens in tokens.json with automatic refresh 5 minutes before expiration. You can override the token file location:
# Using environment variable
export MSTODO_TOKEN_FILE=/path/to/custom/tokens.json
# Or pass tokens directly
export MS_TODO_ACCESS_TOKEN=your_access_token
export MS_TODO_REFRESH_TOKEN=your_refresh_tokenUsage
Complete Setup Workflow
Step 1: Authenticate with Microsoft
# If installed globally
git clone https://github.com/jordanburke/microsoft-todo-mcp-server.git
cd microsoft-todo-mcp-server
pnpm install
pnpm run auth
# Or if running locally
pnpm run authThis opens a browser window for Microsoft authentication and creates a tokens.json file.
Step 2: Create MCP Configuration
# Generate MCP configuration file
pnpm run create-config
# Or use the global helper (if installed globally)
mstodo-configThis creates an mcp.json file with your authentication tokens.
Step 3: Configure Your AI Assistant
For Claude Desktop:
Add to your configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"microsoftTodo": {
"command": "npx",
"args": ["--yes", "microsoft-todo-mcp-server"],
"env": {
"MS_TODO_ACCESS_TOKEN": "your_access_token",
"MS_TODO_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}For Cursor:
# Copy to Cursor's global configuration
cp mcp.json ~/.cursor/mcp-servers.jsonAvailable Scripts
# Development & Building
pnpm run build # Build TypeScript to JavaScript
pnpm run dev # Build and run CLI in one command
# Running the Server
pnpm start # Run MCP server directly
pnpm run cli # Run MCP server via CLI wrapper
npx microsoft-todo-mcp-server # Run globally installed version
# Authentication & Configuration
pnpm run auth # Start OAuth authentication server
pnpm run create-config # Generate mcp.json from tokens.json
# Code Quality
pnpm run format # Format code with Prettier
pnpm run format:check # Check code formatting
pnpm run lint # Run linting checks
pnpm run typecheck # TypeScript type checkingMCP Tools
The server provides 13 tools for comprehensive Microsoft To Do management:
Authentication
auth-status- Check authentication status, token expiration, and account type
Task Lists (Top-level Containers)
get-task-lists- Retrieve all task lists with metadata (default, shared, etc.)create-task-list- Create a new task listupdate-task-list- Rename an existing task listdelete-task-list- Delete a task list and all its contents
Tasks (Main Todo Items)
get-tasks- Get tasks from a list with filtering, sorting, and paginationSupports OData query parameters:
$filter,$select,$orderby,$top,$skip,$count
create-task- Create a new task with full property supportTitle, description, due date, start date, importance, reminders, status, categories
update-task- Update any task propertiesdelete-task- Delete a task and all its checklist items
Checklist Items (Subtasks)
get-checklist-items- Get subtasks for a specific taskcreate-checklist-item- Add a new subtask to a taskupdate-checklist-item- Update subtask text or completion statusdelete-checklist-item- Remove a specific subtask
Architecture
Project Structure
MCP Server (
src/todo-index.ts) - Core server implementing the MCP protocolCLI Wrapper (
src/cli.ts) - Executable entry point with token managementAuth Server (
src/auth-server.ts) - Express server for OAuth 2.0 flowConfig Generator (
src/create-mcp-config.ts) - Helper to create MCP configurations
Technical Details
Microsoft Graph API: Uses v1.0 endpoints
Authentication: MSAL (Microsoft Authentication Library) with PKCE flow
Token Management: Automatic refresh 5 minutes before expiration
Build System: ts-builds (tsdown) for fast TypeScript compilation
Module System: ESM (ECMAScript modules)
Limitations & Known Issues
Personal Microsoft Accounts
MailboxNotEnabledForRESTAPI Error: Personal Microsoft accounts (outlook.com, hotmail.com, live.com) have limited access to the To Do API through Microsoft Graph
This is a Microsoft service limitation, not an issue with this application
Work/school accounts have full API access
API Limitations
Rate limits apply according to Microsoft's policies
Some features may be unavailable for personal accounts
Shared lists have limited functionality
Troubleshooting
Authentication Issues
Token acquisition failures
Verify
CLIENT_ID,CLIENT_SECRET, andTENANT_IDin your.envfileEnsure redirect URI matches exactly:
http://localhost:3000/callbackCheck Azure App permissions are granted with admin consent
Permission issues
Ensure all required Graph API permissions are added and consented
For organizational accounts, admin consent may be required
Account Type Configuration
Work/School Accounts
TENANT_ID=organizations # Multi-tenant
# Or use your specific tenant IDPersonal Accounts
TENANT_ID=consumers # Personal only
# Or TENANT_ID=common for both typesDebugging
Check authentication status:
# Using the MCP tool
# In your AI assistant: "Check auth status"
# Or examine tokens directly
cat tokens.json | jq '.expiresAt'
# Convert timestamp to readable date
date -d @$(($(cat tokens.json | jq -r '.expiresAt') / 1000))Enable verbose logging:
# The server logs to stderr for debugging
mstodo 2> debug.logContributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Run
pnpm run lintandpnpm run typecheckbefore submittingSubmit a pull request
License
MIT License - See LICENSE file for details
Acknowledgments
Fork of @jhirono/todomcp
Built on the Model Context Protocol SDK
Uses Microsoft Graph API
Support
Available Tools
16 toolsarchive-completed-tasksA
Move completed tasks older than a specified number of days from one list to another (archive) list. Useful for cleaning up active lists while preserving historical tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | If true, only preview what would be archived without making changes | |
| sourceListId | Yes | ID of the source list to archive tasks from | |
| targetListId | Yes | ID of the target archive list | |
| olderThanDays | No | Archive tasks completed more than this many days ago (default: 90) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the core behavior (moving completed tasks) and the 'preserving historical tasks' trait, but with no annotations, it does not cover side effects like whether the move is reversible, permissions required, or failure behavior. The description carries the full burden and only partially satisfies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the action and purpose with no unnecessary detail. Every word earns its place, and the structure efficiently communicates the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main action and use case, but the absence of an output schema and annotations means it does not explain return behavior or edge cases, leaving some context gaps. For a mutation tool with no output schema, a bit more detail on expected results would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all four parameters with clear definitions (e.g., olderThanDays default 90), so the description's mention of 'specified number of days' adds little beyond the schema. The schema already provides parameter-level semantics effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool moves completed tasks older than a specified number of days from a source list to a target archive list, distinguishing it from siblings like delete-task (which removes tasks) or update-task (which changes task fields). The verb 'Move' and resource 'completed tasks' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Useful for cleaning up active lists while preserving historical tasks' provides clear context for when to use this tool, implying a maintenance/cleanup scenario. It does not explicitly describe when not to use it or name alternatives, but the context is clear enough for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth-statusA
Check if you're authenticated with Microsoft Graph API. Shows current token status and expiration time, and indicates if the token needs to be refreshed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses what the tool returns (token status, expiration time, refresh indication) and implicitly indicates it is a non-mutating check. However, it does not clarify whether it makes network calls or could trigger a refresh, which would enhance transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and contains no redundant information. Every clause adds value, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple status-check tool with no parameters, the description is complete enough. It explains what the tool does and what information it provides, without requiring an output schema. The low complexity means the description fully covers the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema is fully covered. The baseline for 0 parameters is 4, and the description adds no parameter-related info, which is appropriate. No additional meaning is needed for non-existent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks authentication status with Microsoft Graph API, showing token status, expiration time, and refresh need. It uses a specific verb and resource, and is clearly distinct from all sibling tools, which are task-related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used to verify authentication, but does not explicitly state when to use it, any prerequisites, or exclusions. There are no alternative auth tools among siblings, so it doesn't name alternatives, but it also doesn't provide contextual guidance like 'use before making API calls.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-checklist-itemA
Create a new checklist item (subtask) for a task. Checklist items help break down a task into smaller, manageable steps.
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ID of the task list | |
| taskId | Yes | ID of the task | |
| isChecked | No | Whether the item is checked off | |
| displayName | Yes | Text content of the checklist item |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as required permissions, side effects, idempotency, or return values. It only states the action and purpose, leaving the full burden on the description for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first states the action clearly, and the second adds useful context about the tool's purpose. There is no unnecessary wording, and it is front-loaded with the main verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema and no annotations, the description is adequate for a simple create operation but lacks additional context such as return value or prerequisites. The schema covers all parameters, so the main gap is behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all four parameters, so the baseline is 3. The description adds no additional parameter-specific meaning beyond what the schema already states; it merely reiterates the overall action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Create' and clearly identifies the resource as 'a new checklist item (subtask) for a task.' It further explains the purpose ('break down a task into smaller, manageable steps'), which distinguishes it from siblings like create-task and create-task-list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides only implied usage: 'Help break down a task into smaller, manageable steps' suggests when to use it, but it does not explicitly state when to use it versus alternatives, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-taskA
Create a new task in a specific Microsoft Todo list. A task is the main todo item that can have a title, description, due date, and other properties.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Description or body content of the task | |
| title | Yes | Title of the task | |
| listId | Yes | ID of the task list | |
| status | No | Status of the task | |
| categories | No | Categories associated with the task | |
| importance | No | Task importance | |
| dueDateTime | No | Due date in ISO format (e.g., 2023-12-31T23:59:59Z) | |
| isReminderOn | No | Whether to enable reminder for this task | |
| startDateTime | No | Start date in ISO format (e.g., 2023-12-31T23:59:59Z) | |
| reminderDateTime | No | Reminder date and time in ISO format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It does not mention that this is a mutating action, whether any permissions are needed, what happens on success (e.g., return value), or any potential side effects. The description mainly restates the obvious 'create' operation without deeper behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the action and resource. Every word adds value, and there is no redundant or filler content. It is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters and no output schema, the description is a bit thin. It does not explain the return value or mention that listId and title are required (though the schema handles that). It also lacks any guidance on error scenarios or authentication. However, the schema covers parameter details, and the core purpose is clear, making it minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented. The description mentions 'title, description, due date, and other properties,' which provides a high-level overview but adds little beyond the schema. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new task in a specific Microsoft Todo list. The verb 'Create' plus the resource 'task' and scope 'specific Microsoft Todo list' make the purpose unambiguous. It is clearly distinguished from sibling tools like 'create-task-list' (creates a list) and 'update-task' (modifies an existing task).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: one needs a list ID and wants to add a todo item. However, it does not explicitly specify when to use this over alternatives, nor does it mention any prerequisites or exclusion criteria. The context is somewhat implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-task-listA
Create a new task list (top-level container) in Microsoft Todo to help organize your tasks into categories or projects.
| Name | Required | Description | Default |
|---|---|---|---|
| displayName | Yes | Name of the new task list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does clarify that this creates a top-level container (not a nested one), which is a useful behavioral detail, and the create operation's mutating nature is evident. However, it does not disclose potential side effects, permissions required, or behavior on duplicate names, though the simplicity of the tool mitigates this gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence, front-loaded with the action and resource. Every phrase contributes meaning, with no redundant or extraneous words. The structure is clean and easily parseable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no nested objects), the description is largely complete. It covers what the tool does and hints at the purpose. It does not explain return values, but since no output schema exists, that is not necessary. Minor omissions like error handling or authentication do not detract significantly for this straightforward create operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes displayName with 'Name of the new task list' (100% coverage). The tool description adds semantic context by suggesting the name should reflect a 'category or project', which guides the agent on what value to provide for the parameter. This goes beyond the schema's minimal definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the specific resource ('a new task list (top-level container)') within Microsoft Todo. It also conveys the purpose ('organize your tasks into categories or projects') and 'top-level container' distinguishes it from creating tasks or subtasks, making it distinct from siblings like create-task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need to create a top-level container for tasks) but does not explicitly contrast it with alternatives like create-task or update-task-list. The phrase 'top-level container' hints at the distinction, but there is no direct guidance on when not to use it or when to prefer a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete-checklist-itemA
Delete a checklist item (subtask) from a task. This removes just the specific subtask, not the parent task.
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ID of the task list | |
| taskId | Yes | ID of the task | |
| checklistItemId | Yes | ID of the checklist item to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does clarify the deletion scope (only the subtask), which is useful, but it fails to mention that deletion is permanent, what happens to the parent task, or any required permissions. This leaves important behavioral aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the action and resource. Every word contributes value—the first sentence states the core function, and the second clarifies the precise scope. There is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the operation (delete a single checklist item) and full schema coverage, the description covers the essential purpose and scope. However, since no output schema is provided, it does not explain the expected response or side effects, leaving the agent to infer behavior. A brief note on success/failure or irreversibility would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all three parameters, achieving 100% coverage. The tool description does not add any additional parameter-level meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete') and names the exact resource ('checklist item (subtask)'), clearly distinguishing it from sibling tools like delete-task and delete-task-list. The added clarification that it only removes the subtask, not the parent task, further disambiguates its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating what is deleted and the scope caveat ('not the parent task'), which implicitly guides the user. However, it does not explicitly mention when to use this tool versus alternatives like update-checklist-item, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete-taskA
Delete a task from a Microsoft Todo list. This will remove the task and all its checklist items (subtasks).
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ID of the task list | |
| taskId | Yes | ID of the task to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: the task and all its checklist items (subtasks) will be removed. However, it does not mention irreversibility, required permissions, or failure behavior, leaving some uncertainty about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, directly states the action, and includes the important nuance about subtasks in the second sentence. There is no redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two parameters, no output schema), the description covers the essential behavior and side effects. It could mention permanence or prerequisites, but the current level is adequate for a straightforward delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes both required parameters (listId and taskId) with their purposes, achieving 100% coverage. The tool description adds no additional parameter-specific semantics, so it relies on the schema, which is already sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Delete' and identifies the resource as 'a task from a Microsoft Todo list,' making it clear what action is performed. It also mentions the cascading removal of checklist items, which distinguishes it from sibling tools like delete-task-list and delete-checklist-item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this tool is for deleting individual tasks within a Todo list, providing context that implies the appropriate use case. It does not explicitly contrast with sibling delete operations or state when not to use it, but the resource scope is unambiguous enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete-task-listA
Delete a task list (top-level container) from Microsoft Todo. This will remove the list and all tasks within it.
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ID of the task list to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It explicitly states that deleting the list removes all tasks within it, which is a critical destructive side effect. This goes beyond the minimal and provides useful warning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the main action and then the key side effect. No filler or redundant information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, one-parameter deletion tool with no output schema, the description sufficiently explains what happens (deletes list and all contained tasks). It covers the essential context without needing to explain return values or pagination. The cascading delete is the main behavioral nuance and is disclosed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the only parameter 'listId' with the description 'ID of the task list to delete'. The tool description does not add any extra meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Delete' and clearly identifies the resource as 'a task list (top-level container) from Microsoft Todo', which distinguishes it from sibling tools like 'delete-task'. The additional sentence about removing all tasks within the list further clarifies the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for deleting a task list but does not explicitly mention alternatives or when-not-to-use cases. The context is clear from the tool name and the top-level container description, but no direct comparison with sibling tools like 'delete-task' is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-checklist-itemsA
Get checklist items (subtasks) for a specific task. Checklist items are smaller steps or components that belong to a parent task.
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ID of the task list | |
| taskId | Yes | ID of the task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. 'Get' implies a read-only operation, but it does not explicitly disclose whether there are side effects, pagination, or the shape of the returned data. It explains the nature of checklist items, which adds some context, but not enough for higher transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the purpose. It avoids unnecessary wording and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with two documented parameters and no output schema, the description is largely complete. It could improve by mentioning that the result is a list of checklist item objects, but it is adequate for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with descriptions for both listId and taskId. The description does not add additional parameter semantics beyond what the schema already states, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function: 'Get checklist items (subtasks) for a specific task.' It uses a specific verb ('Get'), names the resource ('checklist items'), and defines scope ('for a specific task'). It also clarifies the concept of subtasks, which distinguishes it from sibling tools like create/update/delete-checklist-item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when needing to retrieve checklist items for a task) and the verb 'Get' contrasts with mutation siblings. However, it does not explicitly name alternatives or state when not to use it, so it falls short of a full guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-task-listsA
Get all Microsoft Todo task lists (the top-level containers that organize your tasks). Shows list names, IDs, and indicates default or shared lists.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of indicating safety. The verb 'Get' clearly implies a read-only operation, and the description further discloses what the return will contain (list names, IDs, default/shared status). It does not mention edge cases or limitations, but for a simple read tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core action, and every word adds value. There is no repetition or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters, no annotations, and no output schema, this description adequately covers what the tool does and what it returns. It is complete for the tool's simplicity, though it could mention the alternative organized view.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so the baseline is 4. The description does not need to explain any parameter semantics, and it correctly focuses on output rather than input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and a clear resource 'all Microsoft Todo task lists', clarifying its scope as top-level containers. However, it does not differentiate itself from the sibling tool get-task-lists-organized, which likely serves a similar or overlapping purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like get-task-lists-organized. The description simply states what it does, with no context about selection criteria, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-task-lists-organizedA
Get all task lists organized into logical folders/categories based on naming patterns, emoji prefixes, and sharing status. Provides a hierarchical view similar to folder organization.
| Name | Required | Description | Default |
|---|---|---|---|
| groupBy | No | Grouping strategy - 'category' (default), 'shared', or 'type' | |
| includeIds | No | Include list IDs in output (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. It explicitly describes the grouping logic (naming patterns, emoji prefixes, sharing status) and the hierarchical output, but it does not mention whether the operation is read-only, pagination behavior, or potential limitations of the heuristics. For a read list operation, this is partially adequate but lacks some safety/caveat context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the action ('Get all task lists'), and includes the key behavior (organized/folder-like). No filler or redundant details, appropriate size for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with two optional parameters, high schema coverage, and no output schema, the description covers the primary function and grouping inputs. It lacks explicit guidance on when to use it versus the sibling 'get-task-lists' and does not detail the return structure, but the provided information is sufficient for a basic read-oriented listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both groupBy and includeIds have descriptions), which establishes a baseline of 3. The description adds extra meaning by explaining that 'category' grouping is based on naming patterns and emoji prefixes, and 'shared' relates to sharing status. However, it does not clarify the 'type' enum value beyond the schema's own description, so it adds value but not comprehensively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves all task lists and organizes them into logical folders/categories based on naming patterns, emoji prefixes, and sharing status. This specific verb+resource+unique organizational behavior distinguishes it from the sibling 'get-task-lists' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when a hierarchical, organized view of task lists is desired, but it does not explicitly mention when to use this versus alternatives like plain get-task-lists, nor does it state when not to use. It provides implied usage but no explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-tasksB
Get tasks from a specific Microsoft Todo list. These are the main todo items that can contain checklist items (subtasks).
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Maximum number of tasks to retrieve | |
| skip | No | Number of tasks to skip | |
| count | No | Whether to include a count of tasks | |
| filter | No | OData $filter query (e.g., 'status eq \'completed\'') | |
| listId | Yes | ID of the task list | |
| select | No | Comma-separated list of properties to include (e.g., 'id,title,status') | |
| orderby | No | Property to sort by (e.g., 'createdDateTime desc') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It omits critical details such as that checklist items are not returned and require a separate call, and it does not mention pagination defaults, filtering behavior, or response format. The statement about containing subtasks could mislead an agent into thinking subtasks are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core purpose. The second sentence adds useful context about subtasks without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters and no output schema, the description is under-specified. It fails to explain how top/skip/filter/orderby relate to use cases, the separation of checklist items, or what a response looks like. The description leaves the agent with significant gaps in understanding the tool's full behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no additional parameter meaning beyond the schema; 'specific Microsoft Todo list' only restates listId's purpose without enhancing it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get tasks') and the resource ('from a specific Microsoft Todo list'), distinguishing it from sibling tools like get-task-lists (lists) and get-checklist-items (subtasks). The additional phrase 'main todo items' reinforces the hierarchy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving top-level tasks rather than subtasks, but does not explicitly name alternatives or provide exclusions. It offers clear context about the task type but leaves the when-to-use guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test-graph-api-explorationA
Test various Graph API queries to discover hidden properties or endpoints for folder/group organization in Microsoft To Do.
| Name | Required | Description | Default |
|---|---|---|---|
| testType | Yes | Type of test to run |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'testing queries' but does not disclose potential side effects (e.g., whether it makes read-only requests, requires special permissions, or could alter state), nor what the output looks like. This is a significant gap for an exploratory tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and purpose. It contains no filler or redundant information, earning a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is exploratory with a single enum parameter and no output schema or annotations. The description explains the goal but lacks practical guidance on how to use the test types, what results to expect, or any safety/behavioral warnings, making it incomplete for an agent to invoke effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for testType, so the baseline is 3. The description does not add any meaning beyond the schema, and the schema's description ('Type of test to run') is minimal, but the enum values are present. No improvement provided by tool description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Test') and resource ('Graph API queries'), and clearly states the goal of discovering hidden properties or endpoints for folder/group organization. This distinguishes it from sibling CRUD tools, which perform standard operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool for exploratory discovery of hidden Graph API capabilities. It does not explicitly mention when not to use it or name alternatives, but the purpose is sufficiently distinct from siblings, so the usage is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update-checklist-itemA
Update an existing checklist item (subtask). Allows changing the text content or completion status of the subtask.
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ID of the task list | |
| taskId | Yes | ID of the task | |
| isChecked | No | Whether the item is checked off | |
| displayName | No | New text content of the checklist item | |
| checklistItemId | Yes | ID of the checklist item to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of explaining behavioral traits. It states what can be changed but omits key details for a write operation: whether it does a partial update or full replacement, authorization needs, idempotency, or what the response contains. This ambiguity leaves significant operational unknowns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that immediately identifies the action and resource. It has no wasted words and is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema covers all parameters, but the description lacks information about the tool's operational behavior for a write operation (e.g., partial updates, response, prerequisites). Given no output schema and no annotations, the description is adequate for basic understanding but leaves important context gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a modest semantic layer by grouping parameters into 'text content' (displayName) and 'completion status' (isChecked), which helps conceptual mapping but doesn't add meaning beyond the schema's existing descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Update'), resource ('checklist item (subtask)'), and scope ('changing the text content or completion status'). It distinguishes itself from sibling tools like create-checklist-item and delete-checklist-item by specifying it targets existing items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool via 'existing' (not for creating) and 'update' (not for deleting), and the fields it mentions give clear use cases. However, it doesn't explicitly compare with alternatives or state when not to use it, so it's clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update-taskB
Update an existing task in Microsoft Todo. Allows changing any properties of the task including title, due date, importance, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | New description or body content of the task | |
| title | No | New title of the task | |
| listId | Yes | ID of the task list | |
| status | No | New status of the task | |
| taskId | Yes | ID of the task to update | |
| categories | No | New categories associated with the task | |
| importance | No | New task importance | |
| dueDateTime | No | New due date in ISO format (e.g., 2023-12-31T23:59:59Z) | |
| isReminderOn | No | Whether to enable reminder for this task | |
| startDateTime | No | New start date in ISO format (e.g., 2023-12-31T23:59:59Z) | |
| reminderDateTime | No | New reminder date and time in ISO format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must explain behavioral traits, but it only says 'allows changing any properties' without covering partial vs full update, error handling, required resources, or permissions. The phrase 'any properties' is also misleading because the schema restricts updatable fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with key information front-loaded. It is concise, though the second sentence is somewhat generic and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters, no annotations, and no output schema, the description is insufficient. It fails to explain partial update semantics, the necessity of listId/taskId, error conditions, or what a successful update returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 11 parameters. The description adds marginal value by naming a few examples ('title, due date, importance') but does not provide additional semantics beyond what the schema already contains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Update') and resource ('existing task in Microsoft Todo'), clearly distinguishing it from sibling tools like create-task and delete-task. It also mentions scope (Microsoft Todo), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Update an existing task' implies use when modifying an existing task rather than creating or deleting one, but it does not explicitly state when to prefer this tool over alternatives. No exclusions or alternative tool names are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update-task-listA
Update the name of an existing task list (top-level container) in Microsoft Todo.
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ID of the task list to update | |
| displayName | Yes | New name for the task list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden of behavioral disclosure. It only says 'Update the name' without mentioning permissions, side effects, or behavior when the list does not exist. This is minimal for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the verb and resource, and contains no filler. It is highly concise while conveying the essential action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only two required parameters and no output schema, so its simplicity lowers the need for extensive context. However, the description could mention expected outcome or error handling, though the existing reference to 'existing task list' provides some prerequisite context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both listId and displayName, achieving 100% coverage. The description adds no additional meaning beyond the schema field names, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update the name') and the specific resource ('an existing task list'), with the qualifier 'top-level container' distinguishing it from task-level operations. It is specific and differentiates well from siblings like update-task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'existing task list' implies this is for renaming an already-created list, and 'top-level container' clarifies scope, but there is no explicit guidance on when to use this tool over alternatives or exclusions. The intended use is reasonably clear but not formally contrasted with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
16 tool updates
v1.1.3- First observed
archive-completed-tasks - First observed
auth-status - First observed
create-checklist-item - First observed
create-task - First observed
create-task-list - First observed
delete-checklist-item - First observed
delete-task - First observed
delete-task-list - First observed
get-checklist-items - First observed
get-task-lists - First observed
get-task-lists-organized - First observed
get-tasks - First observed
test-graph-api-exploration - First observed
update-checklist-item - First observed
update-task - First observed
update-task-list
TDQS
Scored across 16 tools
There is overlap between get-task-lists and get-task-lists-organized, which both retrieve task lists but with different presentation formats. Other tools are distinct, but test-graph-api-exploration is vague and could be confused with exploration tasks. Overall, most tools are clearly delineated, but the near-duplicate pair creates ambiguity.
Most tools follow a consistent verb_noun pattern (get-, create-, update-, delete-). Minor deviations include 'auth-status' (noun-like) and 'test-graph-api-exploration' (unusual object phrase), but these are slight and the majority are consistent. The pattern is mostly predictable.
With 16 tools, the server sits at the borderline of what feels heavy for a Todo-focused MCP. It includes CRUD for lists, tasks, and checklist items, but also a redundant list retrieval and an exploratory tool, pushing the count slightly high. Still, the core coverage justifies the number.
The server provides full CRUD for task lists, tasks, and checklist items, which covers the main domain operations. Minor gaps include no singular 'get-task' or 'get-checklist-item' tools and no arbitrary task-moving operation, but these can be worked around with existing tools. Archiving and auth status round out the surface.
Maintenance
Related MCP Connectors
Microsoft To Do (Microsoft 365) MCP Pack
Create, list, and complete todo items through MCP.
Local-first task manager: create, edit, and complete tasks, projects, and checklists via MCP.
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables comprehensive Microsoft To Do task management through Microsoft Graph API with Entra ID OAuth authentication. Supports creating, updating, and managing todo lists, tasks, reminders, and due dates through natural language.-
- AlicenseAqualityCmaintenanceMCP server for Microsoft To Do that enables managing task lists, tasks, and checklist items via the Microsoft Graph API with zero-config authentication.132Apache 2.0
- AlicenseNot gradedqualityAmaintenanceAn MCP server to read and manage your Microsoft To Do tasks through the Microsoft Graph To Do API.MIT
- AlicenseAqualityBmaintenanceConnects Microsoft To Do to Claude, enabling task fetching, planning, completion, note-taking, and checklist management through natural language.9MIT