TickTick task management
Manage the user's tasks, lists, habits, focus records and countdowns through the official TickTick MCP server (https://mcp.ticktick.com, Streamable HTTP). This Skill is for international TickTick (ticktick.com) accounts only; for the China version (滴答清单 / dida365.com) use the dida365 plugin instead.
Before you start
- The user must have completed authorization (OAuth or API Token). If any tool call returns an authentication error, tell the user: TickTick web app → avatar → Settings → Account → API Token, or redo the OAuth flow.
- On first use, call
list_projectsto learn the user's list structure before operating on tasks.
Operating rules
- Look before you change. Before updating, completing, moving or deleting a task, locate it with
search_taskorfilter_tasks, show the user exactly what you are about to do, then act. - Deletion is irreversible.
delete_taskmoves a task to the trash,delete_project_groupdissolves every list inside the folder,delete_commentremoves a comment permanently, anddelete_focusremoves a focus record permanently — always get explicit user confirmation before any of them. - Be specific. When a request is ambiguous (no list name, date or priority), ask before creating or modifying anything. Do not guess.
- Split complex requests. "Review last week and reschedule this week" should run as: query → summarize to the user → confirm → batch operation.
Tool map
- Query:
search_task(keywords),get_task_by_id,list_undone_tasks_by_time_query(today / tomorrow / last7day / next7day, etc.),list_undone_tasks_by_date(max 14-day span),list_completed_tasks_by_date,filter_tasks(multi-condition) - Lists:
list_projects,create_project,update_project,get_project_with_undone_tasks; columns vialist_columns/create_column/update_column; folders vialist_project_groups/create_project_group/update_project_group/delete_project_group - Tasks:
create_task,batch_add_tasks,complete_task,complete_tasks_in_project(max 20 per call),update_task,move_task,batch_update_tasks,delete_task(requires bothtask_idandproject_id) - Comments & assignment:
get_comment,add_comment,delete_comment,assign_task,unassign_task,project_member - Tags:
list_tags,create_tag - Habits:
list_habits,create_habit,update_habit,get_habit_checkins,upsert_habit_checkins(check-ins limited to the last 90 days) - Focus records:
get_focuses_by_time(max one month per call),create_focus,delete_focus - Countdowns:
list_countdowns
Parameter conventions
- Object parameters must be real JSON objects, never stringified JSON. Testing shows some models (e.g. MiniMax-M3) emit
taskas a string and quote integers, corrupting every inner field type:- ❌ Wrong:
"task": "{\"title\": \"x\", \"priority\": 5}" - ✅ Correct:
"task": {"title": "x", "priority": 5} - If the server's
Received argumentsecho shows quoted values, the call was stringified — immediately resend in object form.
- ❌ Wrong:
- Priority: 0 = none, 1 = low, 3 = medium, 5 = high. "High priority" means 5.
- Pass
priorityas a JSON number ("priority": 5, never quoted). If the server repliestask.priority: must be integer, the value was stringified somewhere in the call chain: confirm you sent a number and retry once; if it still fails, the client's serialization layer is at fault — create the task without a priority and tell the user to set the flag manually in the TickTick app. - Use ISO 8601 datetimes with an explicit offset, e.g.
2026-08-16T15:00:00-07:00. The offset must contain a colon (+08:00);+0800is rejected by the date-time format check. - Prefer
batch_add_tasks/batch_update_tasksover repeated single calls.
Typical flows
- Today overview: "What's on my plate today?" →
list_undone_tasks_by_time_query(today), grouped by list and priority. - Plan breakdown: "Split this week's exam prep into daily tasks" → confirm list and daily schedule first, then
batch_add_tasks. - Evening review: "What did I finish today? Check in my habits." →
list_completed_tasks_by_date+get_habit_checkins, summarize, thenupsert_habit_checkins. - Focus stats: "How much did I focus this month?" →
get_focuses_by_timeand summarize the trend.
Troubleshooting
- Task not found: ask for the list name, date or a keyword, or list candidates with
search_taskand let the user pick. - Create/update failures: check parameters against the conventions above, split the request into smaller steps and retry.
- This MCP covers only basic operations for tasks, lists, habits, focus records and countdowns. Advanced features such as calendar views and smart lists are out of scope — do not promise them.