Skip to main content
Glama
rafliruslan

TickTick MCP Server

by rafliruslan

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

  1. Install dependencies:

npm install
  1. Create environment configuration:

cp .env.example .env
  1. Configure 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_secret

Option B: Username/Password

TICKTICK_USERNAME=your_ticktick_username
TICKTICK_PASSWORD=your_ticktick_password

For OAuth setup, see OAUTH_SETUP.md or use the helper:

node oauth-helper.js
  1. Build the project:

npm run build

Usage

Development

npm run dev

Production

npm start

Available 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 adjustment

  • get_projects - Get all projects from TickTick

  • create_task - Create a new task with priority, tags, due dates

  • update_task - Update an existing task

  • delete_task - Delete a task

  • complete_task - Mark a task as completed

  • get_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_tasks accepts a timezoneOffsetHours parameter

    • Default: 8 (UTC+8) - Change this for your timezone!

    • Examples:

      • timezoneOffsetHours: -5 for EST (UTC-5)

      • timezoneOffsetHours: 0 for UTC

      • timezoneOffsetHours: 9 for JST (UTC+9)

      • timezoneOffsetHours: 1 for 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 tools
complete_taskC

Mark a task as completed

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID to complete (required)
projectIdYesProject ID containing the task (required)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While '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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's 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.

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is 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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the action ('Mark as 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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like '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

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTask title (required)
contentNoTask description/content
projectIdNoProject ID where the task should be created
dueDateNoDue date in ISO format
priorityNoTask priority (0=None, 1=Low, 3=Medium, 5=High)
tagsNoTask tags

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It'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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the action ('Create 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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like '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

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID to delete (required)
projectIdYesProject ID containing the task (required)

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. 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)

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoOptional project ID to filter overdue tasks
timezoneOffsetHoursNoTimezone offset in hours from UTC (e.g., 8 for UTC+8). Defaults to 8

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core 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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents 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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states '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.

Conciseness5/5

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.

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., project 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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the action ('Get 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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, 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

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID to retrieve (required)
projectIdYesProject ID containing the task (required)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when 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

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoOptional project ID to filter tasks

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and 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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the 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.

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoOptional project ID to filter today's tasks

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 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.

Conciseness5/5

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.

Completeness3/5

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

Given the tool's low complexity (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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It 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

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID to update (required)
titleNoNew task title
contentNoNew task description/content
dueDateNoNew due date in ISO format
priorityNoNew task priority (0=None, 1=Low, 3=Medium, 5=High)
tagsNoNew task tags

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'update' implies 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.

Conciseness5/5

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.

Completeness2/5

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

For a mutation tool with 6 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, error 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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like '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.

  1. 9 tool updates
    • First observedcomplete_task
    • First observedcreate_task
    • First observeddelete_task
    • First observedget_overdue_tasks
    • First observedget_projects
    • First observedget_task
    • First observedget_tasks
    • First observedget_todays_tasks
    • First observedupdate_task

TDQS

A3.5/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rafliruslan/ticktick-mcp-server'

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