Enhanced Todoist MCP Server Extended
This server provides comprehensive Todoist integration through Claude via the Model Context Protocol, offering 31 specialized tools for managing tasks, projects, sections, labels, comments, and completed task history.
Task Management (11 tools): Create tasks with full options (subtasks, labels, projects, sections, priorities, due dates, descriptions), quick add using natural language (e.g., "Buy milk tomorrow at 2pm #shopping"), retrieve tasks with filtering by project/section/parent/label/IDs and pagination, get specific tasks by ID, update task properties, delete tasks, mark complete or reopen, search using Todoist's filter engine, and move tasks individually or bulk move multiple tasks (up to 10-20 parent tasks with subtasks) between projects/sections or make them subtasks.
Project Management (5 tools): List all active projects with pagination, get specific projects by ID, create projects with customization (name, color, favorite, view style, sub-projects), update project properties, and delete projects.
Section Management (4 tools): List sections (all or project-specific) with pagination, create sections in projects, update section names, and delete sections.
Label Management (5 tools): Create labels with customization (name, color, favorite, order), get specific labels by ID, list all labels with pagination, update label properties, and delete labels.
Comment Management (5 tools): Create comments on tasks or projects with file attachments, get specific comments by ID, retrieve comments for tasks/projects with pagination, update comment content, and delete comments.
Completed Tasks History (1 tool): Access completed task history with filtering by project, date range (since/until), and pagination using Todoist Sync API.
Technical Features: Updated compatibility with Todoist API (SDK 4.0.4) and MCP SDK (0.5.0+), enhanced error handling with detailed messages, improved TypeScript support, and optimized API usage with better response formatting.
Provides comprehensive task, project, section, and label management through Todoist's API, enabling creation, reading, updating, and deletion of tasks with support for subtasks, labels, priorities, due dates, search functionality, and project organization.
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., "@Enhanced Todoist MCP Server Extendedsearch tasks for 'urgent meeting' due this week"
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.
Enhanced Todoist MCP Server Extended
Extended Version - Forked and enhanced by kydycode from the original @abhiz123/todoist-mcp-server
A comprehensive MCP (Model Context Protocol) server implementation that provides full integration between Claude and Todoist. This extended version includes additional features, improved compatibility, and enhanced functionality using the complete Todoist API with the latest MCP SDK (@doist/todoist-api-typescript@4.0.4). Completed tasks retrieval uses the Todoist REST API v1.
š Extended Version Features
š§ Technical Improvements
Updated Todoist SDK: Now using
@doist/todoist-api-typescript@4.0.4.Updated MCP SDK Compatibility: Compatible with MCP SDK 0.5.0.
Enhanced Error Handling: Comprehensive error handling with detailed error messages.
Improved TypeScript Support: Better type safety and compatibility.
Optimized API Usage: Efficient use of Todoist API, including
getTasksByFilterfor robust search andmoveTasksfor semantic task movement.Better Response Formatting: Enhanced task, project, and label formatting for better readability, including project names in search results.
⨠Enhanced Task Management (11 Tools)
Direct ID-based Operations: Efficient task operations using task IDs.
Comprehensive Task Creation: Support for subtasks, labels, projects, sections, priorities.
Quick Add Integration: Natural language task creation using Todoist's Quick Add.
Advanced Task Search: Robust keyword search using Todoist's filter engine (
search: your query).Task Movement Capabilities: Move tasks between projects, sections, or make them subtasks.
Bulk Task Operations: Move multiple tasks with subtasks in a single operation.
Task State Management: Complete, reopen, and manage task lifecycle.
Detailed Task Output: Search and get-task operations return more task details.
šļø Complete Project Management (5 Tools)
Full Project CRUD: Create, read, update, delete projects with all properties.
Sub-project Support: Create hierarchical project structures.
Project Customization: Set colors, favorites, view styles (list/board).
Enhanced Project Listing: Improved project retrieval with pagination and detailed formatting.
š Section Management (4 Tools)
Complete Section Operations: Create, read, update, delete sections.
Project-specific Sections: Filter and manage sections within projects.
Section Organization: Proper ordering and structure management.
š·ļø Label Management (5 Tools)
Full Label CRUD: Create, read, update, delete labels.
Label Customization: Set names, colors, favorites, order.
Paginated Label Listing: Efficiently retrieve all labels.
š¬ Comment Management (5 Tools)
Complete Comment CRUD: Create, read, update, delete comments on tasks and projects.
Attachment Support: Add file attachments to comments with metadata.
Flexible Targeting: Comments can be attached to either tasks or projects.
Paginated Comment Retrieval: Efficiently browse through comment threads.
ā Completed Tasks History (1 Tool) š
REST API v1 Integration: Access completed task history via Todoist API v1 (
/api/v1/tasks/completed/by_completion_date). Migrated from deprecated Sync API v9.Flexible Filtering: Filter by project, section, date range (since/until).
Cursor-based Pagination: Efficient retrieval of large histories.
Rich Metadata: Shows labels, priorities, descriptions, note counts, completion timestamps.
Related MCP server: Todoist MCP Server
š ļø Available Tools (Total 31)
Task Operations (11 tools)
Tool | Description |
| Create tasks with full options (subtasks, labels, projects, sections, priorities). |
| Natural language task creation using Todoist's Quick Add syntax. |
| Retrieve tasks with filtering (project, section, parent, label, IDs) and pagination. |
| Get a specific task by its ID, with detailed information. |
| Update task properties (content, description, due date, priority, labels). |
| Delete task by ID. |
| Mark task complete. |
| Reopen completed task. |
| Search tasks using Todoist's filter engine (e.g., |
| Move a task to a different project, section, or make it a subtask. |
| Move multiple tasks with their subtasks to a project, section, or parent task. |
Project Operations (5 tools)
Tool | Description |
| List all active projects with pagination support. |
| Get a specific project by its ID. |
| Create new project (name, color, favorite, view style, sub-projects). |
| Update project properties. |
| Delete project by ID. |
Section Operations (4 tools)
Tool | Description |
| List sections (all sections or project-specific). |
| Create section in project (name, project, ordering). |
| Update section name. |
| Delete section by ID. |
Label Operations (5 tools)
Tool | Description |
| Create a new label (name, color, favorite, order). |
| Get a specific label by its ID. |
| List all labels with pagination support. |
| Update an existing label by its ID (name, color, favorite, order). |
| Delete a label by its ID. |
Comment Operations (5 tools)
Tool | Description |
| Create a new comment on a task or project (with attachments). |
| Get a specific comment by its ID. |
| Get comments for a task or project with pagination support. |
| Update an existing comment by its ID. |
| Delete a comment by its ID. |
Completed Tasks Operations (1 tool) š
Tool | Description |
| Get completed tasks history with filtering by project, section, date range (since/until required), and cursor-based pagination. Uses Todoist REST API v1. |
š Installation & Setup
Local Development Setup
# Clone the extended repository
git clone https://github.com/kydycode/todoist-mcp-server-ext.git
cd todoist-mcp-server-ext
# Install dependencies
npm install
# Build the project
npm run buildGetting a Todoist API Token
Log in to your Todoist account
Navigate to Settings ā Integrations ā Developer
Copy your API token
Usage with Claude Desktop
Add to your claude_desktop_config.json:
Option 1: Run locally built version
{
"mcpServers": {
"todoist-mcp-server": {
"command": "node",
"args": ["/path/to/your/todoist-mcp-server-ext/dist/index.js"],
"env": {
"TODOIST_API_TOKEN": "your_api_token_here"
}
}
}
}Option 2: Run via npm/npx (recommended for published version)
{
"mcpServers": {
"todoist-mcp-server": {
"command": "npx",
"args": ["-y", "@kydycode/todoist-mcp-server-ext@latest"],
"env": {
"TODOIST_API_TOKEN": "your_api_token_here"
}
}
}
}Option 3: Install globally first
# Install the extended version globally
npm install -g @kydycode/todoist-mcp-server-ext@latest
# Then use in Claude Desktop config
{
"mcpServers": {
"todoist-mcp-server": {
"command": "todoist-mcp-server-ext",
"env": {
"TODOIST_API_TOKEN": "your_api_token_here"
}
}
}
}š Usage Examples
šÆ Advanced Task Creation & Management
"Create task 'Team Meeting @Tomorrow #Work p1'"
"Add task 'Fix critical bug +KydyCode @DevProject L:Urgent L:Backend'"
"Quick add: 'Buy milk tomorrow at 2pm #shopping !p1'"
"Move task with ID {task_id} to project {project_id}"
"Search tasks: search: API deployment"šļø Project, Section, Label, and Comment Management
"List all my projects"
"Create project 'Q2 Planning' color:blue favorite:true view:board"
"Get sections for project {project_id}"
"Create label 'HighPriority' color:red isFavorite:true"
"List all labels"
"Add comment 'Great progress on this task!' to task {task_id}"
"Get all comments for project {project_id}"
"Update comment {comment_id} with new content"ā Completed Tasks History š
"Get completed tasks between 2024-01-01 and 2024-01-31"
"Show tasks completed since 2024-01-01 until today"
"Get completed tasks from project {project_id} since 2024-01-01 until 2024-12-31"
"Show last week's completed tasks"š Extended vs Original Comparison
Feature | Original | Extended Version ( |
Todoist SDK Version | Older | ā
|
MCP SDK Compatibility | Older version | ā Latest MCP SDK 0.5.0+ |
Error Handling | Basic | ā Comprehensive with detailed messages |
TypeScript Support | Limited | ā Full type safety |
Task Operations | Search-based, limited features | ā
11 Tools: Direct ID-based, |
Project Management | Limited | ā 5 Tools: Full CRUD operations, sub-projects, pagination |
Section Management | Basic | ā 4 Tools: Complete section operations |
Label Management | Not Available | ā 5 Tools: Full CRUD operations, pagination |
Comment Management | Not Available | ā 5 Tools: Full CRUD operations, attachments, pagination |
Completed Tasks History | Not Available | ā 1 Tool: REST API v1 integration, date filtering, cursor pagination |
API Parameter Handling | Inconsistent | ā Proper parameter validation |
Response Formatting | Basic | ā Enhanced readability, more details |
Build System | Issues | ā Clean compilation |
Search Functionality | Basic local filter | ā
Robust |
š§ Development
Project Structure
src/
āāā index.ts # Main server implementation with all tools
package.json # Dependencies and scripts
tsconfig.json # TypeScript configuration
README.md # This file
local-instructions.md # Personal publishing guide
LICENSE
.gitignore
dist/ # Compiled JavaScript output (after `npm run build`)
āāā index.js
āāā index.d.tsBuilding from Source
# Install dependencies
npm install
# Build TypeScript
npm run build
# Test the server (requires TODOIST_API_TOKEN)
# Example: Set token and pipe a list tools request
export TODOIST_API_TOKEN="your_actual_todoist_api_token"
echo '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}' | node dist/index.jsDevelopment Scripts
npm run build # Compile TypeScript and make output executable
npm run watch # Watch for changes and rebuild (doesn't make output executable)
npm run prepare # Pre-publish build (runs build)š¤ Contributing
Contributions are welcome! This extended version accepts contributions for:
Additional Todoist API endpoints
Enhanced error handling and validation
Performance optimizations
Documentation improvements
Bug fixes and compatibility updates
Please submit issues and pull requests to the extended repository.
š License
This project is licensed under the MIT License - see the LICENSE file for details.
š Credits
Extended Version: kydycode - Enhanced functionality and compatibility
Original Creator: @abhiz123 - Initial Todoist MCP server implementation
MCP Protocol: Model Context Protocol by Anthropic
š Issues and Support
Extended Version Issues: GitHub Issues
Original Repository: abhiz123/todoist-mcp-server
š Related Links
Extended Repository: kydycode/todoist-mcp-server-ext
NPM Package:
@kydycode/todoist-mcp-server-extOriginal Repository: abhiz123/todoist-mcp-server
Available Tools
30 toolstodoist_bulk_move_tasksA
Move multiple tasks (and their respective subtasks, if any; e.g., up to 10-20 parent tasks for best performance) to a different project, section, or make them subtasks of another task. Provide an array of taskIds and exactly one destination (projectId, sectionId, or parentId).
| Name | Required | Description | Default |
|---|---|---|---|
| taskIds | Yes | An array of task IDs to move. | |
| projectId | No | The ID of the destination project. (Optional, use only one of projectId, sectionId, parentId) | |
| sectionId | No | The ID of the destination section. (Optional, use only one of projectId, sectionId, parentId) | |
| parentId | No | The ID of the parent task to move these tasks under. (Optional, use only one of projectId, sectionId, parentId) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool moves tasks and subtasks, includes a performance hint (10-20 parent tasks), and specifies the exclusive nature of destination parameters. However, it lacks details on permissions, error handling, or what happens to task metadata during the move, which are important 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 front-loaded with the core action, followed by important details (subtasks, performance, parameter constraints) in a single, efficient sentence. Every part earns its place without 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?
Given no annotations and no output schema, the description is moderately complete for a mutation tool. It covers the action, parameters, and a performance note, but lacks information on return values, error cases, or side effects, which would be helpful for full contextual understanding.
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 baseline is 3. The description adds value by clarifying that exactly one destination parameter must be provided (projectId, sectionId, or parentId), which reinforces but goes beyond the schema's optional notes. It also mentions subtasks are included, which contextualizes the taskIds parameter.
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 specific action ('move multiple tasks'), the resource ('tasks'), and scope ('and their respective subtasks'), distinguishing it from the sibling 'todoist_move_task' which presumably handles single tasks. It provides a comprehensive understanding of what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage by specifying the destination options (project, section, or parent task) and the performance recommendation (10-20 parent tasks). However, it does not explicitly state when to use this tool versus the sibling 'todoist_move_task' or other alternatives, which is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_complete_taskC
Mark a task as complete by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The ID of the task to complete |
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 ('Mark as complete') which implies a mutation, but doesn't address critical aspects like whether this requires authentication, what happens if the task is already complete, if completion is reversible, or what the response looks like. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and understandable without any structural fluff.
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 insufficiently complete. It doesn't address authentication requirements, error conditions (e.g., invalid task ID), what happens upon completion (e.g., task archiving), or return values. The agent would need to guess about these critical operational aspects.
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 'taskId' fully documented in the schema as 'The ID of the task to complete'. The description doesn't add any additional semantic context beyond what's already in the schema, so it meets the baseline for adequate but unenhanced parameter documentation.
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 ('task by its ID'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'todoist_reopen_task' or 'todoist_update_task' which could also modify task status, leaving some ambiguity about when this specific tool is the right choice.
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_reopen_task' (for undoing completion) or 'todoist_update_task' (which might also handle status changes). There's no mention of prerequisites (e.g., task must exist and be incomplete) or contextual cues for selection, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_create_commentC
Create a new comment on a task or project
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The content/text of the comment | |
| taskId | No | Task ID to add comment to (provide either taskId or projectId, not both) | |
| projectId | No | Project ID to add comment to (provide either taskId or projectId, not both) | |
| attachment | No | Optional file attachment (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 of behavioral disclosure. It states the tool creates a comment, implying a write/mutation operation, but doesn't cover permissions, rate limits, side effects (e.g., notifications), or response format. This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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's front-loaded and wastes no space, 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 complexity (mutation tool with 4 parameters and nested objects), lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like permissions or side effects, nor does it explain return values or error conditions, leaving critical gaps for agent 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?
Schema description coverage is 100%, so the schema already documents all parameters (content, taskId, projectId, attachment) with clear descriptions. The description adds no additional parameter semantics beyond what's in the schema, but the baseline is 3 when schema coverage is high.
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 a new comment') and the target resources ('on a task or project'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like todoist_update_comment or todoist_delete_comment, though the verb 'Create' implies distinction from update/delete operations.
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 task/project), exclusions, or comparisons to related tools like todoist_update_comment or todoist_get_comments, leaving the agent without contextual usage cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_create_labelC
Create a new label.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name of the label. | |
| color | No | Label color name or code (e.g., 'berry_red', '#FF0000') (optional). | |
| isFavorite | No | Whether the label should be a favorite (optional). | |
| order | No | The order of the label in the list (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 of behavioral disclosure. It states 'Create a new label,' which implies a write operation, but doesn't disclose any behavioral traits such as authentication requirements, rate limits, error conditions, or what happens on success (e.g., returns a label ID). 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 ('Create a new label.') that is front-loaded and wastes no words. Every part of the sentence directly contributes to understanding the tool's purpose, making it appropriately concise for a simple creation tool.
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 of a mutation tool (creating a label) with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., a label object or ID), any side effects, or error handling. For a tool that modifies data, this lack of context makes it inadequate for safe and effective use by an AI agent.
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 description adds no parameter information beyond what's already in the schema, which has 100% coverage with clear descriptions for all four parameters (name, color, isFavorite, order). Since schema_description_coverage is high, the baseline score is 3, as the schema adequately documents parameters without needing additional details in the description.
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 ('a new label'), making the purpose immediately understandable. It distinguishes from siblings like todoist_update_label or todoist_delete_label by specifying creation rather than modification or deletion. However, it doesn't explicitly differentiate from other creation tools like todoist_create_project or todoist_create_task, which would require mentioning it's specifically for 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. It doesn't mention prerequisites (e.g., needing a Todoist account), when to choose this over updating an existing label, or how it relates to sibling tools like todoist_get_labels for listing labels. Without such context, the agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_create_projectC
Create a new project
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name of the project | |
| parentId | No | Parent project ID for creating a sub-project (optional) | |
| color | No | Project color (optional) | |
| isFavorite | No | Whether to mark as favorite (optional) | |
| viewStyle | No | Project view style: 'list' or 'board' (optional) |
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. 'Create a new project' implies a write/mutation operation but doesn't specify permissions needed, whether it's idempotent, what happens on duplicate names, or what the response contains. 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.
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 simple creation operation and gets straight to the point.
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 inadequate. It doesn't explain what happens after creation, what permissions are required, or how to handle errors. Given the complexity of creating a project with multiple optional parameters, more context about the operation's behavior 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?
Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter information beyond what's already in the structured schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.
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 'Create a new project' clearly states the verb ('Create') and resource ('project'), making the purpose immediately understandable. However, it doesn't differentiate this from sibling tools like 'todoist_create_task' or 'todoist_create_label', which follow the same pattern for different 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. With siblings like 'todoist_update_project' and 'todoist_get_projects', there's no indication of when creation is appropriate versus retrieval or modification. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_create_sectionC
Create a new section in a project
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name of the section | |
| projectId | Yes | The project ID where the section will be created | |
| order | No | Order of the section (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 a section but doesn't mention any behavioral traits such as permissions required, whether it's idempotent, error conditions, or what happens on success (e.g., returns a section ID). 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 any wasted words. It's front-loaded with the core action and resource, 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 mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., a section object or ID), error handling, or side effects, which are critical for an agent to use it 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?
The input schema has 100% description coverage, with clear documentation for all three parameters (name, projectId, order). The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline score of 3 for adequate but not enhanced parameter understanding.
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 ('new section in a project'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'todoist_create_project' or 'todoist_create_task', which would require mentioning it's specifically for organizing tasks within projects rather than creating projects or tasks themselves.
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), exclusions, or comparisons to siblings like 'todoist_update_section' or 'todoist_get_sections', leaving the agent to infer usage context solely from the tool name and schema.
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 a new task in Todoist with comprehensive options including subtasks
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The content/title of the task | |
| description | No | Detailed description of the task (optional) | |
| projectId | No | Project ID to create the task in (optional) | |
| sectionId | No | Section ID to create the task in (optional) | |
| parentId | No | Parent task ID to create this as a subtask (optional) | |
| dueString | No | Natural language due date like 'tomorrow', 'next Monday', 'Jan 23' (optional) | |
| priority | No | Task priority from 1 (normal) to 4 (urgent) (optional) | |
| labels | No | Array of label names to assign to the task (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Create a new task' which implies a write/mutation operation, but doesn't disclose behavioral traits like authentication requirements, rate limits, error conditions, or what happens on success (e.g., returns a task ID). For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Create a new task') and adds a useful qualifier ('with comprehensive options including subtasks'). There's no wasted verbiage or 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?
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., a task object or ID), error handling, or side effects. For a tool with 8 parameters and significant functionality, 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?
Schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly. The description adds minimal value by mentioning 'comprehensive options including subtasks', which hints at the 'parentId' parameter but doesn't provide additional semantics beyond what's in the schema. 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 ('Create') and resource ('new task in Todoist'), and mentions 'comprehensive options including subtasks' which adds specificity. However, it doesn't explicitly differentiate from sibling tools like 'todoist_quick_add_task' or 'todoist_update_task', which would require a 5.
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_quick_add_task' (which might be for simpler tasks) or 'todoist_update_task' (for modifications). There's no mention of prerequisites, constraints, or typical use cases beyond the basic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_delete_commentC
Delete a comment by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| commentId | Yes | The ID of the comment to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool deletes a comment, implying a destructive mutation, but lacks critical details: whether deletion is permanent, if it requires specific permissions, what happens on success/failure, or any rate limits. This leaves significant gaps for safe and effective use.
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, direct sentence with zero wasted words, making it highly efficient and front-loaded. Every word ('Delete a comment by its ID') contributes essential information, achieving optimal conciseness for a simple tool.
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 destructive nature (implied by 'Delete'), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral risks, response format, or error handling, which are crucial for a mutation tool. The high schema coverage doesn't compensate for these omissions 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 schema description coverage is 100%, with the single parameter 'commentId' fully documented in the schema as 'The ID of the comment to delete'. The description adds no additional semantic context beyond what the schema provides, such as format examples or sourcing instructions, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and target resource ('a comment by its ID'), making the purpose immediately understandable. It distinguishes from siblings like todoist_update_comment (which modifies) and todoist_get_comment (which retrieves), though it doesn't explicitly mention these alternatives in the description itself.
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. The description doesn't mention prerequisites (e.g., needing the comment ID from todoist_get_comment or todoist_get_comments first), nor does it clarify if deletion is permanent or reversible, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_delete_labelB
Delete a label by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| labelId | Yes | The 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 full burden for behavioral disclosure. It states the action is 'Delete,' which implies a destructive mutation, but doesn't specify whether deletion is permanent, reversible, requires specific permissions, or affects associated tasks. For a destructive tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words. It front-loads the core action ('Delete') and resource, making it highly efficient. Every word earns its place, adhering perfectly to conciseness principles.
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 destructive mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like side effects, error conditions, or return values. For a tool that permanently removes data, more context is needed to ensure safe and correct 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 description adds minimal semantics beyond the input schema, which has 100% coverage and clearly describes the single parameter 'labelId.' However, with only one parameter and high schema coverage, the baseline is strong. The description reinforces the parameter's purpose but doesn't provide additional context like format examples or validation rules.
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 label by its ID'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like todoist_delete_project or todoist_delete_task, but the specificity of 'label' provides adequate differentiation. This is clear but lacks explicit sibling comparison.
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 a valid label ID), consequences of deletion, or when to choose this over other deletion tools like todoist_delete_project. Without such context, the agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_delete_projectC
Delete a project by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The ID of the project to delete |
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 'Delete' implies a destructive mutation, it doesn't specify whether this action is reversible, what permissions are required, whether it affects child resources (tasks/sections), or what happens on success/failure. This is inadequate for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 understandable.
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 deletion tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens to associated tasks/comments, whether deletion is permanent, what the response looks like, or error conditions. Given the complexity and risk of deletion, 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 description mentions 'by its ID' which aligns with the single parameter 'projectId'. Since schema description coverage is 100% (the schema already documents 'The ID of the project to delete'), the description adds minimal value beyond what's in the structured schema. 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 'Delete a project by its ID' clearly states the verb (delete) and resource (project), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like todoist_delete_task or todoist_delete_section, but the resource specificity (project) provides implicit distinction.
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., project must exist), consequences (e.g., tasks within the project might be affected), or when to choose deletion over other operations like todoist_update_project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_delete_sectionC
Delete a section by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| sectionId | Yes | The ID of the section to delete |
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. It states the destructive action ('Delete') but lacks critical details: whether deletion is permanent or reversible, what happens to tasks within the section, required permissions, or error handling. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words, making it highly efficient and front-loaded. Every word earns its place by conveying the core action and target.
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 tool with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like permanence, side effects on tasks, or response format, leaving significant gaps in understanding how to use it safely and effectively.
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%, with the parameter 'sectionId' fully documented in the schema. The description adds no additional meaning beyond what the schema provides (e.g., format examples or constraints), so it meets the baseline for high 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 action ('Delete') and resource ('a section by its ID'), making the purpose immediately understandable. However, it doesn't differentiate this from other deletion tools like todoist_delete_project or todoist_delete_task, which would require mentioning it specifically removes a section rather than other entities.
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. It doesn't mention prerequisites (e.g., needing an existing section ID), exclusions, or how it differs from similar tools like todoist_delete_project, leaving the agent to infer usage from context alone.
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 a task by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The ID of the task to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool deletes a task, implying a destructive mutation, but doesn't mention permissions required, whether deletion is permanent or reversible, rate limits, or what happens to associated comments/labels. This leaves significant gaps for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the essential action and target, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is insufficient. It doesn't address behavioral aspects like permanence, permissions, or error conditions, nor does it explain what happens upon success (e.g., confirmation message or void return). Given the complexity of deletion operations, 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%, with the single parameter 'taskId' fully documented in the schema. The description adds no additional parameter information beyond what's in the schema, so it meets the baseline for adequate but not exceptional 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 target resource ('a task by its ID'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like todoist_delete_project or todoist_delete_section, which follow the same pattern but target different 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?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention todoist_complete_task as an alternative for marking tasks done without deletion, or todoist_bulk_move_tasks for handling multiple tasks. The description only states what it does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_get_commentC
Get a specific comment by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| commentId | Yes | The ID of the comment to retrieve |
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 the action ('Get') but doesn't clarify if this is a read-only operation, what permissions are required, how errors are handled, or the format of the returned data. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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's appropriately sized for a simple retrieval tool and front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., comment details, error responses) or behavioral aspects like rate limits or authentication needs. For a tool in a rich sibling set with no structured support, 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 input schema has 100% description coverage, with 'commentId' clearly documented. The description adds no additional parameter semantics beyond what the schema provides, such as examples or constraints on the ID format. 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 verb ('Get') and resource ('a specific comment by its ID'), making the purpose unambiguous. However, it doesn't differentiate from its sibling 'todoist_get_comments' (plural), which likely retrieves multiple comments, 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. It doesn't mention 'todoist_get_comments' for retrieving multiple comments or other related tools like 'todoist_update_comment', leaving the agent to infer usage context from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_get_commentsA
Get comments for a task or project with pagination support
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | No | Task ID to get comments for (provide either taskId or projectId, not both) | |
| projectId | No | Project ID to get comments for (provide either taskId or projectId, not both) | |
| cursor | No | Pagination cursor for next page (optional) | |
| limit | No | Maximum number of comments to return (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses pagination behavior ('with pagination support'), which is valuable beyond the input schema. However, it doesn't mention authentication requirements, rate limits, error conditions, or what the return format looks like (comments structure, metadata). For a read operation with 4 parameters, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 comments for a task or project') and adds essential behavioral context ('with pagination support'). Every word earns its place with zero redundancy or wasted verbiage.
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 4 parameters, no annotations, and no output schema, the description provides basic purpose and pagination context but lacks important details: no authentication/rate limit information, no return format description, and no guidance on error handling. For a moderately complex read operation in this context, the description is minimally adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description adds no parameter-specific information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in description, which applies here.
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 comments') and target resource ('for a task or project'), distinguishing it from sibling tools like todoist_get_comment (singular) and todoist_create_comment. However, it doesn't explicitly differentiate from other read operations like todoist_get_task or todoist_get_project, 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?
The description implies usage for retrieving comments with pagination, but provides no explicit guidance on when to use this versus alternatives like todoist_get_comment (singular) or general search tools. The input schema descriptions offer some parameter-level guidance (taskId vs projectId), but the tool description itself lacks context about typical use cases 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_labelC
Get a specific label by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| labelId | Yes | The ID of the label to retrieve. |
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 the tool retrieves a label but doesn't cover aspects like error handling (e.g., what happens if the ID is invalid), authentication needs, rate limits, or response format. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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's 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?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., label details), error conditions, or behavioral traits, which are crucial for an agent to use it effectively. The high schema coverage helps but doesn't compensate for these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'labelId' clearly documented in the schema. The description adds no additional meaning beyond what the schema provides, such as format examples or constraints, so it meets the baseline of 3 for high schema coverage without extra 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 action ('Get') and resource ('a specific label by its ID'), making the purpose immediately understandable. However, it doesn't differentiate from its sibling 'todoist_get_labels' (plural), which presumably 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. It doesn't mention the sibling 'todoist_get_labels' for retrieving multiple labels or specify prerequisites like needing the label ID beforehand, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_get_labelsB
Get all labels. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Pagination cursor for next page (optional). | |
| limit | No | Maximum number of labels to return (default: 50) (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 of behavioral disclosure. It adds value by mentioning pagination support, which is not obvious from the input schema alone, but lacks details on permissions, rate limits, error handling, or what the output looks like (e.g., format of returned labels). For a read operation with no annotations, this is a minimal but not comprehensive disclosure.
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 extremely concise with two sentences that directly convey the core functionality and a key behavioral trait (pagination). It is front-loaded with the main purpose and wastes no words, making it efficient and easy to parse.
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 (a read operation with two optional parameters) and 100% schema coverage, the description is somewhat complete but has gaps. It lacks output schema, so it doesn't explain return values (e.g., label structure), and with no annotations, it misses behavioral details like safety or constraints. The description covers basics but could be more informative for agent 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 both parameters ('cursor' and 'limit') well-documented in the schema. The description adds no additional parameter semantics beyond implying pagination through the phrase 'Supports pagination,' which loosely relates to the 'cursor' parameter but doesn't explain its usage or format. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('all labels'), making the purpose immediately understandable. It distinguishes from sibling tools like 'todoist_get_label' (singular) by specifying 'all labels', though it doesn't explicitly contrast with other list tools like 'todoist_get_projects' or 'todoist_get_tasks' beyond the resource name.
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 mentions pagination but doesn't specify scenarios where fetching all labels is appropriate over other operations or how it relates to sibling tools like 'todoist_get_label' for individual label retrieval. There are no explicit when/when-not instructions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_get_projectB
Get a specific project by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The ID of the project to retrieve |
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 the tool retrieves a project but doesn't describe what information is returned (e.g., project name, color, tasks), error handling (e.g., for invalid IDs), or any rate limits or authentication requirements. This leaves significant gaps for a read operation with no structured safety hints.
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 specific project by its ID') with zero wasted words. It avoids redundancy and is appropriately sized for a simple retrieval tool, 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?
For a simple read tool with one parameter and no output schema, the description is minimally adequate but incomplete. It covers the basic action but lacks details on return values, error cases, or usage context. With no annotations and no output schema, the agent must rely on external knowledge or trial-and-error, leaving room for improvement in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'projectId' fully documented in the schema as 'The ID of the project to retrieve'. The description adds no additional meaning beyond this, such as format examples (e.g., numeric vs. string) or where to find the ID. Given the high schema coverage, a baseline score of 3 is appropriate, as the description doesn't compensate but doesn't need to.
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 ('a specific project by its ID'), making the purpose immediately understandable. It distinguishes itself from sibling tools like 'todoist_get_projects' (plural) by specifying retrieval of a single project, though it doesn't explicitly contrast with other read operations like 'todoist_get_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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid project ID), contrast with 'todoist_get_projects' for listing all projects, or specify use cases like retrieving project details for updates. Without this context, the agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_get_projectsB
Get all active projects with pagination support
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Pagination cursor for next page (optional) | |
| limit | No | Maximum number of projects to return (default: 50, max: 200) (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. It discloses key behavioral traits: it retrieves 'all active projects' (implying it excludes archived/inactive ones) and has 'pagination support'. However, it doesn't cover other important aspects like authentication requirements, rate limits, error handling, or the format of returned data (e.g., what fields are included).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Get all active projects') and adds essential behavioral detail ('with pagination support'). There is no wasted wording, and every part of the sentence provides value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (list operation with pagination), no annotations, and no output schema, the description is minimally adequate. It covers the scope ('active projects') and pagination, but lacks details on authentication, rate limits, error cases, or return format. For a read-only list tool, this is acceptable but leaves gaps an agent might need to infer.
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 two parameters (cursor and limit) with their types, optionality, and defaults. The description adds no additional parameter semantics beyond implying pagination through 'cursor' and 'limit', which is already clear from the schema. 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') and resource ('all active projects'), making the purpose immediately understandable. It distinguishes from siblings like 'todoist_get_project' (singular) by specifying 'all active projects' with pagination, though it doesn't explicitly contrast with other list tools like 'todoist_get_labels' or 'todoist_get_comments'.
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. It doesn't mention when to prefer this over 'todoist_get_project' for a single project, or how it relates to other list tools like 'todoist_get_tasks' or 'todoist_get_labels'. The description lacks context about use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_get_sectionsA
Get all sections, or sections for a specific project. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | Filter sections by project ID (optional). | |
| cursor | No | Pagination cursor for next page (optional). | |
| limit | No | Maximum number of sections to return (default: 50) (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 discloses key behavioral traits: it supports pagination (via cursor and limit) and optional project filtering. However, it doesn't mention rate limits, authentication needs, error handling, or what the return format looks like (e.g., list of sections with fields). This leaves gaps for a read operation 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 front-loads the core purpose ('Get all sections, or sections for a specific project') and adds key context ('Supports pagination') without any waste. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is partially complete. It covers the basic purpose and pagination support but lacks details on return values, error cases, or integration with sibling tools. Without an output schema, the description should ideally hint at the response structure, but it doesn't, leaving room for improvement.
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 (projectId, cursor, limit) with descriptions. The description adds minimal value beyond the schema by implying that projectId filters sections and pagination is supported, but doesn't provide additional syntax, format details, or 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 ('Get') and resource ('sections'), specifying scope ('all sections, or sections for a specific project'). It distinguishes from siblings like todoist_get_projects (which gets projects) and todoist_get_tasks (which gets tasks), but doesn't explicitly differentiate from other section-related tools like todoist_create_section or todoist_update_section, which is why it's not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'sections for a specific project' and 'pagination,' suggesting when to use it (e.g., for filtered or paginated retrieval). However, it lacks explicit guidance on when to use this versus alternatives like todoist_get_projects for project data or todoist_search_tasks for task-based queries, and no exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_get_taskC
Get a specific task by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The ID of the task to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without behavioral details. It doesn't disclose if this is a read-only operation, what happens with invalid IDs (e.g., errors), authentication needs, rate limits, or response format, leaving significant gaps for an agent.
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 any unnecessary words. It's appropriately sized and front-loaded, 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?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., task details, error handling), behavioral traits, or usage context, which are crucial for a tool that retrieves data by ID.
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%, with the single parameter 'taskId' fully documented in the schema as 'The ID of the task to retrieve'. The description adds no additional meaning beyond this, so it meets the baseline of 3 where 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 ('Get') and resource ('a specific task by its ID'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'todoist_get_tasks' (plural) which retrieves multiple tasks, 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?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention using 'todoist_get_tasks' for listing multiple tasks or 'todoist_search_tasks' for filtered searches, nor does it specify prerequisites like needing a valid task ID.
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 tasks with comprehensive filtering and pagination support
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | Filter tasks by project ID (optional) | |
| sectionId | No | Filter tasks by section ID (optional) | |
| parentId | No | Filter tasks by parent ID (get subtasks) (optional) | |
| label | No | Filter tasks by label name (optional) | |
| ids | No | Array of task IDs to retrieve (optional) | |
| cursor | No | Pagination cursor for next page (optional) | |
| limit | No | Maximum number of tasks to return (default: 50, max: 200) (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'comprehensive filtering and pagination support' which hints at capabilities but lacks critical behavioral details: it doesn't disclose authentication requirements, rate limits, whether it's read-only (implied by 'get' but not explicit), error handling, or what the return format looks like (no output schema).
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. However, it could be more structured by explicitly separating filtering from pagination aspects, but it earns high marks for zero waste and clarity within its brevity.
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 complexity (7 parameters, no annotations, no output schema, and multiple sibling tools), the description is incomplete. It lacks details on authentication, rate limits, return format, error cases, and differentiation from siblings, making it inadequate for an agent to use confidently without additional 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 fully documents all 7 parameters with descriptions. The description adds no additional meaning beyond the schema's details, such as explaining relationships between filters or pagination mechanics. 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 states 'Get tasks with comprehensive filtering and pagination support' which indicates the verb (get) and resource (tasks) but is vague about scope and differentiation. It doesn't specify whether this retrieves all tasks, tasks for a specific user, or how it differs from sibling tools like 'todoist_get_task' (singular) or 'todoist_search_tasks'.
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. With siblings like 'todoist_get_task' (singular), 'todoist_search_tasks', and 'todoist_get_projects', the description offers no explicit or implied context for selection, leaving the agent to infer based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_move_taskA
Move a single task (and its subtasks, if any) to a different project, section, or make it a subtask of another task. Provide the taskId and exactly one of: projectId, sectionId, or parentId.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The ID of the task to move. | |
| projectId | No | The ID of the destination project. (Optional, use only one of projectId, sectionId, parentId) | |
| sectionId | No | The ID of the destination section. (Optional, use only one of projectId, sectionId, parentId) | |
| parentId | No | The ID of the parent task to move this task under. (Optional, use only one of projectId, sectionId, parentId) |
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 it mentions the tool moves tasks (implying mutation) and includes subtasks, it doesn't disclose important behavioral traits like whether this requires specific permissions, if the move is reversible, what happens to task ordering or due dates, or potential rate limits. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences: the first states the purpose and scope, the second provides critical parameter guidance. Every word earns its place, and the most important information (the exclusive parameter requirement) is front-loaded in the second sentence.
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 provides adequate basic information about what the tool does and parameter constraints. However, it lacks important contextual details about behavioral implications (permissions, reversibility, effects on task properties) and doesn't describe what the tool returns, which would be expected for a tool that modifies data.
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 valuable semantic context by explaining the exclusive relationship between projectId, sectionId, and parentId ('exactly one of'), which isn't captured in the schema's individual parameter descriptions. This clarification significantly enhances parameter understanding beyond what the schema provides.
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 ('move') and resource ('a single task'), specifies it includes subtasks, and identifies the destination options (different project, section, or as a subtask). It distinguishes from sibling 'todoist_bulk_move_tasks' by specifying 'a single task' rather than bulk operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (moving a task with its subtasks to specific destinations) and implicitly distinguishes from 'todoist_bulk_move_tasks' by specifying single-task operation. However, it doesn't explicitly state when NOT to use this tool or provide alternative scenarios beyond the sibling distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_quick_add_taskA
Create a task using Todoist's Quick Add feature with natural language parsing
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Natural language text for quick task creation (e.g., 'Buy milk tomorrow at 2pm #shopping') | |
| note | No | Additional note for the task (optional) | |
| reminder | No | Reminder time (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 mentions 'natural language parsing' but doesn't cover critical aspects like required permissions, error handling, rate limits, or what happens on success/failure. For a creation 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. Every part ('Create a task,' 'Todoist's Quick Add feature,' 'natural language parsing') contributes essential information, making it maximally concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (creation with natural language parsing), no annotations, and no output schema, the description is minimally adequate. It covers the what and how but lacks details on behavioral traits, error cases, or output format, which would be needed for full contextual understanding.
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 three parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, such as formatting examples for 'reminder' or constraints on 'text.' 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 specific action ('Create a task') using a specific method ('Todoist's Quick Add feature with natural language parsing'), which distinguishes it from the sibling 'todoist_create_task' that likely uses structured inputs. It specifies both the verb and resource with unique implementation details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool by mentioning 'natural language parsing,' suggesting it's for quick, informal task creation versus structured alternatives. However, it doesn't explicitly state when not to use it or name specific alternatives like 'todoist_create_task,' leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_reopen_taskB
Reopen a completed task by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The ID of the completed task to reopen |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action but lacks behavioral details like permission requirements, whether it's reversible, rate limits, or what happens if the task isn't completed. This is a mutation tool with no safety or operational context disclosed.
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 action and key constraint ('completed task'). It is front-loaded and appropriately sized for a simple tool.
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 minimal but covers the basic action. It lacks details on behavioral traits, error conditions, or return values, making it adequate but with clear gaps given the complexity of a write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'taskId' fully documented in the schema. The description adds no additional parameter meaning beyond implying it's for a completed task, which is already covered by the tool's purpose. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Reopen') and resource ('a completed task'), specifying it acts on completed tasks by ID. It distinguishes from siblings like 'todoist_complete_task' by indicating opposite action, though not explicitly naming alternatives.
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?
Usage is implied by 'completed task'āit should be used when a task is completed and needs reopening. No explicit when-not or alternative guidance is provided, such as using 'todoist_update_task' for other modifications or noting it's only for completed tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_search_tasksA
Search for tasks by content/name (fallback for when ID is not known)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to find tasks by content | |
| projectId | No | Limit search to specific project (optional) | |
| limit | No | Maximum number of results (default: 10) (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions searching by content/name, which is useful, but lacks details on behavioral traits like pagination, rate limits, authentication needs, or what the search returns (e.g., partial matches, case sensitivity). For a search tool with no annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Search for tasks by content/name') and adds context ('fallback for when ID is not known') without waste. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 3 parameters with full schema coverage, the description is minimally adequate. It covers the basic purpose and usage context but lacks behavioral details (e.g., return format, error handling) that would be helpful for a search operation, leaving gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (query, projectId, limit). The description adds minimal value beyond the schema by implying the search is based on content/name, but doesn't provide additional syntax, format, or usage details for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Search') and resource ('tasks'), specifying it searches by content/name. It distinguishes from ID-based lookup by mentioning 'fallback for when ID is not known', but doesn't explicitly differentiate from other search-like siblings like 'todoist_get_tasks'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage ('fallback for when ID is not known'), which implicitly suggests using this when task IDs are unavailable. However, it doesn't explicitly state when not to use it or name alternatives among siblings (e.g., 'todoist_get_tasks' might also retrieve tasks).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_update_commentC
Update an existing comment by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| commentId | Yes | The ID of the comment to update | |
| content | Yes | New content/text for the comment |
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 'Update an existing comment by its ID,' which implies a mutation operation but doesn't cover permissions needed, rate limits, whether the update is reversible, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is inadequate, scoring a 2 for minimal 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, direct sentence: 'Update an existing comment by its ID.' It is front-loaded with the core action and resource, with zero wasted words. This is optimally concise and well-structured, earning a 5.
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 complexity (a mutation operation), lack of annotations, and no output schema, the description is incomplete. It doesn't explain behavioral aspects like side effects, error handling, or return values. For a tool that modifies data, this minimal description is insufficient, scoring a 2 for significant gaps 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 clear parameter definitions (commentId and content). The description adds no additional meaning beyond what the schema provides, such as format examples or constraints. According to the rules, with high schema coverage (>80%), the baseline is 3, so this scores a 3 for adequate but no extra 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 action ('Update') and target resource ('an existing comment'), which is specific and unambiguous. It distinguishes from siblings like todoist_create_comment (create) and todoist_delete_comment (delete), though it doesn't explicitly contrast with todoist_get_comment (read) beyond the verb difference. This earns a 4 for clear purpose with some 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., needing an existing comment ID), exclusions, or comparisons to siblings like todoist_create_comment for new comments or todoist_get_comment for viewing. With only a basic statement of function, this scores a 2 for lacking usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todoist_update_labelC
Update an existing label by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| labelId | Yes | The ID of the label to update. | |
| name | No | New name for the label (optional). | |
| color | No | New color for the label (optional). | |
| isFavorite | No | New favorite status (optional). | |
| order | No | New order for the label (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. It states this is an update operation but doesn't mention permission requirements, whether changes are reversible, error conditions, or what happens to unspecified fields. For a mutation tool, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that gets straight to the point with no unnecessary words. It's appropriately sized for a straightforward update operation and front-loads the essential 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 no annotations and no output schema, the description is insufficient. It doesn't explain what the tool returns, error handling, or behavioral constraints. Given the complexity of updating a resource and the lack of structured metadata, more context is needed for effective agent 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%, so all parameters are documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema, but the baseline score of 3 is appropriate since the schema adequately covers parameter documentation.
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 ('an existing label by its ID'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'todoist_update_task' or 'todoist_update_project' beyond the resource type, missing explicit sibling distinction.
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_label' for new labels or other update tools. It mentions the required 'labelId' parameter but offers no context about prerequisites or typical use cases.
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 an existing project
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The ID of the project to update | |
| name | No | New name for the project (optional) | |
| color | No | New color for the project (optional) | |
| isFavorite | No | Whether to mark as favorite (optional) | |
| viewStyle | No | Project view style: 'list' or 'board' (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. It states 'update' implying mutation, but doesn't mention permissions needed, whether changes are reversible, rate limits, or what happens to unspecified fields. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized and front-loaded with the essential action, 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 mutation tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what happens on success/failure, return values, or behavioral constraints. The agent lacks crucial context for safe and 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?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no additional meaning beyond the schema's parameter documentation. 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 'Update an existing project' clearly states the verb ('update') and resource ('project'), but it's vague about what aspects can be updated and doesn't distinguish from sibling tools like todoist_update_task or todoist_update_label. It provides basic purpose but lacks 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_create_project or other update tools. The description doesn't mention prerequisites, context, or exclusions, 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_sectionC
Update an existing section
| Name | Required | Description | Default |
|---|---|---|---|
| sectionId | Yes | The ID of the section to update | |
| name | Yes | New name for the section |
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 'update' implies a mutation, the description doesn't specify whether this requires specific permissions, what happens to the existing section data, if changes are reversible, or any rate limits/error conditions. 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 with zero wasted words. It's front-loaded with the core action ('update an existing section'), making it immediately clear without 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 no annotations and no output schema, the description is inadequate. It doesn't explain what the tool returns, error handling, or behavioral nuances like idempotency. Given the complexity of an update operation, more context is needed to guide the agent effectively.
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 both parameters ('sectionId' and 'name') clearly documented in the schema. The description adds no additional parameter semantics beyond what's in the schema, 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 ('update') and resource ('existing section'), making the tool's purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'todoist_update_project' or 'todoist_update_task' beyond specifying 'section' as the target resource, which is why it doesn't reach a perfect 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 prerequisites (e.g., needing an existing section ID), exclusions, or compare it to related tools like 'todoist_create_section' or 'todoist_delete_section', leaving the agent to infer usage from context 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 an existing task by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The ID of the task to update | |
| content | No | New content/title for the task (optional) | |
| description | No | New description for the task (optional) | |
| dueString | No | New due date in natural language (optional) | |
| priority | No | New priority level from 1 (normal) to 4 (urgent) (optional) | |
| labels | No | New array of label names (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 of behavioral disclosure. While 'Update' implies a mutation, the description doesn't specify required permissions, whether changes are reversible, rate limits, or what happens to unspecified fields (e.g., if they remain unchanged). It lacks critical context for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without waste. It's front-loaded and appropriately sized for a straightforward update operation, with every word 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?
For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like error conditions, response format, or side effects. Given the complexity of updating tasks with multiple optional fields, 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?
Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain parameter interactions 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 ('Update') and resource ('an existing task'), making the purpose immediately understandable. It distinguishes from siblings like 'todoist_create_task' by specifying 'existing task', but doesn't differentiate from other update operations like 'todoist_update_comment' or 'todoist_update_project' 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 prerequisites (e.g., needing a valid task ID), when not to use it (e.g., for bulk updates), or alternatives like 'todoist_complete_task' for marking tasks as done. Usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
30 tool updates
- First observed
todoist_bulk_move_tasks - First observed
todoist_complete_task - First observed
todoist_create_comment - First observed
todoist_create_label - First observed
todoist_create_project - First observed
todoist_create_section - First observed
todoist_create_task - First observed
todoist_delete_comment - First observed
todoist_delete_label - First observed
todoist_delete_project - First observed
todoist_delete_section - First observed
todoist_delete_task - First observed
todoist_get_comment - First observed
todoist_get_comments - First observed
todoist_get_label - First observed
todoist_get_labels - First observed
todoist_get_project - First observed
todoist_get_projects - First observed
todoist_get_sections - First observed
todoist_get_task - First observed
todoist_get_tasks - First observed
todoist_move_task - First observed
todoist_quick_add_task - First observed
todoist_reopen_task - First observed
todoist_search_tasks - First observed
todoist_update_comment - First observed
todoist_update_label - First observed
todoist_update_project - First observed
todoist_update_section - First observed
todoist_update_task
TDQS
Scored across 30 tools
Every tool has a clearly distinct purpose with no ambiguity. Each tool targets a specific resource (task, project, section, label, comment) and action (create, get, update, delete, etc.), and even similar tools like todoist_move_task and todoist_bulk_move_tasks are clearly differentiated by single vs. bulk operations.
All tools follow a perfect and consistent verb_noun pattern with the prefix 'todoist_' (e.g., todoist_create_task, todoist_get_projects, todoist_update_label). There are no deviations in naming conventions, making the set highly predictable and readable.
With 30 tools, the count feels heavy for a Todoist server, bordering on excessive. While it covers many operations, it might overwhelm agents with its breadth, especially since some tools like todoist_move_task and todoist_bulk_move_tasks could potentially be consolidated or parameterized.
The tool surface provides complete CRUD/lifecycle coverage for all core Todoist resources (tasks, projects, sections, labels, comments), including advanced operations like bulk moves, quick add, search, and pagination. There are no obvious gaps, ensuring agents can handle full workflows without dead ends.
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
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Nifty's MCP server ā exposes tasks, projects, messages, and files as tools for AI agents.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server that integrates Claude with Todoist, enabling natural language task management including creating, updating, completing, and deleting tasks.5376391MIT
- AlicenseBqualityCmaintenanceAn MCP server that connects Claude with Todoist for complete task and project management through natural language.86190244MIT
- AlicenseBqualityCmaintenanceAn MCP server that integrates with the Todoist REST API v2 to enable AI assistants to manage tasks, projects, sections, comments, and labels. It supports comprehensive operations including batch task creation, history tracking for completed tasks, and organized project management.332591MIT
- AlicenseNot gradedqualityFmaintenanceAn MCP server that provides AI assistants with full access to Todoist tasks, projects, labels, and filters. It enables comprehensive task management, project organization, and productivity tracking through a wide range of specialized tools.333MIT