Todoist MCP Server
The Todoist MCP Server enables natural language task management in Todoist by integrating with Claude or any MCP-compatible LLM.
Capabilities include:
Task Management: Create, update, complete, and delete tasks with support for descriptions, due dates, priorities, project/section assignments, and assignees.
Batch Operations: Efficiently manage multiple tasks, projects, sections, and labels simultaneously.
Smart Search & Filtering: Find tasks using natural language queries and filter by project, section, due date, priority, and labels.
Project & Section Management: Create, update, and organize projects and sections in hierarchical structures with customizable properties (colors, view styles, etc.).
Label Management: Create, update, and manage both personal and shared labels, including name, color, order, and favorite status.
Rich Task Details: Support for detailed task properties including subtasks, parent-child relationships, and various date formats.
Name-Based Operations: Perform actions using name matching when IDs aren't available.
Allows natural language task management of Todoist projects, tasks, sections, and labels. Includes features for creating, updating, completing, and deleting tasks, filtering by various criteria, and managing projects and labels.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Todoist MCP Serveradd 'buy groceries' to my shopping list project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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:
Run following command in cmd\pwsh:
npx -y @smithery/cli install @Chrusic/todoist-mcp-server-extended --client claudeAlso compatible with cline or windsurf, by changing last parameter to --client cline or --client windsurf
Installing via npm
Run following command in cmd\pwsh:
npm install -g @chrusic/todoist-mcp-server-extendedSetup
Grab a Todoist API Token
Log in to your Todoist account
Navigate to
Settings → IntegrationsFind your API token under
DeveloperPress
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
In your
claude_desktop_config.jsonfile, 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" } }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" } } } }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 toolstodoist_complete_taskC
Mark one or more tasks as complete in Todoist
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | No | Array of tasks to mark as complete (for batch operations) | |
| task_id | No | ID of the task to complete (preferred) | |
| task_name | No | Name/content of the task to search for and complete (if ID not provided) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| labels | No | Array of labels to create (for batch operations) | |
| name | No | Name of the label | |
| color | No | Color of the label (optional) | |
| order | No | Order of the label (optional) | |
| is_favorite | No | Whether the label is a favorite (optional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projects | No | Array of projects to create (for batch operations) | |
| name | No | Name of the project (for single project creation) | |
| parent_id | No | Parent project ID (optional) | |
| color | No | Color of the project (optional) | |
| favorite | No | Whether the project is a favorite (optional) | |
| view_style | No | View style of the project (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| sections | No | Array of sections to create (for batch operations) | |
| project_id | No | ID of the project | |
| name | No | Name of the section | |
| order | No | Order of the section (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | No | Array of tasks to create (for batch operations) | |
| content | No | The content/title of the task (for single task creation) | |
| description | No | Detailed description of the task (optional) | |
| project_id | No | ID of the project to add the task to (optional) | |
| section_id | No | ID of the section to add the task to (optional) | |
| parent_id | No | ID of the parent task for subtasks (optional) | |
| order | No | Position in the project or parent task (optional) | |
| labels | No | Array of label names to apply to the task (optional) | |
| priority | No | Task priority from 1 (normal) to 4 (urgent) (optional) | |
| due_string | No | Natural language due date like 'tomorrow', 'next Monday' (optional) | |
| due_date | No | Due date in YYYY-MM-DD format (optional) | |
| due_datetime | No | Due date and time in RFC3339 format (optional) | |
| due_lang | No | 2-letter language code for due date parsing (optional) | |
| assignee_id | No | User ID to assign the task to (optional) | |
| duration | No | The duration amount of the task (optional) | |
| duration_unit | No | The duration unit ('minute' or 'day') (optional) | |
| deadline_date | No | Deadline date in YYYY-MM-DD format (optional) | |
| deadline_lang | No | 2-letter language code for deadline parsing (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| label_id | Yes | ID of the label to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | No | Array of tasks to delete (for batch operations) | |
| task_id | No | ID of the task to delete (preferred) | |
| task_name | No | Name/content of the task to search for and delete (if ID not provided) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| label_id | Yes | ID of the label to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_ids | No | Optional: Specific project IDs to retrieve | |
| include_sections | No | Optional: Include sections within each project | |
| include_hierarchy | No | Optional: Include full parent-child relationships |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projects | No | Array of projects to get sections from (for batch operations) | |
| project_id | No | ID of the project to get sections from | |
| project_name | No | Name of the project to get sections from (if ID not provided) | |
| include_empty | No | Whether to include sections with no tasks |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of 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.
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.
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.
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.
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.
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_tasksC
Get a list of tasks from Todoist with various filters - handles both single and batch retrieval
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Filter tasks by project ID (optional) | |
| section_id | No | Filter tasks by section ID (optional) | |
| label | No | Filter tasks by label name (optional) | |
| filter | No | Natural language filter like 'today', 'tomorrow', 'next week', 'priority 1', 'overdue' (optional) | |
| lang | No | IETF language tag defining what language filter is written in (optional) | |
| ids | No | Array of specific task IDs to retrieve (optional) | |
| priority | No | Filter by priority level (1-4) (optional) | |
| limit | No | Maximum number of tasks to return (optional, client-side filtering) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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_update_personal_labelC
Update one or more existing personal labels in Todoist
| Name | Required | Description | Default |
|---|---|---|---|
| labels | No | Array of labels to update (for batch operations) | |
| label_id | No | ID of the label to update | |
| label_name | No | Name of the label to search for and update (if ID not provided) | |
| name | No | New name for the label (optional) | |
| color | No | New color for the label (optional) | |
| order | No | New order for the label (optional) | |
| is_favorite | No | Whether the label is a favorite (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| projects | No | Array of projects to update (for batch operations) | |
| project_id | No | ID of the project to update | |
| name | No | New name for the project (optional) | |
| color | No | New color for the project (optional) | |
| favorite | No | Whether the project should be a favorite (optional) | |
| view_style | No | View style of the project (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | No | Array of tasks to update (for batch operations) | |
| task_id | No | ID of the task to update (preferred) | |
| task_name | No | Name/content of the task to search for (if ID not provided) | |
| content | No | New content/title for the task (optional) | |
| description | No | New description for the task (optional) | |
| project_id | No | Move task to this project ID (optional) | |
| section_id | No | Move task to this section ID (optional) | |
| labels | No | New array of label names for the task (optional) | |
| priority | No | New priority level from 1 (normal) to 4 (urgent) (optional) | |
| due_string | No | New due date in natural language (optional) | |
| due_date | No | New due date in YYYY-MM-DD format (optional) | |
| due_datetime | No | New due date and time in RFC3339 format (optional) | |
| due_lang | No | 2-letter language code for due date parsing (optional) | |
| assignee_id | No | New user ID to assign the task to (optional) | |
| duration | No | New duration amount of the task (optional) | |
| duration_unit | No | New duration unit ('minute' or 'day') (optional) | |
| deadline_date | No | New deadline date in YYYY-MM-DD format (optional) | |
| deadline_lang | No | 2-letter language code for deadline parsing (optional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | No | Array of tasks to update labels for (for batch operations) | |
| task_id | No | ID of the task to update labels for (preferred) | |
| task_name | No | Name/content of the task to search for and update labels (if ID not provided) | |
| labels | No | Array of label names to set for the task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Manage tasks, Focus Zone, notes, projects, and task history from compatible AI assistants.
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
Create and manage MeisterTask projects, tasks, and notes from your AI assistant.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceConnects AI assistants to Todoist for comprehensive task management, enabling natural language creation, updating, and organization of tasks, projects, sections, and labels.133MIT
- AlicenseAqualityDmaintenanceEnables natural language task management with Todoist, supporting tasks, projects, sections, labels, smart search, and batch operations for efficient workflow integration with Claude and other MCP-compatible LLMs.1921MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Todoist tasks, projects, sections, and labels through natural language, supporting task creation, updates, completion, and intelligent organization of your workflow.13MIT
- AlicenseAqualityCmaintenanceConnects Claude to Todoist for transforming meeting notes into actionable tasks with inferred due dates and priorities. It enables full task lifecycle management, including creating subtasks, listing projects, and completing tasks through natural language.7MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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