Skip to main content
Glama
jhirono

Microsoft Todo MCP Service

by jhirono

Microsoft To Do MCP

This MCP (Model Context Protocol) service allows you to interact with Microsoft To Do tasks using an AI assistant.

Setup Instructions

1. Prerequisites

  • Node.js 16 or higher

  • npm

  • A Microsoft account

  • Azure App Registration (see setup below)

2. Installation

There are two parts to installing this tool:

  1. Installing the package

  2. Setting up authentication (requires cloning the repository)

Step 1: Install the Package

npm install -g @jhirono/todomcp

Step 2: Set Up Authentication

Even if you install the package globally, you'll need to clone the repository to complete the authentication process:

git clone https://github.com/jhirono/todoMCP.git
cd todoMCP
npm install

3. Azure App Registration

  1. Go to the Azure Portal

  2. Navigate to "App registrations" and create a new registration

  3. Name your application (e.g., "To Do MCP")

  4. 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

  5. Set the Redirect URI to http://localhost:3000/callback

  6. After creating the app, go to "Certificates & secrets" and create a new client secret

  7. Go to "API permissions" and add the following permissions:

    • Microsoft Graph > Delegated permissions:

      • Tasks.Read

      • Tasks.ReadWrite

      • User.Read

  8. Click "Grant admin consent" for these permissions

4. Configuration

Create a .env file in the root directory with the following information:

CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secret
TENANT_ID=your_tenant_setting
REDIRECT_URI=http://localhost:3000/callback

TENANT_ID Options:

  • organizations - For multi-tenant organizational accounts (default if not specified)

  • consumers - For personal Microsoft accounts only

  • common - For both organizational and personal accounts

  • your-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-000000000000

Related MCP server: Todoist Python MCP Server

Usage

Complete Workflow

  1. Authenticate to get tokens (must be done from the cloned repository)

    npm run auth

    This will open a browser window for you to authenticate with Microsoft and create a tokens.json file.

  2. Create MCP config file (must be done from the cloned repository)

    npm run create-config

    This creates an mcp.json file with your authentication tokens.

  3. Set up the global MCP configuration

    # Copy the mcp.json file to your global Cursor configuration directory
    cp mcp.json ~/.cursor/mcp-servers.json

    This makes the Microsoft To Do MCP available across all your Cursor projects.

  4. Start using with your AI assistant

    • In Cursor, you can now use Microsoft To Do commands directly in any project

    • Try commands like auth status or list up todos to get started

The Claude Desktop configuration file is located at:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Available Tools

  • auth-status: Check your authentication status

  • get-task-lists: Get all your To Do task lists

  • create-task-list: Create a new task list

  • update-task-list: Update an existing task list

  • delete-task-list: Delete a task list

  • get-tasks: Get all tasks in a list

  • create-task: Create a new task

  • update-task: Update an existing task

  • delete-task: Delete a task

  • get-checklist-items: Get checklist items for a task

  • create-checklist-item: Create a checklist item

  • update-checklist-item: Update a checklist item

  • delete-checklist-item: Delete a checklist item

Limitations

  • The API requires proper authentication and permissions

  • Rate limits may apply according to Microsoft's policies

Troubleshooting

Authentication Issues

  • "MailboxNotEnabledForRESTAPI" error: This typically means you're using a personal Microsoft account. Microsoft To Do API access is limited for personal accounts through the Graph API.

  • Token acquisition failures: Make sure your CLIENT_ID, CLIENT_SECRET, and TENANT_ID are correct in your .env file.

  • Permission issues: Ensure you have granted admin consent for the required permissions in your Azure App registration.

Account Type Issues

  • Work/School Accounts: These typically work best with the To Do API. Use TENANT_ID=organizations or your specific tenant ID.

  • Personal Accounts: These have limited access to the To Do API. If you must use a personal account, try TENANT_ID=consumers or TENANT_ID=common.

Checking Authentication Status

You can check your authentication status using the auth-status tool or by examining the expiration time in your tokens:

cat tokens.json | grep expiresAt

To convert the timestamp to a readable date:

date -r $(echo "$(cat tokens.json | grep expiresAt | cut -d ":" -f2 | cut -d "," -f1) / 1000" | bc)

Available Tools

13 tools
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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that this is a read-only diagnostic tool (implied by 'Check' and 'Shows') and describes what information it returns. However, it doesn't mention potential error conditions, rate limits, or whether this operation requires any specific permissions, leaving some behavioral aspects unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with two sentences that each earn their place. The first sentence states the core purpose, the second elaborates on what information is returned. There's zero wasted text, and the information is front-loaded with the most important detail first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter diagnostic tool with no output schema, the description provides good context about what information will be returned (token status, expiration time, refresh indication). However, without annotations or output schema, it could benefit from more detail about the exact format of the returned information or potential error states, preventing a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters with 100% schema description coverage. The description appropriately doesn't waste space discussing nonexistent parameters. A baseline of 4 is appropriate since there are no parameters to document, and the description focuses correctly on the tool's purpose rather than parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Check if you're authenticated'), the target resource ('Microsoft Graph API'), and the output details ('current token status and expiration time, indicates if token needs refresh'). It distinguishes itself from sibling tools which are all about task/checklist management, making its purpose uniquely about authentication status verification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('Check if you're authenticated') suggesting this tool should be used to verify authentication state before performing operations that require it. However, it doesn't explicitly state when NOT to use it or name specific alternatives for different authentication scenarios, which prevents a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create-checklist-itemC

Create a new checklist item (subtask) for a task. Checklist items help break down a task into smaller, manageable steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list
taskIdYesID of the task
displayNameYesText content of the checklist item
isCheckedNoWhether the item is checked off

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states it 'creates' without disclosing behavioral traits like permissions needed, whether it's idempotent, error conditions, or what happens on success/failure. It mentions checklist items help with task breakdown, but this is functional purpose, not operational behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences that are front-loaded with the core action and purpose. No wasted words, though the second sentence could be considered slightly explanatory rather than essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with no annotations and no output schema, the description is incomplete. It lacks behavioral details (e.g., what's returned, error handling) and usage context, relying heavily on the schema for parameters but not compensating for other gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no parameter-specific information beyond implying 'displayName' is for text content and context for 'listId' and 'taskId'. This 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Create') and resource ('new checklist item (subtask) for a task'), with additional context about purpose ('break down a task into smaller, manageable steps'). It doesn't explicitly differentiate from siblings like 'create-task' or 'update-checklist-item', but the focus on subtasks is reasonably distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'create-task' or 'update-checklist-item'. The description implies usage for subtasks but doesn't specify prerequisites (e.g., needing an existing task) or exclusions, leaving the agent to infer context from parameter names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create-taskC

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list
titleYesTitle of the task
bodyNoDescription or body content of the task
dueDateTimeNoDue date in ISO format (e.g., 2023-12-31T23:59:59Z)
startDateTimeNoStart date in ISO format (e.g., 2023-12-31T23:59:59Z)
importanceNoTask importance
isReminderOnNoWhether to enable reminder for this task
reminderDateTimeNoReminder date and time in ISO format
statusNoStatus of the task
categoriesNoCategories associated with the task

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a creation operation but doesn't mention permissions required, whether it's idempotent, error conditions, or what happens on success (e.g., returns task ID). The description only covers basic functionality without behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with two sentences that directly address the tool's purpose. It's front-loaded with the core action and avoids unnecessary elaboration. However, the second sentence could be slightly more focused on tool usage rather than general task definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with 10 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like authentication needs, error handling, or return values. While the schema covers parameters well, the description lacks context about the tool's operation in the broader system.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 10 parameters thoroughly. The description mentions some properties ('title, description, due date, and other properties') but adds minimal semantic value beyond what's in the schema. Baseline 3 is appropriate when schema does heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create a new task') and resource ('in a specific Microsoft Todo list'), with additional context about what a task is. However, it doesn't explicitly differentiate from sibling tools like 'create-checklist-item' or 'create-task-list', which would be needed for a score of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'create-checklist-item' or 'update-task'. It mentions the context ('in a specific Microsoft Todo list') but doesn't specify prerequisites, exclusions, or comparison with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create-task-listB

Create a new task list (top-level container) in Microsoft Todo to help organize your tasks into categories or projects.

ParametersJSON Schema
NameRequiredDescriptionDefault
displayNameYesName of the new task list

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states this creates a 'top-level container,' implying a write operation, but doesn't disclose behavioral traits like required permissions, whether it's idempotent, error conditions, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('Create a new task list') and purpose. It avoids redundancy, but could be slightly more structured by separating usage context. Every word earns its place, making it concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a mutation (create operation) with no annotations, no output schema, and 1 parameter, the description is incomplete. It doesn't cover behavioral aspects like permissions, side effects, or response format, which are critical for an AI agent to invoke it correctly. The purpose is clear, but operational details are lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the parameter 'displayName' documented as 'Name of the new task list.' The description adds no additional parameter semantics beyond this, such as format constraints or examples. With high schema coverage, the baseline is 3, as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create a new task list') and resource ('in Microsoft Todo'), with the purpose to 'organize your tasks into categories or projects.' It distinguishes from siblings like 'create-task' (individual tasks) and 'create-checklist-item' (items within lists), but doesn't explicitly contrast with 'get-task-lists' (read-only) or 'update-task-list' (modify existing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for organizing tasks into categories/projects, suggesting when to use it. However, it lacks explicit guidance on when not to use it (e.g., vs. 'create-task' for standalone tasks) or alternatives like 'update-task-list' for modifying existing lists. The context is clear but not comprehensive.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list
taskIdYesID of the task
checklistItemIdYesID of the checklist item to delete

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states this is a deletion operation, implying mutation, but does not disclose behavioral traits such as whether deletion is permanent, requires specific permissions, has side effects (e.g., affecting task completion status), or error conditions. This is a significant gap for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with zero waste: the first states the action and resource, and the second clarifies scope. It is front-loaded and appropriately sized, earning its place efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It covers purpose and scope but lacks details on behavior, permissions, or return values. However, the schema fully documents parameters, and the description differentiates from siblings, making it minimally adequate but with clear gaps for a deletion operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters (listId, taskId, checklistItemId) with clear descriptions. The description does not add any parameter-specific details beyond what the schema provides, such as format examples or relationships between parameters, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Delete a checklist item') and resource ('from a task'), distinguishing it from siblings like delete-task or delete-task-list by specifying it removes only the subtask, not the parent task. This provides precise differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by stating it deletes 'just the specific subtask, not the parent task,' which helps differentiate from delete-task. However, it does not explicitly mention when to use alternatives like update-checklist-item or get-checklist-items, nor does it specify prerequisites like needing the listId and taskId first.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list
taskIdYesID of the task to delete

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the destructive behavior ('remove the task and all its checklist items'), which is crucial for a deletion operation. However, it doesn't mention permissions required, whether deletion is reversible, rate limits, or what happens if the task doesn't exist. The description adds some behavioral context but leaves significant gaps for a destructive tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that efficiently convey the core action and important side effect. Every word earns its place - the first sentence states the primary purpose, the second clarifies the scope of deletion. No wasted words or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no annotations and no output schema, the description provides basic purpose and scope but lacks important context. It doesn't explain what happens on success/failure, whether there's confirmation required, or what permissions are needed. The description is minimally adequate but leaves the agent with significant unknowns about the tool's behavior and outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (listId and taskId) with clear descriptions. The description doesn't add any parameter-specific information beyond what's in the schema. This meets the baseline of 3 when schema coverage is high, but doesn't provide additional semantic context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Delete'), target resource ('a task from a Microsoft Todo list'), and scope ('remove the task and all its checklist items'). It distinguishes from siblings like delete-checklist-item (which only removes subtasks) and delete-task-list (which removes entire lists).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing to permanently remove a task and its subtasks, but doesn't explicitly state when to use this vs. alternatives like archiving or when not to use it (e.g., for temporary removal). It mentions the effect on checklist items, which helps differentiate from delete-checklist-item, but lacks explicit guidance on prerequisites or comparisons to other deletion tools.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list to delete

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the destructive behavior ('remove the list and all tasks within it'), which is critical, but lacks other behavioral traits like authentication needs, error conditions, or confirmation requirements. The description is minimal but correctly indicates a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action and resource, followed by scope clarification. Every word earns its place with no redundancy or fluff, making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no annotations and no output schema, the description is adequate but incomplete. It covers the purpose and scope well, but lacks context on permissions, irreversibility, or response format. Given the complexity (destructive operation) and minimal structured data, it should provide more behavioral guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'listId', so the schema already documents it fully. The description doesn't add parameter-specific details beyond implying the parameter's role in identifying the list to delete. With 0 parameters needing extra semantics, baseline is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Delete'), target resource ('task list (top-level container) from Microsoft Todo'), and scope ('remove the list and all tasks within it'). It distinguishes this from sibling tools like 'delete-task' (individual tasks) and 'delete-checklist-item' (checklist items).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for deleting entire task lists with all contained tasks, but doesn't explicitly state when to use this versus alternatives like 'delete-task' for individual tasks or provide exclusions (e.g., cannot be undone, requires list ownership). No prerequisites or warnings are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-checklist-itemsC

Get checklist items (subtasks) for a specific task. Checklist items are smaller steps or components that belong to a parent task.

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list
taskIdYesID of the task

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It describes what the tool does (retrieves checklist items) but lacks behavioral details: it doesn't specify if this is a read-only operation, what permissions are needed, how results are returned (e.g., pagination, format), or error handling. For a retrieval tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that efficiently state the purpose and clarify what checklist items are. It's front-loaded with the main action and avoids unnecessary details. However, it could be slightly more structured by explicitly mentioning parameters or usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (2 required parameters, no output schema), the description is minimally adequate. It covers the basic purpose but lacks completeness in behavioral aspects (e.g., return format, error cases) and usage guidelines. With no annotations and no output schema, it should do more to compensate, but the simplicity keeps it at a baseline level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for listId and taskId. The description adds minimal value beyond the schema by clarifying that checklist items belong to a 'specific task', reinforcing the parameter roles. Since the schema already documents parameters well, the baseline is 3, and the description doesn't add significant extra meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'checklist items (subtasks)', specifying they belong to a parent task. It distinguishes checklist items as subtasks, which helps differentiate from sibling tools like get-tasks or get-task-lists. However, it doesn't explicitly contrast with create-checklist-item or update-checklist-item, keeping it at 4 instead of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing listId and taskId), exclusions, or comparisons to sibling tools like get-tasks (which might return tasks without checklist details). Usage is implied from the purpose but lacks explicit context.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that it retrieves all lists with names, IDs, and indicates default or shared status, which is useful behavioral context. However, it doesn't mention potential limitations like pagination, rate limits, or authentication needs, leaving gaps for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently conveys purpose and key details (e.g., list names, IDs, default/shared indicators) without unnecessary words. It's front-loaded with the main action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is mostly complete for a simple read operation. It explains what is retrieved, but lacks details on output format (e.g., JSON structure) or error handling, which could be helpful despite no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description adds no parameter information, which is appropriate, but it doesn't compensate for any gaps since there are none. Baseline is 4 for 0 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('Microsoft Todo task lists'), specifying they are top-level containers that organize tasks. It distinguishes from siblings like get-tasks (which retrieves individual tasks) and get-checklist-items (which retrieves checklist items within tasks).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating it retrieves all task lists, including default or shared ones, which suggests it's for listing containers rather than items. However, it doesn't explicitly state when to use this versus alternatives like get-tasks or when not to use it (e.g., for creating or updating lists).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-tasksC

Get tasks from a specific Microsoft Todo list. These are the main todo items that can contain checklist items (subtasks).

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list
filterNoOData $filter query (e.g., 'status eq \'completed\'')
selectNoComma-separated list of properties to include (e.g., 'id,title,status')
orderbyNoProperty to sort by (e.g., 'createdDateTime desc')
topNoMaximum number of tasks to retrieve
skipNoNumber of tasks to skip
countNoWhether to include a count of tasks

TDQS

C2.9/5.0
Behavior2/5

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 mentions that tasks 'can contain checklist items,' which adds some context about the data structure, but fails to describe key behaviors like pagination (implied by 'top'/'skip' parameters), rate limits, authentication needs, or what the output looks like (e.g., list of tasks). This is a significant gap for a read operation with multiple parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized with two sentences that are front-loaded and efficient. The first sentence states the core purpose, and the second adds useful context about checklist items without redundancy. It earns its place but could be slightly more structured for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 parameters, no annotations, no output schema), the description is incomplete. It lacks behavioral details (e.g., output format, pagination), usage guidelines, and doesn't fully leverage the opportunity to add value beyond the schema. For a tool with rich filtering options, more context is needed to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 7 parameters. The description adds no parameter-specific information beyond implying tasks relate to checklist items, which doesn't clarify any parameters. Baseline 3 is appropriate as the schema handles the heavy lifting, but the description doesn't compensate with additional semantic context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('tasks from a specific Microsoft Todo list'), and distinguishes tasks from checklist items by noting they 'can contain checklist items (subtasks).' However, it doesn't explicitly differentiate from sibling tools like 'get-task-lists' or 'get-checklist-items' beyond the resource scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a list ID), exclusions, or comparisons to siblings like 'get-task-lists' for listing lists or 'get-checklist-items' for subtasks, leaving usage context implied at best.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-checklist-itemC

Update an existing checklist item (subtask). Allows changing the text content or completion status of the subtask.

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list
taskIdYesID of the task
checklistItemIdYesID of the checklist item to update
displayNameNoNew text content of the checklist item
isCheckedNoWhether the item is checked off

TDQS

C2.9/5.0
Behavior2/5

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 states this is an update operation, implying mutation, but doesn't cover permissions needed, whether changes are reversible, error handling, or response format. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the purpose and key capabilities without waste. Every word contributes to understanding the tool's function, making it appropriately sized and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., permissions, side effects), response format, and usage context relative to siblings. While the schema covers parameters well, the overall context for safe and effective use is insufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds minimal value by mentioning 'text content' (mapping to displayName) and 'completion status' (mapping to isChecked), but doesn't provide additional syntax or context beyond what the schema offers. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('update') and resource ('existing checklist item/subtask'), specifying what can be changed ('text content or completion status'). It distinguishes from siblings like create-checklist-item or delete-checklist-item by focusing on modification rather than creation or removal, though it doesn't explicitly contrast with update-task or update-task-list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like update-task or update-task-list, nor does it mention prerequisites or exclusions. It implies usage for modifying subtasks but lacks context about sibling relationships or specific scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-taskC

Update an existing task in Microsoft Todo. Allows changing any properties of the task including title, due date, importance, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list
taskIdYesID of the task to update
titleNoNew title of the task
bodyNoNew description or body content of the task
dueDateTimeNoNew due date in ISO format (e.g., 2023-12-31T23:59:59Z)
startDateTimeNoNew start date in ISO format (e.g., 2023-12-31T23:59:59Z)
importanceNoNew task importance
isReminderOnNoWhether to enable reminder for this task
reminderDateTimeNoNew reminder date and time in ISO format
statusNoNew status of the task
categoriesNoNew categories associated with the task

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is an update operation (implying mutation) and mentions what can be changed, but lacks critical information: whether this requires specific permissions, if changes are reversible, what happens to unspecified properties (partial vs. full updates), error conditions, or response format. For a mutation tool with 11 parameters, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose. It wastes no words but could be slightly more structured by separating usage context from capability listing. Every part earns its place, though it's brief given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (mutation with 11 parameters, no annotations, no output schema), the description is incomplete. It covers the basic purpose but lacks behavioral context (permissions, side effects), usage guidelines, and output expectations. For a tool that modifies data in a system like Microsoft Todo, this leaves significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 with their types, descriptions, enums, and required status. The description adds minimal value beyond the schema by generically mentioning 'any properties including title, due date, importance, etc.' but provides no additional syntax, format details, or constraints. This 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Update') and resource ('an existing task in Microsoft Todo'), and specifies the scope ('allows changing any properties'). It distinguishes from siblings like create-task or delete-task by focusing on modification of existing tasks. However, it doesn't explicitly differentiate from update-checklist-item or update-task-list, which are similar update operations on different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing listId and taskId), when to choose update-task over create-task for similar outcomes, or any constraints on usage. The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-task-listC

Update the name of an existing task list (top-level container) in Microsoft Todo.

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list to update
displayNameYesNew name for the task list

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is an update operation (implying mutation) but doesn't describe permissions needed, whether changes are reversible, rate limits, error responses, or what happens on success. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and includes necessary context ('Microsoft Todo', 'top-level container'). Every element earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the tool returns, error conditions, or behavioral implications. While the schema covers parameters well, the overall context for using this update operation remains incomplete for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters (listId and displayName). The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain format requirements, constraints, or examples. Baseline 3 is appropriate when the schema does all the parameter documentation work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update'), the resource ('name of an existing task list'), and the platform context ('Microsoft Todo'). It specifies this is for 'top-level container' task lists, which helps distinguish it from other list-like resources. However, it doesn't explicitly differentiate from sibling 'update-task' or 'update-checklist-item' tools beyond the resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'update-task' or 'update-checklist-item'. It doesn't mention prerequisites (e.g., needing an existing list ID), error conditions, or when not to use it. The only contextual clue is 'existing task list', implying the list must already exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jhirono/todoMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server