Skip to main content
Glama
Chrusic

Todoist MCP Server

by Chrusic

Todoist MCP Server Extended

An MCP (Model Context Protocol) server implementation that integrates Claude - or any MCP compatible LLM if you're crafty - with Todoist, enabling natural language task management via MCP tools. The tools in this server allows Claude to interact with your Todoist tasks, projects, sections, and labels using everyday language, while also optimized for LLM workflow efficiency.

Features Overview

  • Task Management: Create, update, complete, and delete tasks using everyday language

  • Label Management: Create, update, and manage personal labels and task labels

  • Project Management: Create, update, and manage Todoist projects

  • Section Organization: Create and manage sections within projects

  • Smart Search: Find tasks and labels using partial name matches

  • Flexible Filtering: Filter tasks by project, section, due date, priority, and labels

  • Rich Task Details: Support for descriptions, due dates, priority levels, and project/section assignment

  • Batch Operations: Tools have built in batch operation support and custom parameters for efficient usage with LLM workflows

For a complete list of available tools as well as their usage, see tools.md.

Related MCP server: Todoist MCP Server Extended

Quick Installation Guide

Assuming you already have npm installed.

A more comprehensive installation guide can be found in the How-to Guide.

Installing via Smithery

To install Todoist MCP Server Extended for Claude Desktop via Smithery:

  1. Run following command in cmd\pwsh:

    npx -y @smithery/cli install @Chrusic/todoist-mcp-server-extended --client claude

Also compatible with cline or windsurf, by changing last parameter to --client cline or --client windsurf

Installing via npm

  1. Run following command in cmd\pwsh:

    npm install -g @chrusic/todoist-mcp-server-extended

Setup

Grab a Todoist API Token

  1. Log in to your Todoist account

  2. Navigate to Settings → Integrations

  3. Find your API token under Developer

  4. Press Copy API Token

For more information about the Todoist API, visit the official Todoist API documentation.

Add MCP Server and API Token Claude Desktop Client

  1. In your claude_desktop_config.json file, paste the following json snippet between: "mcpServers":{ }:

    "todoist": {
      "command": "npx",
      "args": ["-y", "@chrusic/todoist-mcp-server-extended"],
      "env": {
          "TODOIST_API_TOKEN": "PASTE-YOUR-API-TOKEN-HERE"
      }
    }
  2. When all put together, it should look something like this:

    {
    "mcpServers": {
        "todoist": {
        "command": "npx",
        "args": ["-y", "@chrusic/todoist-mcp-server-extended"],
        "env": {
            "TODOIST_API_TOKEN": "PASTE-YOUR-API-TOKEN-HERE"
        }
        }
    }
    }
  3. Claude Desktop client will then start the MCP server and load the tools on the next client (re)start.

Example Usage

Some simple suggestions on what to ask Claude. Note that sometimes you have to be very direct to get claude to use the tools:

  • "Using the MCP tool: todoist_get_tasks, list all my tasks for the day."

  • "Create task 'Review PR' in project 'Work' section 'To Do'"

  • "Add label 'Important' to task 'Review PR'"

  • "Show all tasks with label 'Important' in project 'Work'"

  • "Move task 'Documentation' to section 'In Progress'"

  • "Mark the documentation task as complete"

  • "Give me some suggestions for listed tasks I can do today as I'm going shopping in town."

  • "Break task X down in to smaller subtasks and add due dates, x, y, z."

Contributing

Contributions are welcome! Feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Issues and Support

If you encounter any issues or need support, please file an issue on the GitHub repository.

Available Tools

19 tools
todoist_complete_taskC

Mark one or more tasks as complete in Todoist

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksNoArray of tasks to mark as complete (for batch operations)
task_idNoID of the task to complete (preferred)
task_nameNoName/content of the task to search for and complete (if ID not provided)

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 for behavioral disclosure. It states the action ('Mark as complete') which implies a mutation, but doesn't describe side effects (e.g., tasks become archived, completion timestamps), permissions required, error conditions (e.g., invalid IDs), or response format. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 core action ('Mark one or more tasks as complete') and resource ('in Todoist'). It wastes no words and is appropriately sized for a straightforward tool, with every part earning its place.

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., what 'complete' means operationally), error handling, and return values. 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 fully documents the three parameters (tasks, task_id, task_name) and their relationships (anyOf logic). The description adds no parameter-specific information beyond what's in the schema, such as clarifying batch vs. single operations or search behavior. Baseline 3 is appropriate when 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 ('Mark as complete') and resource ('tasks in Todoist'), making the purpose immediately understandable. It distinguishes from siblings like todoist_get_tasks (read) and todoist_delete_task (remove), though it doesn't explicitly contrast with todoist_update_task which might also change task status. The description is specific but could be more precise about sibling differentiation.

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., tasks must exist), exclusions (e.g., cannot complete already completed tasks), or comparisons with siblings like todoist_update_task (which might handle status changes differently). Usage is implied by the action 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.

todoist_create_personal_labelC

Create one or more personal labels in Todoist

ParametersJSON Schema
NameRequiredDescriptionDefault
labelsNoArray of labels to create (for batch operations)
nameNoName of the label
colorNoColor of the label (optional)
orderNoOrder of the label (optional)
is_favoriteNoWhether the label is a favorite (optional)

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 offers minimal behavioral insight. It states it creates labels but doesn't disclose whether this requires specific permissions, if it's idempotent, what happens on duplicate names, error conditions, 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 core purpose without unnecessary words. It directly communicates the action, resource, and batch capability, making every word count with zero 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 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't address behavioral aspects like permissions, idempotency, or error handling, nor does it explain the parameter choice logic. The agent lacks critical context needed to use this tool effectively beyond basic parameter passing.

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%, providing detailed documentation for all parameters including optional fields and enum values. The description adds marginal value by hinting at batch capability ('one or more'), but doesn't explain the 'anyOf' logic for choosing between 'labels' array or individual 'name' parameter. Baseline 3 is appropriate when the schema does most of the 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 ('Create') and resource ('personal labels in Todoist'), with the specific detail of supporting batch operations ('one or more'). However, it doesn't explicitly differentiate from sibling tools like 'todoist_update_personal_label' or 'todoist_create_project', which would require mentioning it's for initial creation rather than modification or other resource types.

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 when to choose batch vs. single creation, how it differs from 'todoist_update_personal_label' or 'todoist_get_personal_labels', or any prerequisites like authentication requirements. The agent must infer usage from the name and schema alone.

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

todoist_create_projectC

Create one or more projects with support for nested hierarchies

ParametersJSON Schema
NameRequiredDescriptionDefault
projectsNoArray of projects to create (for batch operations)
nameNoName of the project (for single project creation)
parent_idNoParent project ID (optional)
colorNoColor of the project (optional)
favoriteNoWhether the project is a favorite (optional)
view_styleNoView style of the project (optional)

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. While 'Create' implies a write operation, the description doesn't address important behavioral aspects like: whether this requires authentication, what happens on duplicate project names, whether parent projects are created automatically when using parent_name, or what the tool returns upon success. The mention of 'nested hierarchies' is helpful but insufficient for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence that gets straight to the point. It's appropriately sized and front-loaded with the core functionality, with zero wasted words or unnecessary elaboration.

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 6 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, error conditions, authentication requirements, or how the batch versus single creation modes work. The mention of 'nested hierarchies' is helpful but doesn't compensate for the significant gaps in behavioral context.

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%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond what's in the schema - it mentions 'nested hierarchies' which relates to parent_id/parent_name parameters, but doesn't provide additional semantic context about parameter interactions or usage patterns.

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 ('projects'), and specifies support for 'nested hierarchies' which adds useful context. However, it doesn't explicitly differentiate this tool from sibling tools like 'todoist_create_task' or 'todoist_create_project_section' beyond the obvious resource difference.

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. There's no mention of when to use batch creation (projects array) versus single project creation (name parameter), or how this relates to sibling tools like 'todoist_update_project' or 'todoist_get_projects'.

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

todoist_create_project_sectionC

Create one or more sections in Todoist projects

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionsNoArray of sections to create (for batch operations)
project_idNoID of the project
nameNoName of the section
orderNoOrder of the section (optional)

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 the full burden. It states the tool creates sections but doesn't disclose behavioral traits like authentication requirements, rate limits, error handling, or whether it's idempotent. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 core purpose without unnecessary details. Every word earns its place, making it highly concise and well-structured for quick understanding.

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 information on behavioral aspects (e.g., permissions, side effects) and return values, which are critical for an AI agent to use the tool correctly in a Todoist context.

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 parameters thoroughly. The description adds no additional meaning beyond implying batch capability ('one or more sections'), which is partially covered by the schema's 'sections' array description. Baseline 3 is appropriate when 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') and resource ('sections in Todoist projects'), distinguishing it from sibling tools like todoist_create_project or todoist_create_task. However, it doesn't explicitly differentiate from todoist_get_project_sections, which is a read operation, though the verb 'Create' implies a write operation.

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 an existing project), compare to sibling tools like todoist_create_project (for creating projects instead of sections), or specify scenarios for batch versus single-section creation.

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

todoist_create_taskC

Create one or more tasks in Todoist with full parameter support

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksNoArray of tasks to create (for batch operations)
contentNoThe content/title of the task (for single task creation)
descriptionNoDetailed description of the task (optional)
project_idNoID of the project to add the task to (optional)
section_idNoID of the section to add the task to (optional)
parent_idNoID of the parent task for subtasks (optional)
orderNoPosition in the project or parent task (optional)
labelsNoArray of label names to apply to the task (optional)
priorityNoTask priority from 1 (normal) to 4 (urgent) (optional)
due_stringNoNatural language due date like 'tomorrow', 'next Monday' (optional)
due_dateNoDue date in YYYY-MM-DD format (optional)
due_datetimeNoDue date and time in RFC3339 format (optional)
due_langNo2-letter language code for due date parsing (optional)
assignee_idNoUser ID to assign the task to (optional)
durationNoThe duration amount of the task (optional)
duration_unitNoThe duration unit ('minute' or 'day') (optional)
deadline_dateNoDeadline date in YYYY-MM-DD format (optional)
deadline_langNo2-letter language code for deadline parsing (optional)

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 the tool creates tasks but doesn't mention authentication requirements, rate limits, error handling, or what happens on success (e.g., returns task IDs). The phrase 'full parameter support' is vague and doesn't clarify behavioral traits like whether all parameters are truly optional or if there are dependencies between them.

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. However, 'with full parameter support' is somewhat redundant given the detailed schema, and the description could be more structured by explicitly mentioning batch capabilities upfront.

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 18 parameters, no annotations, and no output schema, the description is inadequate. It doesn't cover behavioral aspects like authentication, error cases, or return values, and lacks guidance on usage versus siblings. The schema handles parameter documentation, but the description fails to compensate for missing context around tool behavior and integration.

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 has 100% description coverage, so the schema fully documents all 18 parameters. The description adds minimal value beyond the schema by hinting at batch support ('one or more tasks'), but doesn't explain parameter interactions, defaults, or provide examples. 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 ('Create') and resource ('tasks in Todoist'), and specifies support for batch operations ('one or more tasks'). However, it doesn't explicitly differentiate from sibling tools like 'todoist_update_task' or 'todoist_complete_task' beyond the basic action.

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 'todoist_update_task' for modifying existing tasks or 'todoist_get_tasks' for retrieval. It mentions 'full parameter support' but doesn't clarify prerequisites, constraints, or appropriate contexts for batch versus single-task creation.

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

todoist_delete_personal_labelC

Delete a personal label from Todoist

ParametersJSON Schema
NameRequiredDescriptionDefault
label_idYesID of the label to delete

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 the full burden of behavioral disclosure. While 'Delete' implies a destructive mutation, it doesn't specify whether this action is reversible, what happens to tasks using this label (e.g., if they lose the label or remain unaffected), or any error conditions (e.g., invalid ID handling). This leaves significant gaps for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.

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 destructive mutation tool with no annotations and no output schema, the description is inadequate. It lacks critical context: what the tool returns (e.g., success confirmation or error details), behavioral traits like irreversibility, and usage prerequisites. This leaves the agent under-informed about risks 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?

The schema description coverage is 100%, with the single parameter 'label_id' clearly documented in the schema as 'ID of the label to delete'. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or sourcing instructions, which is acceptable given the 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 action ('Delete') and resource ('a personal label from Todoist'), making the purpose immediately understandable. It distinguishes this from sibling tools like 'todoist_remove_shared_labels' by specifying 'personal label' rather than shared labels, though it doesn't explicitly contrast with 'todoist_delete_task' or other deletion tools.

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 the label ID from 'todoist_get_personal_labels'), when deletion is appropriate versus updating with 'todoist_update_personal_label', or any constraints like permissions or effects on associated tasks.

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

todoist_delete_taskC

Delete one or more tasks from Todoist

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksNoArray of tasks to delete (for batch operations)
task_idNoID of the task to delete (preferred)
task_nameNoName/content of the task to search for and delete (if ID not provided)

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. 'Delete' implies a destructive mutation, but the description doesn't specify whether deletions are permanent, reversible, require confirmation, or have side effects (e.g., removing associated labels). It also doesn't mention rate limits, authentication needs, or 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?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and appropriately sized for a simple destructive operation.

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 destructive mutation tool with no annotations and no output schema, the description is inadequate. It doesn't address critical context like deletion permanence, success/failure responses, error handling, or how it differs from similar operations (complete_task vs delete_task). The 100% schema coverage helps parameters but doesn't compensate for missing behavioral context.

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%, providing complete parameter documentation. The description adds no parameter semantics beyond what's in the schema—it doesn't clarify the relationship between batch vs single deletion parameters, precedence rules, or search behavior for task_name. Baseline 3 is appropriate when 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 ('Delete') and resource ('one or more tasks from Todoist'), making the purpose immediately understandable. It distinguishes from siblings like todoist_complete_task by specifying deletion rather than completion, though it doesn't explicitly contrast with other destructive operations like todoist_delete_personal_label.

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 when deletion is appropriate versus completion (todoist_complete_task) or updating (todoist_update_task), nor does it specify prerequisites like task existence or permissions required for deletion.

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

todoist_get_personal_labelB

Get a personal label by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
label_idYesID of the label to retrieve

TDQS

B3.1/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 the action ('Get') but doesn't clarify if this is a read-only operation, what happens if the label ID is invalid (e.g., error handling), or any rate limits or authentication requirements. This leaves significant gaps in understanding the tool's 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 directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it highly concise and well-structured for quick understanding.

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 (single parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic action but lacks details on behavior, error handling, and differentiation from siblings, which could help an agent use it more effectively in context.

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 has 100% description coverage, with the parameter 'label_id' documented as 'ID of the label to retrieve'. The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline for high schema coverage without compensating value.

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 ('a personal label by ID'), making the purpose unambiguous. However, it doesn't differentiate from its sibling 'todoist_get_personal_labels' (plural), which retrieves multiple labels, leaving some ambiguity about when to use one versus the other.

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 'todoist_get_personal_labels' for listing all labels or 'todoist_get_shared_labels' for shared labels. It lacks context about prerequisites (e.g., needing a valid label ID) or exclusions, offering minimal usage direction.

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

todoist_get_personal_labelsB

Get all personal labels from Todoist

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/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 the operation is a 'Get' (implying read-only), but doesn't cover aspects like authentication requirements, rate limits, pagination, or response format. This leaves significant gaps for a tool that likely interacts with an external API.

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 waste—it directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple retrieval tool with no parameters.

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 simplicity (0 parameters, no output schema) and lack of annotations, the description is minimally adequate. It covers the basic purpose but misses behavioral details like authentication or response structure, which could be important for an API-based tool. It's complete enough for a basic read operation but lacks depth.

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 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here, but it also doesn't provide any context about optional filters or scoping (e.g., by user), keeping it at a baseline 4.

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 ('Get') and resource ('all personal labels from Todoist'), making the purpose unambiguous. It distinguishes this tool from siblings like 'todoist_get_shared_labels' by specifying 'personal' labels, though it doesn't explicitly contrast with 'todoist_get_personal_label' (singular).

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 is provided on when to use this tool versus alternatives like 'todoist_get_personal_label' (singular) or 'todoist_get_shared_labels'. The description implies usage for retrieving all personal labels but lacks context on prerequisites, timing, or exclusions.

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

todoist_get_projectsC

Get projects with optional filtering and hierarchy information

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idsNoOptional: Specific project IDs to retrieve
include_sectionsNoOptional: Include sections within each project
include_hierarchyNoOptional: Include full parent-child relationships

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 'Get projects' but doesn't clarify if this is a read-only operation, whether it requires authentication, or if there are rate limits. The lack of such details makes it inadequate for a tool with potential data access implications.

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 directly states the tool's purpose and key features without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand at a glance.

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 lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., project details, error handling) or behavioral aspects like permissions. For a data retrieval tool with no structured safety hints, more context is needed to ensure proper usage.

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 has 100% description coverage, providing clear details for all three parameters. The description adds minimal value by mentioning 'optional filtering and hierarchy information', which aligns with the schema but doesn't elaborate further. 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 action ('Get projects') and mentions optional filtering and hierarchy information, which distinguishes it from simple list operations. However, it doesn't explicitly differentiate from sibling tools like 'todoist_get_tasks' or 'todoist_get_project_sections', which reduces specificity.

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 is provided on when to use this tool versus alternatives like 'todoist_get_tasks' or 'todoist_get_project_sections'. The description mentions optional features but doesn't specify scenarios where filtering or hierarchy information is beneficial, leaving usage context implied rather than explicit.

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

todoist_get_project_sectionsC

Get sections from one or more projects in Todoist

ParametersJSON Schema
NameRequiredDescriptionDefault
projectsNoArray of projects to get sections from (for batch operations)
project_idNoID of the project to get sections from
project_nameNoName of the project to get sections from (if ID not provided)
include_emptyNoWhether to include sections with no tasks

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 the full burden of behavioral disclosure. It states this is a 'Get' operation, implying read-only behavior, but doesn't clarify authentication needs, rate limits, error handling, or what the output looks like (e.g., format, pagination). For a tool with no 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 directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, with zero wasted content, making it easy for an agent to parse quickly.

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 lack of annotations and output schema, the description is incomplete for a tool with 4 parameters and batch operation capabilities. It doesn't explain return values, error conditions, or behavioral nuances like how 'projects' and singular project parameters interact. For a retrieval tool in a set with many siblings, 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?

The schema description coverage is 100%, with all parameters well-documented in the input schema (e.g., 'projects' for batch operations, 'include_empty' defaulting to true). The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating value.

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 ('sections from one or more projects in Todoist'), making the purpose evident. It distinguishes this as a retrieval operation for sections rather than tasks or projects, but doesn't explicitly differentiate from similar sibling tools like 'todoist_get_projects' or 'todoist_get_tasks' 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. It doesn't mention sibling tools like 'todoist_get_projects' (for project lists) or 'todoist_get_tasks' (for task retrieval), nor does it specify prerequisites such as needing existing projects. Usage context is implied but not explicit.

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

todoist_get_shared_labelsC

Get all shared labels from Todoist

ParametersJSON Schema
NameRequiredDescriptionDefault
omit_personalNoWhether to exclude the names of the user's personal labels from the results (default: false)

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 but only states the basic action. It doesn't mention whether this is a read-only operation, what permissions are required, whether it's paginated, what format the results are in, or any rate limits. For a 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 communicates the core purpose without any wasted words. It's appropriately sized for a simple retrieval tool and gets straight to the point.

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 lack of annotations and output schema, the description should provide more context about what 'shared labels' means in Todoist, how results are structured, and behavioral aspects. For a tool that retrieves data with no structured output documentation, the current description is insufficiently complete.

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%, so the schema already fully documents the single parameter 'omit_personal'. The description doesn't add any additional meaning about parameters beyond what's in the schema, but with complete schema coverage, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('all shared labels from Todoist'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'todoist_get_personal_labels' or 'todoist_get_personal_label', which could cause confusion about when to use each.

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 'todoist_get_personal_labels' or 'todoist_get_personal_label'. There's no mention of prerequisites, context for shared vs. personal labels, or comparison with sibling tools that might retrieve similar data.

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

todoist_get_tasksC

Get a list of tasks from Todoist with various filters - handles both single and batch retrieval

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoFilter tasks by project ID (optional)
section_idNoFilter tasks by section ID (optional)
labelNoFilter tasks by label name (optional)
filterNoNatural language filter like 'today', 'tomorrow', 'next week', 'priority 1', 'overdue' (optional)
langNoIETF language tag defining what language filter is written in (optional)
idsNoArray of specific task IDs to retrieve (optional)
priorityNoFilter by priority level (1-4) (optional)
limitNoMaximum number of tasks to return (optional, client-side filtering)

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 the full burden. It mentions 'handles both single and batch retrieval', which adds some behavioral context beyond the input schema. However, it lacks critical details such as whether this is a read-only operation, how results are paginated or limited, error handling, or authentication requirements. For a tool with 8 parameters and no annotations, 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 ('Get a list of tasks from Todoist') and adds qualifying details. There's no wasted text, though it could be slightly more structured by separating filtering and retrieval aspects into distinct points.

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 (8 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain return values, error conditions, or behavioral constraints like rate limits or side effects. For a tool that likely returns structured task data, more context is needed to guide effective usage, especially without annotations or output schema.

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%, meaning all parameters are documented in the input schema. The description adds minimal value by implying filtering capabilities ('various filters') and retrieval modes ('single and batch'), but doesn't provide additional syntax, format details, or interactions between parameters beyond what the schema already specifies. Baseline 3 is appropriate when 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 ('Get') and resource ('list of tasks from Todoist'), and specifies the action involves 'various filters' and 'both single and batch retrieval'. It distinguishes itself from siblings like todoist_get_projects or todoist_get_personal_labels by focusing on tasks, but doesn't explicitly differentiate from other task-related tools like todoist_update_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?

The description mentions 'various filters' and 'both single and batch retrieval', which implies usage for filtered or specific task retrieval. However, it provides no explicit guidance on when to use this tool versus alternatives like todoist_get_projects for project-level data or todoist_update_task for modifications. No exclusions or prerequisites are stated.

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

todoist_remove_shared_labelsC

Remove one or more shared labels from Todoist tasks

ParametersJSON Schema
NameRequiredDescriptionDefault
labelsNoArray of shared label names to remove (for batch operations)
nameNoThe name of the label to remove

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 the action ('remove') but doesn't mention permissions required, whether the operation is reversible, error handling (e.g., if labels don't exist), or what happens to tasks with those labels. This leaves significant gaps for a mutation tool.

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

Conciseness5/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 and target without any wasted words. It's appropriately sized for a straightforward tool, making it easy to parse quickly.

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 doesn't explain what the tool returns (e.g., success status, error messages) or behavioral aspects like side effects on tasks. For a tool that modifies data, more context is needed to guide safe usage.

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 the two parameters ('labels' for batch operations and 'name' for single removal) and their structure. The description adds no additional meaning beyond implying batch capability with 'one or more', which is already covered in the schema. Baseline 3 is appropriate 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 ('remove') and target ('shared labels from Todoist tasks'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'todoist_update_task_labels' or 'todoist_rename_shared_labels', which also manipulate labels, so it lacks specific differentiation.

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 is provided on when to use this tool versus alternatives. For example, it doesn't clarify if this is for batch operations (implied by the schema) or single removals, or when to choose this over updating task labels directly with 'todoist_update_task_labels'. The description offers no context or exclusions.

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

todoist_rename_shared_labelsC

Rename one or more shared labels in Todoist

ParametersJSON Schema
NameRequiredDescriptionDefault
labelsNoArray of label rename operations (for batch operations)
nameNoThe name of the existing label to rename
new_nameNoThe new name for the label

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 offers minimal behavioral disclosure. 'Rename' implies mutation, but it doesn't address permissions needed, whether changes are reversible, error conditions (e.g., duplicate names), or what happens to tasks using renamed labels. For a mutation tool with zero annotation coverage, 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.

Conciseness5/5

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

The description is a single, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized for a straightforward rename operation and front-loads the essential action.

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 inadequate. It doesn't explain what the tool returns, error handling, or behavioral nuances. While the schema covers parameters well, the overall context for safe and effective use is missing given the tool's complexity (batch operations, mutation).

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 3 parameters and their purposes. The description adds no parameter-specific information beyond implying batch capability with 'one or more'. This meets the baseline of 3 when schema does the heavy lifting, but doesn't provide additional context like naming constraints or batch limits.

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 ('rename') and resource ('shared labels in Todoist'), making the purpose immediately understandable. It specifies 'one or more' which indicates batch capability. However, it doesn't explicitly differentiate from sibling tools like 'todoist_update_personal_label' or 'todoist_remove_shared_labels' beyond the 'shared' qualifier.

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 existing shared labels), when to choose batch vs single operations, or how it differs from personal label operations. The agent must infer usage from the name and schema alone.

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

todoist_update_personal_labelC

Update one or more existing personal labels in Todoist

ParametersJSON Schema
NameRequiredDescriptionDefault
labelsNoArray of labels to update (for batch operations)
label_idNoID of the label to update
label_nameNoName of the label to search for and update (if ID not provided)
nameNoNew name for the label (optional)
colorNoNew color for the label (optional)
orderNoNew order for the label (optional)
is_favoriteNoWhether the label is a favorite (optional)

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 critical aspects like required permissions, whether updates are idempotent, error handling (e.g., for invalid IDs), or what the response contains. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 core action ('Update') and resource ('personal labels'), with no wasted words. It effectively communicates the tool's scope in minimal space, earning full marks for conciseness.

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 (mutation tool with batch support, 7 parameters) and lack of annotations or output schema, the description is incomplete. It doesn't address behavioral traits (e.g., side effects, error cases), usage context, or return values, leaving the agent under-informed for a tool that modifies data. This is inadequate for a mutation tool with no structured safety or output information.

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, their types, optionality, and constraints (e.g., color enum). The description adds no parameter-specific information beyond implying batch capability ('one or more'), which is already clear from the 'labels' array parameter in the schema. 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 personal labels in Todoist'), and specifies it can handle batch operations ('one or more'). However, it doesn't explicitly distinguish this from sibling tools like 'todoist_rename_shared_labels' or 'todoist_update_task_labels', which also involve label modifications but for different label types or contexts.

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 label IDs or names), compare it to sibling tools like 'todoist_delete_personal_label' or 'todoist_get_personal_label', or specify use cases for batch versus single updates. This leaves the agent to infer usage from the schema alone.

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

todoist_update_projectC

Update one or more projects in Todoist

ParametersJSON Schema
NameRequiredDescriptionDefault
projectsNoArray of projects to update (for batch operations)
project_idNoID of the project to update
nameNoNew name for the project (optional)
colorNoNew color for the project (optional)
favoriteNoWhether the project should be a favorite (optional)
view_styleNoView style of the project (optional)

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. While 'Update' implies a mutation operation, the description doesn't specify whether this requires specific permissions, what happens to existing data not mentioned in updates, whether changes are reversible, or any rate limits. For a batch-update tool with zero annotation coverage, this is a significant gap in behavioral context.

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

Conciseness5/5

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

The description is a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized for a tool with a clear name and comprehensive schema, though it could be more helpful with additional context.

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 6 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, error conditions, or behavioral nuances. Given the complexity of batch operations and the lack of structured metadata, the description should provide more complete context about how this tool behaves and what results to expect.

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 has 100% description coverage, so the schema already documents all parameters thoroughly. The description adds no additional parameter information beyond what's in the schema, such as explaining the relationship between the 'projects' array and individual parameters or providing examples of valid inputs. The baseline of 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') and resource ('one or more projects in Todoist'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'todoist_update_task' or other update tools, which would require mentioning it specifically updates project metadata rather than tasks or labels.

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 'todoist_create_project' for new projects or 'todoist_get_projects' for reading. There's no mention of prerequisites, error conditions, or typical use cases, leaving the agent to 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.

todoist_update_taskC

Update one or more tasks in Todoist with full parameter support

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksNoArray of tasks to update (for batch operations)
task_idNoID of the task to update (preferred)
task_nameNoName/content of the task to search for (if ID not provided)
contentNoNew content/title for the task (optional)
descriptionNoNew description for the task (optional)
project_idNoMove task to this project ID (optional)
section_idNoMove task to this section ID (optional)
labelsNoNew array of label names for the task (optional)
priorityNoNew priority level from 1 (normal) to 4 (urgent) (optional)
due_stringNoNew due date in natural language (optional)
due_dateNoNew due date in YYYY-MM-DD format (optional)
due_datetimeNoNew due date and time in RFC3339 format (optional)
due_langNo2-letter language code for due date parsing (optional)
assignee_idNoNew user ID to assign the task to (optional)
durationNoNew duration amount of the task (optional)
duration_unitNoNew duration unit ('minute' or 'day') (optional)
deadline_dateNoNew deadline date in YYYY-MM-DD format (optional)
deadline_langNo2-letter language code for deadline parsing (optional)

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. While 'Update' implies mutation, it doesn't specify whether this requires authentication, what happens on partial updates, whether changes are reversible, error handling for invalid IDs, or rate limits. The mention of 'full parameter support' is vague and doesn't add meaningful behavioral context.

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

Conciseness5/5

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

The description is a single, efficient sentence that communicates the core functionality. It's appropriately sized for a tool with comprehensive schema documentation, with zero wasted words or redundant information.

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 18 parameters, no annotations, and no output schema, the description is inadequate. It doesn't cover behavioral aspects like authentication needs, error conditions, response format, or practical usage patterns. The schema handles parameter documentation, but the description fails to provide necessary operational context.

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 18 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain parameter interactions, precedence rules, or provide examples. Baseline 3 is appropriate when 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 ('tasks in Todoist'), and specifies 'one or more tasks' indicating batch capability. However, it doesn't differentiate from sibling tools like todoist_update_task_labels or todoist_update_project, which also update Todoist 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 like todoist_update_task_labels (for label-only updates) or todoist_complete_task (for marking tasks done). It mentions 'full parameter support' but doesn't specify when batch vs single updates are appropriate or any prerequisites.

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

todoist_update_task_labelsC

Update the labels of one or more tasks in Todoist

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksNoArray of tasks to update labels for (for batch operations)
task_idNoID of the task to update labels for (preferred)
task_nameNoName/content of the task to search for and update labels (if ID not provided)
labelsNoArray of label names to set for 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 the full burden of behavioral disclosure. It states this is an update operation but doesn't clarify whether it overwrites existing labels, merges with them, requires specific permissions, or has side effects. For a mutation tool with zero annotation coverage, this is insufficient behavioral context.

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

Conciseness5/5

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

The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized and front-loaded, with zero wasted content.

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 incomplete. It doesn't explain what the tool returns, error conditions, or behavioral nuances (like whether it replaces or merges labels). Given the complexity of batch operations and label management, 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?

The schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain label format, batch operation implications, or search behavior). 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 action ('update') and resource ('labels of one or more tasks in Todoist'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'todoist_update_task' or 'todoist_remove_shared_labels', which might also involve label modifications, so it doesn't reach the highest score.

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 sibling tools like 'todoist_update_task' (which might update other task properties) or 'todoist_remove_shared_labels', leaving the agent without context for tool selection decisions.

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

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific resources and actions, but there is some overlap between todoist_update_task and todoist_update_task_labels, which could cause confusion as both modify tasks. The descriptions clarify that one handles general updates while the other focuses on labels, but the boundaries are not entirely clear.

Naming Consistency5/5

All tool names follow a consistent pattern: 'todoist_' prefix, a verb (e.g., create, get, update, delete), and a noun (e.g., task, project, label). This uniformity makes the set predictable and easy to navigate, with no deviations in style or structure.

Tool Count4/5

With 19 tools, the count is slightly high but reasonable for a comprehensive Todoist integration covering tasks, projects, labels, and sections. It includes CRUD operations for each resource, which justifies the number, though it might feel a bit heavy for simpler use cases.

Completeness5/5

The tool set provides complete CRUD and lifecycle coverage for the Todoist domain, including tasks, projects, personal labels, shared labels, and sections. There are no obvious gaps; agents can perform all essential operations without dead ends, from creation to deletion and updates.

Maintenance

ActivityInactive
ResponsivenessSyncing

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/Chrusic/todoist-mcp-server-extended'

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