ticktick-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TICKTICK_PASSWORD | Yes | TickTick login password (or app password if enabled) | |
| TICKTICK_USERNAME | Yes | TickTick login email | |
| TICKTICK_CLIENT_ID | Yes | Client ID obtained from TickTick App registration | |
| TICKTICK_REDIRECT_URI | Yes | OAuth redirect URI that matches the one registered in TickTick | |
| TICKTICK_CLIENT_SECRET | Yes | Client Secret obtained from TickTick App registration | |
| TICKTICK_MCP_DOTENV_DIR | No | Optional path to directory containing .env file |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ticktick_filter_tasksA | Return the tasks matching every supplied filter criterion. Supports any combination of project, priority, tag, status, and a date window applied to either the due date (open tasks) or the completion timestamp (completed tasks). Args:
detail (str, optional): Returns:
JSON list of matching task objects (compact by default; see
Freshness:
Uncompleted queries read local state, synced from the server at most
once per throttle window (default 15s,
Limitations:
- TickTick caps Agent Usage Guide:
- List open tasks in a project:
|
| ticktick_get_unprocessed_completionsA | Returns completed tasks for a project that have NOT yet been marked as processed by a domain agent. Could be called at the beginning of each conversation to check for new completions. After reviewing each returned task, call ticktick_mark_completion_processed to record that it has been handled. Args: project_id (str): TickTick project ID to check. Required. days (int): How many days back to look for completions. Default 30. Returns: JSON list of unprocessed task objects (may be empty). Each object includes: id, title, projectId, completedTime, content. Error: {"error": "...", "status": "error"} Usage Guide: - Call once per project at the start of each conversation. - For each returned task: read the content field, log meaningful outcomes if appropriate, then call ticktick_mark_completion_processed. - Example: ticktick_get_unprocessed_completions( project_id="your_project_id_here", days=30 ) |
| ticktick_mark_completion_processedA | Records that a domain agent has processed a completed task. Call this after reviewing each task returned by ticktick_get_unprocessed_completions. The task will no longer appear in future calls to that tool. Args: task_id (str): Full TickTick task ID. Required. project_id (str): Project ID the task belongs to. Required. title (str, optional): Task title (stored for human-readable audit trail). completed_time (str, optional): ISO completion timestamp from the task object. notes (str, optional): Brief notes on how the completion was handled. Returns: {"status": "ok", "task_id": "..."} on success. {"status": "already_processed", "task_id": "..."} if already recorded. {"error": "...", "status": "error"} on failure. Usage Guide: - Call once per task after finishing your handling of it. - Example: ticktick_mark_completion_processed( task_id="abc123", project_id="your_project_id_here", title="Fix kitchen tap", completed_time="2025-06-01T19:00:00+01:00", notes="Replaced ceramic disc, resolved" ) |
| ticktick_convert_datetime_to_ticktick_formatA | Convert an ISO 8601 datetime string into TickTick's storage format. TickTick uses Args:
datetime_iso_string (str): ISO 8601 datetime, e.g.
Returns:
On success: Agent Usage Guide:
- Call this when you need to set Example: ticktick_convert_datetime_to_ticktick_format( datetime_iso_string="2026-04-13T20:45:00+01:00", tz="Europe/London", ) |
| ticktick_create_taskA | Create a new task. Args:
title (str): Task title. Required.
project_id (str, optional): Project ID. Defaults to inbox.
content (str, optional): Long-form content (markdown supported).
desc (str, optional): Short description / checklist subtitle.
all_day (bool, optional): True for all-day tasks.
start_date (str, optional): ISO 8601 start datetime, e.g.
Returns:
JSON object containing the created task. If verification flags
an issue, Limitations:
- Agent Usage Guide:
- Always pair Example: ticktick_create_task( title="Replace kitchen tap washer", project_id="", due_date="2026-06-01T20:45:00+01:00", expected_day_of_week="Monday", time_zone="Europe/London", priority=3, ) |
| ticktick_update_taskA | Update an existing task without wiping unmodified fields. The TickTick API requires the entire editable task on every update;
any omitted field is wiped server-side. To prevent that we fetch the
current task, then overlay ONLY the fields the caller explicitly
set ( Args:
task_object (TaskObject): Must include Returns:
JSON object containing the updated task.
Limitations:
- Read-only API fields ( Agent Usage Guide:
- To reschedule a task, send a single update with the new
Example: ticktick_update_task(task_object={ "id": "60ca9dbc8f08516d9dd56324", "projectId": "", "priority": 5, "dueDate": "2026-06-15T20:45:00+01:00", "expectedDayOfWeek": "Monday", "timeZone": "Europe/London", }) |
| ticktick_delete_tasksA | Delete one or more tasks. Args:
task_ids (str | list[str]): A single task ID, or a list of IDs.
An empty list returns an error.
project_id (str, optional): Used to construct a minimal delete
payload when Returns:
Agent Usage Guide:
- For tasks already completed in TickTick, supply Example: ticktick_delete_tasks( task_ids=["abc123", "def456"], project_id="", ) |
| ticktick_get_tasks_from_projectA | Return every open task in a project. Args:
project_id (str): The project's ID. For the inbox, pass the
value of Returns:
Compact (default): JSON list of compact task objects. If the
compact payload would still exceed the size budget, the
soonest-due tasks are returned and a final Limitations:
- Completed tasks are NOT included.
- Compact output is for browsing only. To EDIT a task, fetch the
full object with Freshness:
Local state is synced from the server at most once per throttle
window (default 15s, Example: ticktick_get_tasks_from_project( project_id="" ) |
| ticktick_complete_taskA | Mark a task as completed. Args: task_id (str): The task's full ID. Returns:
JSON object containing the refetched task (status=2 on success).
Limitations:
- Once completed, the Example: ticktick_complete_task(task_id="60ca9dbc8f08516d9dd56324") |
| ticktick_move_taskA | Move a task into a different project. Args: task_id (str): The task's full ID. new_project_id (str): Destination project's ID. Returns:
JSON object containing the moved task. If the target project
cannot be looked up locally, the move is still attempted.
Missing source task (no projectId field):
Example: ticktick_move_task( task_id="60ca9dbc8f08516d9dd56324", new_project_id="", ) |
| ticktick_make_subtaskA | Nest Args:
parent_task_id (str): The parent task's ID.
child_task_id (str): The task to become a subtask. Must differ
from Returns:
On success: Example: ticktick_make_subtask( parent_task_id="60ca9dbc8f08516d9dd56324", child_task_id="60ca9dbc8f08516d9dd56325", ) |
| ticktick_get_by_idA | Look up any object (task, project, tag) by its ID. Args: obj_id (str): The object's full ID. Returns:
JSON object of the matching record, or Freshness:
Local state is synced from the server at most once per throttle
window (default 15s, Example: ticktick_get_by_id(obj_id="60ca9dbc8f08516d9dd56324") |
| ticktick_get_allA | Dump everything of a single kind from the local sync state. Args:
search (str): Either Returns:
For Limitations:
- Example: ticktick_get_all(search="projects") |
| ticktick_syncA | Force an immediate refresh of TickTick state from the server. The active-read tools ( Returns:
Example: ticktick_sync() |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/partymola/ticktick-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server