TickTick MCP Server
Provides tools for managing tasks and projects in TickTick, including listing, creating, updating, and deleting tasks, marking tasks as completed, retrieving specific task details, handling overdue and today's tasks with timezone compensation, and working with projects.
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., "@TickTick MCP Serverwhat tasks are due today?"
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.
TickTick MCP Server
A Model Context Protocol (MCP) server that provides integration with TickTick task management service.
Features
List tasks and projects with enhanced display (human-readable priorities)
Create, update, and delete tasks
Mark tasks as completed
Get specific task details
Timezone handling with manual D+1 adjustment for accurate due date calculations
Get overdue tasks with configurable timezone offset
Get today's tasks with proper timezone compensation
OAuth and username/password authentication support
Full TypeScript support with proper error handling
Related MCP server: TickTick/Dida365 MCP Server
Setup
Install dependencies:
npm installCreate environment configuration:
cp .env.example .envConfigure authentication in
.env:
Option A: OAuth (Recommended)
TICKTICK_ACCESS_TOKEN=your_oauth_access_token
TICKTICK_REFRESH_TOKEN=your_refresh_token
TICKTICK_CLIENT_ID=your_client_id
TICKTICK_CLIENT_SECRET=your_client_secretOption B: Username/Password
TICKTICK_USERNAME=your_ticktick_username
TICKTICK_PASSWORD=your_ticktick_passwordFor OAuth setup, see OAUTH_SETUP.md or use the helper:
node oauth-helper.jsBuild the project:
npm run buildUsage
Development
npm run devProduction
npm startAvailable Tools
get_tasks- Get all tasks or tasks from a specific project (with enhanced display)get_overdue_tasks- Get overdue tasks with timezone compensation (configurable offset, defaults to UTC+8 - adjust for your timezone)get_todays_tasks- Get tasks due today with D+1 timezone adjustmentget_projects- Get all projects from TickTickcreate_task- Create a new task with priority, tags, due datesupdate_task- Update an existing taskdelete_task- Delete a taskcomplete_task- Mark a task as completedget_task- Get a specific task by ID
Timezone Handling
This server includes manual timezone workarounds to handle TickTick's timezone inconsistencies:
D+1 Adjustment: Due dates are automatically adjusted by adding 1 day to compensate for timezone differences
Configurable Offset:
get_overdue_tasksaccepts atimezoneOffsetHoursparameterDefault: 8 (UTC+8) - Change this for your timezone!
Examples:
timezoneOffsetHours: -5for EST (UTC-5)timezoneOffsetHours: 0for UTCtimezoneOffsetHours: 9for JST (UTC+9)timezoneOffsetHours: 1for CET (UTC+1)
All-day vs Timed Tasks: Different handling for all-day tasks vs specific time tasks
Enhanced Display: Tasks include human-readable priority text (
None,Low,Medium,High)
Important: The default timezone offset is set to UTC+8. Make sure to specify your correct timezone offset when calling get_overdue_tasks to get accurate results for your location.
MCP Integration
Claude Desktop (with Claude Desktop app)
Add this server to your MCP client configuration file:
Location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
{
"mcpServers": {
"ticktick": {
"command": "node",
"args": ["/path/to/ticktick-mcp-server/dist/index.js"],
"env": {
"TICKTICK_ACCESS_TOKEN": "your_oauth_token",
"TICKTICK_REFRESH_TOKEN": "your_refresh_token",
"TICKTICK_CLIENT_ID": "your_client_id",
"TICKTICK_CLIENT_SECRET": "your_client_secret"
}
}
}
}Cursor IDE
Add this server to your Cursor MCP configuration:
Location: Create/edit .cursorrules or Cursor settings for MCP servers
{
"mcp": {
"servers": {
"ticktick": {
"command": "node",
"args": ["/path/to/ticktick-mcp-server/dist/index.js"],
"env": {
"TICKTICK_ACCESS_TOKEN": "your_oauth_token",
"TICKTICK_REFRESH_TOKEN": "your_refresh_token",
"TICKTICK_CLIENT_ID": "your_client_id",
"TICKTICK_CLIENT_SECRET": "your_client_secret"
}
}
}
}
}Alternative with Username/Password
{
"env": {
"TICKTICK_USERNAME": "your_username",
"TICKTICK_PASSWORD": "your_password"
}
}License
MIT
Available Tools
9 toolscomplete_taskC
Mark a task as completed
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | Task ID to complete (required) | |
| projectId | Yes | Project ID containing the task (required) |
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 'Mark as completed' implies a mutation, it doesn't specify if this is reversible, requires specific permissions, affects task dependencies, or what happens upon completion (e.g., notifications, status changes). 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 function with zero wasted words. It is appropriately sized and front-loaded, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral aspects like side effects, error conditions, or return values, leaving the agent with incomplete context for proper invocation.
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 clearly documented in the schema. The description adds no additional meaning beyond the schema's parameter descriptions, so it meets the baseline score of 3 without compensating or enhancing 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 ('Mark as completed') and resource ('a task'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'update_task' which might also handle task completion, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'update_task' or 'delete_task', nor does it mention prerequisites or context for completion. It simply states what the tool does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskC
Create a new task in TickTick
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Task title (required) | |
| content | No | Task description/content | |
| projectId | No | Project ID where the task should be created | |
| dueDate | No | Due date in ISO format | |
| priority | No | Task priority (0=None, 1=Low, 3=Medium, 5=High) | |
| tags | No | Task tags |
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 a creation operation but doesn't mention authentication requirements, rate limits, whether tasks are immediately visible, or what happens on failure. 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 directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy for an agent to quickly understand the core function.
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 creation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation (e.g., returns a task ID, success confirmation), error conditions, or system constraints. Given the complexity of task management and lack of structured behavioral data, 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, thoroughly documenting all 6 parameters including required fields and priority values. The description adds no parameter information beyond what's in the schema, so it meets the baseline for high schema coverage but doesn't provide additional semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new task') and the target system ('in TickTick'), providing a specific verb+resource combination. However, it doesn't differentiate this tool from its sibling 'update_task' or explain when to create versus update, which prevents 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 like 'update_task' or 'complete_task', nor does it mention prerequisites such as needing a project ID for organization. It simply states what the tool does without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_taskC
Delete a task
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | Task ID to delete (required) | |
| projectId | Yes | Project ID containing the task (required) |
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 'Delete a task' but doesn't disclose if deletion is permanent, reversible, requires specific permissions, has side effects (e.g., cascading deletions), or rate limits. 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 extremely concise with 'Delete a task'—a single, front-loaded sentence that wastes no words. It efficiently conveys the core action, though this brevity contributes to gaps in other dimensions.
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 deletion tool with no annotations and no output schema, the description is incomplete. It lacks behavioral details (e.g., permanence, permissions), usage context relative to siblings, and output expectations, making it insufficient 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?
Schema description coverage is 100%, with both parameters documented in the schema. The description adds no meaning beyond the schema, which already specifies 'taskId' and 'projectId' as required. 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 'Delete a task' states the action and resource but is vague about scope and lacks sibling differentiation. It specifies the verb 'Delete' and resource 'task', but doesn't clarify if it's permanent deletion, soft deletion, or how it differs from alternatives like 'complete_task' or 'update_task'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With siblings like 'complete_task' and 'update_task' available, the description doesn't indicate scenarios for deletion over completion or modification, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_overdue_tasksA
Get all overdue tasks (incomplete tasks past their due date)
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | Optional project ID to filter overdue tasks | |
| timezoneOffsetHours | No | Timezone offset in hours from UTC (e.g., 8 for UTC+8). Defaults to 8 |
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 retrieves data ('Get'), implying read-only behavior, but doesn't mention any limitations like rate limits, authentication requirements, pagination, or what happens if no overdue tasks exist. The description is minimal and lacks operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and uses parentheses to add clarifying detail without redundancy. Every element 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?
For a read-only tool with 100% schema coverage but no annotations or output schema, the description is adequate but has gaps. It clearly states what the tool does but lacks behavioral context like response format, error conditions, or performance characteristics. The description meets minimum viability but doesn't fully compensate for missing structured 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 fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema, such as explaining how 'projectId' filtering works or clarifying 'timezoneOffsetHours' usage. Baseline 3 is appropriate when schema handles 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 specific action ('Get') and resource ('overdue tasks'), with precise scope definition ('incomplete tasks past their due date'). It effectively distinguishes this from sibling tools like 'get_tasks' or 'get_todays_tasks' by specifying the overdue filter.
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 through the term 'overdue tasks' but doesn't explicitly state when to use this tool versus alternatives like 'get_tasks' or 'get_todays_tasks'. No guidance is provided about prerequisites, exclusions, or specific scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectsB
Get all projects from TickTick
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 'Get all projects' but doesn't describe what 'all' entails (e.g., pagination, filtering, or sorting), the response format, error conditions, or any rate limits. This leaves significant gaps in understanding how the tool behaves.
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 no wasted words. It front-loads the key information ('Get all projects') and avoids unnecessary elaboration, 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., project list format, fields included) or any behavioral nuances. For a tool with no structured output documentation, this leaves the agent with insufficient context to use it 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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here, earning a baseline score of 4 for adequately handling the lack of 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 action ('Get all projects') and the resource ('from TickTick'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'get_tasks' or 'get_task' beyond mentioning 'projects' versus '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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for retrieving projects versus tasks, or any exclusions. The agent must infer usage based solely on the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskC
Get a specific task by ID
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | Task ID to retrieve (required) | |
| projectId | Yes | Project ID containing the task (required) |
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 a retrieval operation ('Get'), implying it's read-only, but doesn't explicitly confirm this or mention any behavioral traits like error handling, authentication requirements, rate limits, or what happens if the task doesn't exist. The description is minimal and lacks important operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just 6 words. It's front-loaded with the core purpose and wastes no words. Every word earns its place in communicating the essential function.
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 retrieval tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what information is returned, how errors are handled, or any operational constraints. For a tool that presumably returns task details, the description should provide more context about the retrieval operation and expected outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters clearly documented in the schema. The description doesn't add any meaningful parameter information beyond what's already in the schema. It mentions 'by ID' which aligns with the taskId parameter, but provides no additional context about parameter relationships, formats, or constraints.
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 tool's purpose as 'Get a specific task by ID', which is a specific verb+resource combination. It distinguishes from siblings like 'get_tasks' (plural) by specifying retrieval of a single task, but doesn't explicitly contrast with other retrieval siblings like 'get_overdue_tasks' or 'get_todays_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 no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate versus using 'get_tasks' for multiple tasks, or how it relates to other retrieval tools like 'get_overdue_tasks'. There's no context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tasksB
Get all tasks or tasks from a specific project
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | Optional project ID to filter tasks |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves tasks but doesn't describe key behaviors such as pagination, sorting, rate limits, authentication needs, or what happens if no tasks exist. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized for its function, 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 complexity of a task retrieval tool with no annotations, no output schema, and multiple sibling tools, the description is incomplete. It lacks details on return format, error handling, or behavioral traits, which are crucial for an AI agent to use it effectively in context with alternatives like 'get_todays_tasks.'
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 'projectId' documented as 'Optional project ID to filter tasks.' The description adds marginal value by mentioning 'tasks from a specific project,' which aligns with the schema but doesn't provide additional semantics like format examples or constraints. 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 ('tasks'), specifying that it retrieves either all tasks or tasks from a specific project. However, it doesn't explicitly distinguish this tool from siblings like 'get_task' (singular) or 'get_todays_tasks' (time-filtered), which would require mentioning scope or filtering differences.
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 by mentioning 'all tasks or tasks from a specific project,' which suggests using it for broad retrieval with optional project filtering. However, it doesn't provide explicit guidance on when to choose this over alternatives like 'get_todays_tasks' or 'get_overdue_tasks,' nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_todays_tasksB
Get tasks that are specifically due today
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | Optional project ID to filter today's tasks |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves tasks due today, which implies a read-only operation, but does not clarify aspects like permissions required, rate limits, pagination, or error handling. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration, making it efficient and easy to understand.
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 (one optional parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on usage guidelines, behavioral traits, and output format. Without annotations or an output schema, more context on what is returned would be helpful for 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?
The description does not mention any parameters, but the input schema has 100% description coverage for its single parameter ('projectId'), which is documented as 'Optional project ID to filter today's tasks.' Since schema coverage is high, the baseline score is 3, as the description adds no additional parameter details 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 tool's purpose: 'Get tasks that are specifically due today.' It includes a specific verb ('Get') and resource ('tasks'), with a clear scope ('due today'). However, it does not explicitly distinguish itself from sibling tools like 'get_tasks' or 'get_overdue_tasks,' which would require mentioning the specific date-based filtering.
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 does not mention sibling tools like 'get_tasks' (for general task retrieval) or 'get_overdue_tasks' (for past-due tasks), nor does it specify prerequisites or exclusions. Usage is implied by the 'due today' scope, but explicit alternatives are lacking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskC
Update an existing task
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | Task ID to update (required) | |
| title | No | New task title | |
| content | No | New task description/content | |
| dueDate | No | New due date in ISO format | |
| priority | No | New task priority (0=None, 1=Low, 3=Medium, 5=High) | |
| tags | No | New task tags |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'update' implies mutation, it doesn't specify whether this requires special permissions, if changes are reversible, what happens to unspecified fields, or error conditions. This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly 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 6 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, error handling, or behavioral nuances. Given the complexity and lack of structured data, more context is needed for proper 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?
The input schema has 100% description coverage, clearly documenting all 6 parameters with their types and purposes. The description adds no additional parameter information beyond what's in the schema, 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 'Update an existing task' clearly states the verb (update) and resource (task), but it's generic and doesn't distinguish this tool from similar operations like 'complete_task' or 'create_task'. It lacks specificity about what aspects can be updated or the scope of changes.
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 'complete_task' or 'create_task'. The description doesn't mention prerequisites (e.g., needing an existing task ID) or contextual factors that would help an agent choose between sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
- First observed
complete_task - First observed
create_task - First observed
delete_task - First observed
get_overdue_tasks - First observed
get_projects - First observed
get_task - First observed
get_tasks - First observed
get_todays_tasks - First observed
update_task
TDQS
Each tool has a clearly distinct purpose with no ambiguity. For example, get_tasks retrieves all tasks or project-specific tasks, while get_overdue_tasks and get_todays_tasks filter by due date, and get_task fetches a single task by ID. The action verbs (complete, create, delete, get, update) are consistently paired with specific nouns (task, projects) to avoid overlap.
All tool names follow a consistent verb_noun pattern using snake_case, such as create_task, get_projects, and update_task. There are no deviations in naming conventions, making the set predictable and easy to understand at a glance.
With 9 tools, the server is well-scoped for task management in TickTick. Each tool earns its place by covering essential operations like CRUD for tasks, project retrieval, and filtered task views (e.g., overdue, today), without being overly sparse or bloated.
The tool surface provides complete CRUD/lifecycle coverage for tasks (create, get, update, delete, complete) and includes project management (get_projects) and filtered views (overdue, today). There are no obvious gaps, as all core operations for task and project handling are covered 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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Model Context Protocol server for todo.vu task management and time tracking.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- AlicenseCqualityDmaintenanceA comprehensive Model Context Protocol server providing complete TickTick task management API integration (112 operations) for Claude Code users, enabling seamless task creation, project management, habit tracking, and productivity features.10011MIT
- AlicenseAqualityFmaintenanceA Model Context Protocol server that enables AI assistants to interact with TickTick/Dida365 task management API, supporting operations like creating, reading, updating, and deleting tasks and projects.113835MIT
- FlicenseNot gradedqualityDmaintenanceEnables management of TickTick tasks and projects through the Model Context Protocol, supporting deployment on Vercel with SSE capabilities. Users can list, create, update, and complete tasks directly within AI clients like Claude.1-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to manage Google Tasks, including creating, updating, deleting, and searching tasks and task lists via OAuth2 authentication.311Apache 2.0
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rafliruslan/ticktick-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server