Microsoft Todo MCP Service
微软待办 MCP
此 MCP(模型上下文协议)服务允许您使用 AI 助手与 Microsoft To Do 任务进行交互。
设置说明
1. 先决条件
Node.js 16 或更高版本
npm
Microsoft 帐户
Azure 应用程序注册(请参阅下面的设置)
2.安装
安装此工具分为两个部分:
安装包
设置身份验证(需要克隆存储库)
步骤 1:安装软件包
npm install -g @jhirono/todomcp第 2 步:设置身份验证
即使您全局安装该包,您也需要克隆存储库来完成身份验证过程:
git clone https://github.com/jhirono/todoMCP.git
cd todoMCP
npm install3. Azure 应用注册
转到Azure 门户
导航至“应用程序注册”并创建新的注册
为您的应用程序命名(例如“To Do MCP”)
对于“支持的帐户类型”,请根据您的需要选择以下选项之一:
仅限此组织目录中的帐户(单租户) - 供单个组织内部使用
任何组织目录中的帐户(任何 Azure AD 目录 - 多租户) - 可供跨多个组织使用
任何组织目录中的帐户和个人 Microsoft 帐户- 适用于工作帐户和个人帐户
将重定向 URI 设置为
http://localhost:3000/callback创建应用程序后,转到“证书和机密”并创建一个新的客户端机密
转到“API 权限”并添加以下权限:
Microsoft Graph > 委派权限:
任务.阅读
任务.读写
用户.读取
单击“授予管理员同意”以获取这些权限
4.配置
在根目录中创建一个.env文件,其中包含以下信息:
CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secret
TENANT_ID=your_tenant_setting
REDIRECT_URI=http://localhost:3000/callbackTENANT_ID 选项:
organizations- 适用于多租户组织帐户(如果未指定则为默认)consumers- 仅适用于个人 Microsoft 帐户common- 适用于组织帐户和个人帐户your-specific-tenant-id- 用于单租户配置
例子:
# 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-000000000000Related MCP server: Todoist Python MCP Server
用法
完整的工作流程
进行身份验证以获取令牌(必须从克隆的存储库完成)
npm run auth这将打开一个浏览器窗口,供您向 Microsoft 进行身份验证并创建
tokens.json文件。创建 MCP 配置文件(必须从克隆的存储库完成)
npm run create-config这将创建一个包含您的身份验证令牌的
mcp.json文件。设置全局 MCP 配置
# Copy the mcp.json file to your global Cursor configuration directory cp mcp.json ~/.cursor/mcp-servers.json这使得 Microsoft To Do MCP 可在您的所有 Cursor 项目中使用。
开始使用您的 AI 助手
在 Cursor 中,您现在可以在任何项目中直接使用 Microsoft To Do 命令
尝试使用
auth status或list up todos等命令来开始
Claude Desktop 配置文件位于:
macOS :
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows :
%APPDATA%\Claude\claude_desktop_config.jsonLinux :
~/.config/Claude/claude_desktop_config.json
可用工具
auth-status:检查您的身份验证状态get-task-lists:获取所有待办任务列表create-task-list:创建新的任务列表update-task-list:更新现有任务列表delete-task-list:删除任务列表get-tasks:获取列表中的所有任务create-task:创建新任务update-task:更新现有任务delete-task:删除任务get-checklist-items:获取任务的清单项目create-checklist-item:创建清单项update-checklist-item:更新清单项目delete-checklist-item:删除清单项
限制
API 需要适当的身份验证和权限
根据 Microsoft 的政策,可能会有速率限制
故障排除
身份验证问题
“MailboxNotEnabledForRESTAPI”错误:这通常意味着你使用的是个人 Microsoft 帐户。个人帐户通过 Graph API 访问 Microsoft To Do API 受到限制。
令牌获取失败:确保您的
.env文件中的CLIENT_ID、CLIENT_SECRET和TENANT_ID正确无误。权限问题:确保您已在 Azure 应用注册中授予管理员所需权限的同意。
账户类型问题
工作/学校账户:这些账户通常与 To Do API 配合使用效果最佳。请使用
TENANT_ID=organizations或您指定的租户 ID。个人账户:这些账户对 To Do API 的访问权限有限。如果您必须使用个人账户,请尝试
TENANT_ID=consumers或TENANT_ID=common。
检查身份验证状态
您可以使用auth-status工具或通过检查令牌中的到期时间来检查您的身份验证状态:
cat tokens.json | grep expiresAt将时间戳转换为可读的日期:
date -r $(echo "$(cat tokens.json | grep expiresAt | cut -d ":" -f2 | cut -d "," -f1) / 1000" | bc)Available Tools
13 toolsauth-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 | |
| displayName | Yes | Text content of the checklist item | |
| isChecked | No | Whether the item is checked off |
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 |
|---|---|---|---|
| listId | Yes | ID of the task list | |
| title | Yes | Title of the task | |
| body | No | Description or body content of the task | |
| dueDateTime | No | Due date in ISO format (e.g., 2023-12-31T23:59:59Z) | |
| startDateTime | No | Start date in ISO format (e.g., 2023-12-31T23:59:59Z) | |
| importance | No | Task importance | |
| isReminderOn | No | Whether to enable reminder for this task | |
| reminderDateTime | No | Reminder date and time in ISO format | |
| status | No | Status of the task | |
| categories | No | Categories associated with the task |
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-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 |
|---|---|---|---|
| listId | Yes | ID of the task list | |
| filter | No | OData $filter query (e.g., 'status eq \'completed\'') | |
| select | No | Comma-separated list of properties to include (e.g., 'id,title,status') | |
| orderby | No | Property to sort by (e.g., 'createdDateTime desc') | |
| top | No | Maximum number of tasks to retrieve | |
| skip | No | Number of tasks to skip | |
| count | No | Whether to include a count of tasks |
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.
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 | |
| checklistItemId | Yes | ID of the checklist item to update | |
| displayName | No | New text content of the checklist item | |
| isChecked | No | Whether the item is checked off |
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 |
|---|---|---|---|
| listId | Yes | ID of the task list | |
| taskId | Yes | ID of the task to update | |
| title | No | New title of the task | |
| body | No | New description or body content of the task | |
| dueDateTime | No | New due date in ISO format (e.g., 2023-12-31T23:59:59Z) | |
| startDateTime | No | New start date in ISO format (e.g., 2023-12-31T23:59:59Z) | |
| importance | No | New task importance | |
| isReminderOn | No | Whether to enable reminder for this task | |
| reminderDateTime | No | New reminder date and time in ISO format | |
| status | No | New status of the task | |
| categories | No | New categories associated with the task |
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.
2 tool updates
v1.0.0- Changed
auth-status1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get-task-lists1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
13 tool updates
- 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-tasks - First observed
update-checklist-item - First observed
update-task - First observed
update-task-list
TDQS
Scored across 13 tools
Each tool has a clearly distinct purpose with no ambiguity, as they are organized around specific resources (task lists, tasks, checklist items) and actions (create, get, update, delete). For example, create-task and create-checklist-item target different levels of the hierarchy, and operations like delete-task-list and delete-task are clearly separated by scope.
The tool names follow a highly consistent verb_noun pattern throughout, such as create-task, get-tasks, update-checklist-item, and delete-task-list. All tools use hyphen-separated lowercase names, making them predictable and easy to understand without any deviations in style.
With 13 tools, the count is well-scoped for managing Microsoft Todo, covering CRUD operations for task lists, tasks, and checklist items. Each tool earns its place by addressing specific needs in the domain, avoiding both redundancy and significant gaps.
The tool surface provides complete CRUD/lifecycle coverage for the Microsoft Todo domain, including authentication status, and operations on task lists, tasks, and checklist items. There are no obvious gaps or dead ends, enabling agents to handle all core workflows effectively.
Maintenance
Related MCP Connectors
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Create, list, and complete todo items through MCP.
Local-first task manager: create, edit, and complete tasks, projects, and checklists via MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that integrates with Notion's API to manage personal todo lists, allowing users to view, add, and update tasks directly from Claude.31MIT
- AlicenseAqualityDmaintenanceA Model Context Profile server that enables Claude to interact with Todoist, allowing users to create, retrieve, update, and manage tasks through natural language commands.62MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server that bridges Claude with Google Tasks, allowing users to manage task lists and tasks directly through Claude interface.1561 npm50MIT
- AlicenseBqualityCmaintenanceProvides Todoist task management capabilities to AI assistants through the Model Context Protocol. Enables users to interact with their Todoist projects and tasks directly through Claude Desktop using natural language commands.33189 npmMIT