Skip to main content
Glama
Aashish079

Microsoft To Do MCP

by Aashish079

Contents

Related MCP server: Procrastinator MCP Server

What is this?

This adds a skill to Claude Desktop that lets you manage your Microsoft To Do tasks just by asking, in plain English — things like "What's on my to-do list today?" or "Add 'call the dentist' to my list, due Friday." Claude reads and updates your actual Microsoft To Do account. No separate app, no new interface to learn.

Setup has two parts:

Who

How long

Quick start

Everyone

~2 minutes

Install the extension, sign in once

Org setup

One admin, once

~15 minutes

Registers the app with Microsoft — skip this if someone at your org already did it

Quick start — Claude Desktop

You'll need: Claude Desktop installed, and a Microsoft account with Microsoft To Do — ideally a work/school Microsoft 365 account (see the personal accounts note in the FAQ if you only have a personal one).

1. Install

Get g6-mstodo-mcp.mcpb from your team, then either:

  • Double-click the file, or

  • Open Claude Desktop → Settings → Extensions and drag the file in.

No Node.js, no terminal, no hand-edited config files — Claude Desktop bundles its own Node runtime, and this extension ships its dependencies pre-installed.

2. About the "unverified extension" warning

You'll likely see:

"Installing will grant this extension access to everything on your computer. Any developer information shown has not been verified by Anthropic."

This is expected and not specific to this extension — it's Claude Desktop's standard message for any extension outside Anthropic's public directory, which this one isn't (it's a private tool built for this org). It doesn't indicate a problem. If the file came from a trusted source on your team, it's safe to continue.

3. Settings

The install screen shows a few settings fields — none are required. Defaults are pre-filled; click Install as-is unless your admin gave you specific values to enter (see org setup).

4. Sign in with Microsoft (first time only)

The first time you ask Claude something involving your tasks:

  1. Claude opens a browser window for you.

  2. Sign in with your Microsoft account.

  3. Review the consent screen (it lists reading/managing your tasks and basic profile info) and click Accept.

  4. You'll land on a success page — close the tab and go back to Claude.

  5. Ask again — it now works, and you won't need to sign in again unless you explicitly sign out or switch accounts.

Try it out

  • "What are my Microsoft To Do lists?"

  • "What's on my [list name] list?"

  • "Add a task to my list: pick up dry cleaning, due tomorrow."

  • "Mark [task] as complete."

  • "Create a new list called Groceries."

Deleting something? Claude will describe what it's about to delete and ask you to confirm first — nothing is removed silently.

One-time organization setup (Microsoft Entra)

This registers the app as a known, trusted app with Microsoft so it's allowed to ask people to sign in.

1. Open the Microsoft Entra admin center

Go to entra.microsoft.com and sign in with an account that can manage app registrations for your organization.

2. Start a new app registration

  1. Go to Identity → Applications → App registrations → New registration.

  2. Under Name, enter something recognizable, e.g. Microsoft To Do MCP.

  3. Under Supported account types, choose Accounts in any organizational directory (Any Microsoft Entra ID tenant) — matches this extension's default organizations tenant setting. (Restricting to your own tenant only is fine too — just note the Tenant ID from the Overview page for step 6.)

  4. Leave Redirect URI blank for now, then click Register.

3. Copy the Application (client) ID

On the app's Overview page, copy the Application (client) ID (looks like 4fdb1079-ff55-434a-bec9-c1f31d9daad4) — you'll need it in step 6.

4. Allow sign-in from a desktop app

  1. Under Manage, click Authentication → Add a platform.

  2. Choose Mobile and desktop applications.

  3. Under Custom redirect URIs, add both of these (one for the Claude Desktop flow, one for the advanced/manual flow below):

    http://localhost:51823/callback
    http://localhost:3000/callback
  4. Click Configure.

No client secret to create. There's intentionally no "Certificates & secrets" step — see Why a public client + PKCE.

5. Grant the permissions it needs

  1. Click API permissions → Add a permission → Microsoft Graph → Delegated permissions.

  2. Search for and check Tasks.Read and Tasks.ReadWrite, then Add permissions.

  3. If a Grant admin consent for [org] button appears, click it — optional, but it saves each person one extra click on their first sign-in.

6. Hand out what you've got

What

Where

Needed if

Application (client) ID

Overview page

Always — share with whoever installs the extension

Directory (tenant) ID

Overview page

Only if you chose "this organizational directory only" above

If your build of g6-mstodo-mcp.mcpb already has your Application ID baked in as the default, you can skip handing this out entirely.

Advanced setup — IT admins / other MCP clients

The original manual flow still works for anything that isn't Claude Desktop (e.g. Cursor), or if you'd rather manage configuration by hand.

npm install
npm run build

1. Configure Azure — create a .env file:

CLIENT_ID=your_client_id
TENANT_ID=your_tenant_id_or_organizations_or_consumers_or_common

No CLIENT_SECRET — see Why a public client + PKCE.

2. Authenticate:

npm run auth

Opens a browser to http://localhost:3000. Sign in, grant access, done — the server saves your session and shuts itself down automatically a few seconds later (or after 10 minutes of inactivity if you don't finish).

3. Point your MCP client at it:

npm run create-config

Writes mcp.json with a g6-mstodo entry pointing at build/cli.js — merge into your client's MCP config. It never embeds live tokens; build/cli.js reads them from the same secure storage npm run auth just wrote to.

Why a public client + PKCE

Earlier versions of this project used a confidential OAuth client — a CLIENT_SECRET typed into a .env file or settings field. For a tool installed on many machines, a "confidential" secret that ends up on every installation isn't really confidential. This build uses a public client with PKCE instead (PublicClientApplication in @azure/msal-node; a fresh code_verifier/code_challenge pair generated per sign-in — no secret, ever).

Flow

Redirect URI

Trigger

Embedded (Claude Desktop / MCPB)

http://localhost:51823/callback

Automatic, on first tool call that needs a token

Standalone / advanced

http://localhost:3000/callback

Manual, via npm run auth

(Embedded port configurable via the oauth_port setting in Claude Desktop, or MSTODO_OAUTH_PORT in the manual flow.)

What's hardened here, and why

This build was hardened following a security review of the original codebase.

Hardening

Detail

Token storage

OS keychain (macOS Keychain / Windows DPAPI / Linux secret-tool), falling back to a chmod 600 file. Stored per-user (~/Library/Application Support/g6-mstodo-mcp/ on macOS, %APPDATA%\g6-mstodo-mcp\ on Windows, ~/.config/g6-mstodo-mcp/ on Linux) — not next to the installed extension's files, since an extension directory isn't guaranteed writable or to survive an update.

No client secret

Public client + PKCE — see above.

Narrower scopes by default

Only Tasks.Read + Tasks.ReadWrite — not Tasks.*.Shared, which would let the LLM touch tasks others shared with you. Opt in via the include_shared setting / MSTODO_INCLUDE_SHARED=true.

Confirmation on deletes

delete-task, delete-task-list, delete-checklist-item require confirm: true, or they describe what would be deleted instead of deleting it. All tools carry destructiveHint/readOnlyHint annotations for clients with their own approval UI.

Prompt-injection framing

Content read back from Graph (list names, task titles/bodies, checklist items) is explicitly framed as untrusted reference data before reaching the LLM — a mitigation, not a guarantee.

Lazy, singleton sign-in

The embedded flow starts only when a tool call needs a token, and is safe against Claude Desktop spawning multiple copies of the server: whichever process binds the sign-in port first serves it, the rest wait, since every process reads the same shared token storage.

Quieter logging

Full response bodies and account email are off by default. Enable via debug_logging / MSTODO_DEBUG=true only when troubleshooting.

Local audit trail

Every tool call appended to audit.log — tool name, timestamp, ID fields only, never task content. Disable via audit_log / MSTODO_AUDIT_LOG=false.

Sign-in listener lockdown

Binds 127.0.0.1 only; state + PKCE code_verifier verified on callback (CSRF); a random per-run token gates the /refresh route; auto-shuts-down after success or idle timeout.

Available tools

Tool

Description

auth-status

Check sign-in status and token expiry

get-task-lists

List all task lists

create-task-list

Create a task list

update-task-list

Rename a task list

delete-task-list

Delete a task list and everything in it — requires confirm: true

get-tasks

List tasks in a list (supports OData filter/sort/paging)

create-task

Create a task

update-task

Update a task's fields

delete-task

Delete a task — requires confirm: true

get-checklist-items

List a task's checklist items (subtasks)

create-checklist-item

Add a checklist item

update-checklist-item

Edit or check off a checklist item

delete-checklist-item

Delete a checklist item — requires confirm: true

Configuration reference

Manual-flow env var

Claude Desktop setting

Default

Purpose

CLIENT_ID

Azure App (client) ID

GuardSix's app

Public-client Azure App Registration ID

TENANT_ID

Microsoft tenant

organizations

Which accounts can sign in

MSTODO_INCLUDE_SHARED

Include lists shared with me

false

Request Tasks.*.Shared scopes too

MSTODO_DEBUG

Verbose debug logging

false

May include account email / response content

MSTODO_AUDIT_LOG

Keep a local audit log

true

Local content-free audit trail of tool calls

MSTODO_OAUTH_PORT

Sign-in listener port (advanced)

51823

Embedded flow's local sign-in port

MSTODO_TOKEN_FILE

per-user app-data dir

Override the token storage path

MSTODO_ACCESS_TOKEN / MSTODO_REFRESH_TOKEN

Inject tokens directly, bypassing storage

MSTODO_AUTH_IDLE_TIMEOUT_MS

600000 (10 min)

How long standalone npm run auth waits before auto-exiting

Building the extension from source

npm install -g @anthropic-ai/mcpb   # one-time
npm run package:mcpb

Produces g6-mstodo-mcp.mcpb at the project root:

File

Purpose

mcpb/manifest.json

Extension metadata and the settings shown during install

mcpb/icon.png

Extension icon (the GuardSix "g6" mark)

scripts/build-mcpb.sh

Builds, stages, and packs the bundle — exactly what's included

Troubleshooting

Claude said it opened a browser, but nothing seems to have happened. Check for a new tab or window (sometimes behind existing ones). If you don't see one, go to http://localhost:51823/ directly.

Claude says it's "still waiting" for me to sign in. The sign-in window is open somewhere — finish there, then ask again. If you truly don't see one, use the direct link above.

I got an error during Microsoft sign-in about the app or redirect URI. The one-time org setup likely hasn't been completed, or a redirect URI doesn't match exactly — check with your admin.

FAQ

Is this safe to install? Yes, when the file comes from a trusted source on your team. The "unverified extension" warning is generic to any extension outside Anthropic's public directory — see step 2 of Quick start.

Does this cost anything? No. Using the extension doesn't add any cost beyond whatever Claude and Microsoft 365 plans you already have. The Azure App Registration and Microsoft Graph API calls it makes are free. (Code-signing this extension would cost a nominal yearly fee — that's a deliberate, deferred decision, not something you're paying for today.)

I only have a personal Microsoft account (outlook.com, hotmail.com, etc.) — will this work? Possibly not. You may see an error mentioning MailboxNotEnabledForRESTAPI — a Microsoft limitation, not a bug here. Microsoft only fully supports the To Do API for Microsoft 365 (work/school) accounts.

Known, unresolved limitations

  • Prompt injection can't be fully solved at the tool layer — the framing in the hardening table above is a mitigation, not a guarantee.

  • DLP/CASB bypass is inherent to any tool that pulls Microsoft 365 data into a local LLM's context. The audit log is a compensating control (visibility after the fact), not a preventive one.

  • Unsigned extension. g6-mstodo-mcp.mcpb isn't code-signed, so Claude Desktop shows an "installing unsigned extension" warning (not a hard block). Revisit signing (mcpb sign) if usage grows enough to justify the Apple/Windows signing costs.


Available Tools

13 tools
auth-statusA
Read-only

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.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint and openWorldHint. Description adds useful behavioral details about the output (token status, expiration time, refresh indicator) beyond the annotations.

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?

Description is two concise sentences with front-loaded purpose. No redundant words or information; every sentence adds value.

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?

Description adequately covers the tool's return values (token status, expiration, refresh indicator) despite absence of output schema. Missing structural details but sufficient for a simple status check.

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?

No parameters exist, so schema coverage is 100% by default. Description adds no parameter info but none is needed. Baseline score of 4 is appropriate.

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?

Description clearly states the tool checks authentication status with Microsoft Graph API. Verb 'Check' and resource 'authentication' are specific, and the tool is distinct from all task-related sibling tools.

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?

Description explains what the tool does (shows token status, expiration, and refresh indicator) and implies it is a preliminary check before other operations, but does not explicitly state when to use or 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.

create-checklist-itemA

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
isCheckedNoWhether the item is checked off
displayNameYesText content of the checklist item

TDQS

A3.5/5.0
Behavior3/5

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

Annotations indicate the tool is not read-only and not destructive, which aligns with 'Create'. The description adds context about being a subtask but no further behavioral details beyond what annotations already provide.

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?

Two concise sentences: first describes the action, second explains the purpose. No redundancy, front-loaded with core information.

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?

Lacks details on return values (no output schema), constraints (e.g., listId must exist), and optional parameters (isChecked not required but not mentioned). Adequate for a simple creation tool but could be more informative.

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?

Input schema has 100% coverage with descriptions for all 4 parameters, so the schema itself provides sufficient meaning. The tool description does not add parameter-specific semantics beyond the schema.

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?

Description clearly states the verb 'Create' and the resource 'checklist item (subtask)', distinguishing it from sibling tools like update-checklist-item and delete-checklist-item. The purpose is unambiguous.

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 guidance on when to use this tool vs alternatives (e.g., when to use update-checklist-item). No mention of prerequisites like the existence of a task or list, which siblings like get-tasks and get-task-lists could provide.

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

create-taskB

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

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already indicate this is a write operation (readOnlyHint=false). The description does not add behavioral context such as permissions, return value, or side effects beyond the act of creation.

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?

Two sentences efficiently convey the core purpose 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?

Given the tool has 10 parameters and no output schema, the description is insufficient. It does not mention return behavior, prerequisites (e.g., valid listId), or error scenarios. More detail is needed for an AI agent to use it correctly.

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 description adds minimal value beyond the schema, which already describes all 10 parameters at 100% coverage. It mentions generic properties but no specifics.

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?

Clearly states the verb (create), resource (task), and context (Microsoft Todo list). Distinguishes from sibling tools like get-tasks, update-task, delete-task.

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?

No explicit guidance on when to use this tool versus alternatives. While it's implied that this is for new tasks, the description does not mention scenarios or 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.

create-task-listA

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

A3.9/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, which align with the description. The description adds context about being a 'top-level container' and organizing tasks, but does not elaborate on side effects or permissions, which is acceptable given the simplicity.

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, concise sentence that covers the essential information. It could be slightly more structured but is not verbose.

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 simplicity (one parameter, no output schema), the description provides sufficient context about what a task list is and its role in organization. Minor gaps like duplicate handling are acceptable.

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 only parameter, displayName, is fully described in the schema as 'Name of the new task list'. The tool description does not add further meaning beyond this, so the baseline score applies.

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 action ('Create'), the resource ('task list (top-level container)'), and the purpose ('organize your tasks into categories or projects'). It distinguishes from sibling tools like update-task-list or delete-task-list by focusing on creation.

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 the tool is used when a new top-level container is needed for categorization, but it does not explicitly state when to use it versus alternatives or provide exclusions (e.g., 'if the list already exists, update it instead').

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

delete-checklist-itemA
Destructive

Delete a checklist item (subtask) from a task. This removes just the specific subtask, not the parent task. This cannot be undone — requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list
taskIdYesID of the task
confirmNoMust be true to actually perform the deletion. Safety gate for an irreversible, destructive action.
checklistItemIdYesID of the checklist item to delete

TDQS

A4/5.0
Behavior4/5

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

The description adds useful behavioral context beyond annotations: it states the deletion is irreversible and requires confirm: true. This complements the destructiveHint annotation with specific safety requirements.

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?

Two concise sentences, front-loaded with the core action and then constraints. No redundant or irrelevant information.

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 delete operation with no output schema, the description covers the essential action, scope, irreversibility, and confirmation. Missing details like error conditions or permission requirements, but adequate for typical 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 coverage is 100%, so baseline is 3. The description does not add significant new meaning beyond the schema descriptions; it only reiterates the confirm requirement already explained in the schema.

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 action (delete), the resource (checklist item/subtask), and explicitly distinguishes it from deleting the parent task, which helps differentiate from sibling tools like delete-task.

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 mentions the irreversible nature and the confirm requirement, but does not explicitly compare with alternatives like update-checklist-item or create-checklist-item. Usage context is clear but lacks explicit when-not guidance.

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

delete-taskA
Destructive

Delete a task from a Microsoft Todo list. This will remove the task and all its checklist items (subtasks). This cannot be undone — requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list
taskIdYesID of the task to delete
confirmNoMust be true to actually perform the deletion. Safety gate for an irreversible, destructive action.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint: true), the description adds that the task and all its checklist items are removed and that the action cannot be undone. This provides valuable behavioral context without contradicting annotations.

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 long with no redundant information. The first sentence states the primary purpose, and the second adds key behavioral details. Every word earns its place.

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

Completeness5/5

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

For a delete operation with no output schema, the description adequately covers the action, cascading delete, irreversibility, and the confirmation requirement. No additional context is needed.

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 input schema already describes all three parameters with 100% coverage. The description adds no new parameter-level details beyond the schema, so baseline score of 3 is appropriate.

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 action (delete), the resource (task from Microsoft Todo list), and the scope (including checklist items). It distinguishes from sibling tools like delete-checklist-item and delete-task-list by specifying it deletes a task and its subtasks.

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 highlights that deletion is irreversible and requires confirm: true, providing a key usage guideline. However, it does not explicitly contrast with alternatives like update-task for non-destructive changes, but the destructive nature is well communicated.

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

delete-task-listA
Destructive

Delete a task list (top-level container) from Microsoft Todo. This will remove the list and all tasks within it. This cannot be undone — requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
listIdYesID of the task list to delete
confirmNoMust be true to actually perform the deletion. Safety gate for an irreversible, destructive action.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true; description adds that the list and all tasks are removed and the action cannot be undone. No contradiction.

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?

Two concise sentences with no fluff. All information is front-loaded and essential.

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

Completeness5/5

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

Comprehensive for a destructive delete tool: explains scope, irreversibility, and safety gate. No output schema needed.

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 coverage is 100%; description adds context that confirm is a safety gate for the destructive irreversible action, enhancing schema meaning.

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?

Clearly states 'Delete a task list (top-level container) from Microsoft Todo' and that it removes the list and all tasks. Distinct from similar siblings like 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.

Usage Guidelines4/5

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

Explicitly notes irreversibility and the confirm parameter requirement, guiding cautious use. Does not explicitly mention when to use vs alternatives, but context is clear.

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

get-checklist-itemsA
Read-only

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

A3.9/5.0
Behavior3/5

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

Annotations already provide readOnlyHint and openWorldHint. The description adds minor context about checklist items being 'smaller steps or components' but does not disclose additional behavioral traits like pagination or ordering.

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?

Two sentences with no wasted words. The purpose is immediately clear, and the secondary sentence adds definitional context without redundancy.

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

Completeness5/5

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

For a simple read-only tool with complete schema and annotations, the description adequately covers the tool's purpose and resource nature. No output schema exists, but return values are implicitly understood from 'items.'

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% for both parameters (listId, taskId). The description does not add new meaning beyond what is already in the schema.

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 explicitly states the action ('Get') and the resource ('checklist items (subtasks) for a specific task'), and distinguishes it from siblings like get-tasks and get-task-lists by specifying the parent relationship.

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 read-only usage but does not explicitly state when to use versus alternatives ('create', 'update', 'delete' tools among siblings). No when-not or exclusion criteria are provided.

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

get-task-listsA
Read-only

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
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. Description adds that the tool shows list names, IDs, and indicates default or shared lists, providing useful output context beyond the annotations.

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?

Two efficient sentences that front-load the purpose and avoid any redundant or extra information. Every word earns its place.

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?

With no output schema, the description adequately describes the return values (names, IDs, default/shared indication). It could specify the return format (e.g., array), but the coverage is sufficient for a simple list tool.

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?

Tool has no parameters, and schema coverage is 100%. Description does not add parameter information, which is fine; baseline for 0 params 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 verb 'Get all' and the resource 'Microsoft Todo task lists', explaining they are top-level containers. It distinguishes from sibling tools like create-task-list and get-tasks by focusing on listing lists, not tasks.

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 use when listing task lists but does not explicitly state when not to use or suggest alternatives like get-tasks for tasks. Lacks explicit guidance.

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

get-tasksA
Read-only

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

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

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and openWorldHint=true, so the description's claim of 'Get tasks' aligns. However, the description adds minimal behavioral context beyond annotations (e.g., no mention of pagination, rate limits, or return structure). It is adequate but not enhanced.

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 very concise with two sentences: the first states the core purpose, the second adds clarifying context about tasks vs. checklist items. No extraneous words, and it is front-loaded with the essential information.

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 7 parameters with full schema descriptions and readOnlyHint but no output schema, the description is minimal. It does not explain the return format or how to use OData query parameters. For a tool with moderate complexity, it is somewhat incomplete, but acceptable for a simple read 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% for all 7 parameters, so the baseline is 3. The description does not add additional meaning or usage examples beyond what the schema already provides. Parameters like filter, orderby, select have descriptions, but the tool description does not elaborate on typical usage or constraints.

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 (tasks) and specifies the scope (from a specific Microsoft Todo list). It distinguishes tasks from checklist items, which are sibling tools, and clarifies the hierarchical relationship. This provides strong purpose clarity.

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 does not explicitly state when to use this tool vs alternatives, nor does it mention prerequisites or when not to use it. While the sibling tools are listed, there is no guidance on selecting this tool over others like get-task-lists or create-task. This is a gap.

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.

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

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate a non-read-only, non-destructive mutation. The description adds no behavioral context beyond 'update', such as idempotency, permissions, or side effects. Since annotations cover safety, a mid-range score is appropriate.

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?

A single, clear sentence that front-loads the action and resource without any wasted words. Every part earns its place.

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 simple update tool with no output schema, the description covers the essential information: what the tool does and what it modifies. It does not explain return values or preconditions, but these are reasonably inferred.

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 parameters. The description echoes that 'displayName' and 'isChecked' are changeable, but adds no new semantic information beyond the schema.

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 action ('Update') and the resource ('checklist item (subtask)'), and specifies what can be changed ('text content or completion status'). This distinguishes it from sibling tools like 'create-checklist-item' 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.

Usage Guidelines4/5

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

The description implicitly indicates when to use (to modify an existing checklist item) but does not explicitly state when not to use or provide alternatives. However, the distinction from sibling tools is clear due to the resource type and operation.

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.

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

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already show readOnlyHint=false (write operation) and destructiveHint=false. Description confirms update but adds no extra behavioral details (e.g., partial update behavior, error conditions).

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?

Two concise sentences, front-loaded with the action. No unnecessary words.

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?

Lacks information about return values or response structure (no output schema). Does not specify whether update is partial or full replacement, or error behavior. For an 11-parameter tool, more context is needed.

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 coverage is 100% so the schema fully documents each parameter. Description lists a few properties but adds no meaning beyond the schema.

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?

Clearly states 'Update an existing task in Microsoft Todo' with specific verb and resource. Distinguishes from sibling tools like create-task and delete-task.

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 guidance on when to use this tool versus alternatives (e.g., creating or deleting tasks). Does not mention prerequisites like the task must exist.

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.

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

TDQS

A4.1/5.0
Behavior4/5

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

Annotations (readOnlyHint=false, destructiveHint=false) are consistent with description. Description accurately reflects mutation (update name) with no hidden behavior. Adequate for simple 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?

Single sentence, front-loaded, no fluff. Every word adds value.

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

Completeness5/5

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

Given simple tool with 2 parameters and no output schema, description fully covers purpose and scope. Nothing missing.

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 already fully describes both parameters (listId, displayName) with 100% coverage. Description adds no extra meaning beyond what schema provides.

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?

Clear verb 'update' and resource 'task list name' with specific scope ('top-level container'). Distinguishes from sibling tools like create-task-list and delete-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 Guidelines3/5

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

Implies usage context (update name of existing list) but no explicit when-to-use/when-not-to-use or alternatives provided, despite several related sibling tools.

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. Dates show when Glama detected each change.

  1. 13 tool updatesv1.1.0
    • First observedauth-status
    • First observedcreate-checklist-item
    • First observedcreate-task
    • First observedcreate-task-list
    • First observeddelete-checklist-item
    • First observeddelete-task
    • First observeddelete-task-list
    • First observedget-checklist-items
    • First observedget-task-lists
    • First observedget-tasks
    • First observedupdate-checklist-item
    • First observedupdate-task
    • First observedupdate-task-list

TDQS

A4.1/5.0
Disambiguation5/5

Each tool targets a distinct combination of resource (task list, task, checklist item) and action (get, create, update, delete, auth), with no overlapping purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using lowercase and hyphens, with clear pluralization for retrieval and singular for mutations.

Tool Count5/5

13 tools cover CRUD for three entities plus authentication, which is well-scoped for a task management server without being excessive or too lean.

Completeness4/5

The set covers most CRUD operations but lacks a dedicated tool to retrieve a single task or task list by ID, which is a minor gap.

Maintenance

ActivitySlowing
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/Aashish079/g6-MSToDoMCP'

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