The TickTick MCP connector routes your AI agent's tool calls to TickTick's own MCP server through Scalekit. Each user signs in to TickTick once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 57 tools.
- Tools
- 57
- What they doRead · write · destructive
- 27 · 25 · 527 read25 write5 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
What you can do
- Manage tasks: create, update, move, complete, and delete tasks, one at a time or in batches
- Find tasks: search by keyword or filter by date, project, priority, tag, or status, including completed tasks
- Organize projects: create and update projects, project groups, Kanban columns, and tags
- Collaborate on tasks: assign tasks to members of shared projects and add or delete comments
- Track habits: create and update habits, and log or review check-ins over a date range
- Log focus sessions: record, view, and delete Pomodoro and timer sessions within a time range
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the TickTick MCP connection
In AgentKit > Connections, create a TickTick MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for TickTick MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'ticktickmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize TickTick MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'ticktickmcp_get_user_preference',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "ticktickmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize TickTick MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="ticktickmcp_get_user_preference",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolticktickmcp_fetchFetch the full contents of a task by its ID.Read-onlyFetch
Fetch the full contents of a task by its ID.
Inputs
idstringrequired- Unique ID of the resource.
ticktickmcp_filter_tasksFilter tasks by date range, project IDs, priority, tags, kind, or status.Read-onlyFilter Tasks
Filter tasks by date range, project IDs, priority, tags, kind, or status.
Inputs
filterstringrequired- No description.
client_timezonestring- No description.
ticktickmcp_get_commentGet all comments for a task by projectId and taskId.Read-onlyGet Comment
Get all comments for a task by projectId and taskId.
Inputs
project_idstringrequired- Unique ID of the project. Get it from list_projects.
task_idstringrequired- Unique ID of the task. Get it from search_task or get_task_in_project.
ticktickmcp_get_focusGet a single focus session record by focusId and type.Read-onlyGet Focus
Get a single focus session record by focusId and type.
Inputs
focus_idstringrequired- Unique ID of the focus session.
typeintegerrequired- Focus session type: 0 for Pomodoro, 1 for timer.one of
01
ticktickmcp_get_focuses_by_timeGet focus sessions within a time range (max one month) filtered by type.Read-onlyGet Focuses By Time
Get focus sessions within a time range (max one month) filtered by type.
Inputs
from_timestringrequired- Start of the time range in ISO 8601 format.
to_timestringrequired- End of the time range in ISO 8601 format. Range must not exceed one month.
typeintegerrequired- Focus session type: 0 for Pomodoro, 1 for timer.one of
01
ticktickmcp_get_habitGet details of a habit by habitId.Read-onlyGet Habit
Get details of a habit by habitId.
Inputs
habit_idstringrequired- Unique ID of the habit. Get it from list_habits.
ticktickmcp_get_habit_checkinsGet habit check-ins for one or more habits within a date range.Read-onlyGet Habit Checkins
Get habit check-ins for one or more habits within a date range.
Inputs
from_stampintegerrequired- No description.
habit_idsarrayrequired- No description.
to_stampintegerrequired- No description.
client_timezonestring- No description.
ticktickmcp_get_project_by_idGet project details by projectId.Read-onlyGet Project By Id
Get project details by projectId.
Inputs
project_idstringrequired- Unique ID of the project. Get it from list_projects.
ticktickmcp_get_project_with_undone_tasksGet a project and all its undone tasks by projectId.Read-onlyGet Project With Undone Tasks
Get a project and all its undone tasks by projectId.
Inputs
project_idstringrequired- Unique ID of the project. Get it from list_projects.
ticktickmcp_get_task_by_idGet full task details by taskId.Read-onlyGet Task By Id
Get full task details by taskId.
Inputs
task_idstringrequired- Unique ID of the task. Get it from search_task or get_task_in_project.
ticktickmcp_get_task_in_projectGet a specific task by projectId and taskId.Read-onlyGet Task In Project
Get a specific task by projectId and taskId.
Inputs
project_idstringrequired- Unique ID of the project. Get it from list_projects.
task_idstringrequired- Unique ID of the task. Get it from search_task or get_task_in_project.
ticktickmcp_get_user_preferenceGet user preferences including timezone and display settings.Read-onlyGet User Preference
Get user preferences including timezone and display settings.
Inputs
This tool takes no inputs.
ticktickmcp_list_calendar_accountsList third-party calendar accounts connected to TickTick.Read-onlyList Calendar Accounts
List third-party calendar accounts connected to TickTick.
Inputs
This tool takes no inputs.
ticktickmcp_list_columnsList all Kanban columns in a project.Read-onlyList Columns
List all Kanban columns in a project.
Inputs
project_idstringrequired- Unique ID of the project. Get it from list_projects.
ticktickmcp_list_completed_tasks_by_dateList completed tasks filtered by project IDs and date range.Read-onlyList Completed Tasks By Date
List completed tasks filtered by project IDs and date range.
Inputs
searchstringrequired- No description.
client_timezonestring- No description.
ticktickmcp_list_countdownsList all countdown tasks for the current user.Read-onlyList Countdowns
List all countdown tasks for the current user.
Inputs
This tool takes no inputs.
ticktickmcp_list_habit_sectionsList all habit sections for the current user.Read-onlyList Habit Sections
List all habit sections for the current user.
Inputs
This tool takes no inputs.
ticktickmcp_list_habitsList all habits for the current user.Read-onlyList Habits
List all habits for the current user.
Inputs
This tool takes no inputs.
ticktickmcp_list_project_groupsList all project groups for the current user.Read-onlyList Project Groups
List all project groups for the current user.
Inputs
This tool takes no inputs.
ticktickmcp_list_project_membersList members of a shared project.Read-onlyList Project Members
List members of a shared project. Use a returned username when assigning a task in that project.
Inputs
project_idstringrequired- Unique ID of the project. Get it from list_projects.
ticktickmcp_list_projectsList all projects for the current user.Read-onlyList Projects
List all projects for the current user.
Inputs
limitstring- Maximum number of projects to return.
offsetstring- Number of projects to skip before returning results.
ticktickmcp_list_undone_tasks_by_dateList undone tasks within a date range (max 14 days between start and end).Read-onlyList Undone Tasks By Date
List undone tasks within a date range (max 14 days between start and end).
Inputs
searchstringrequired- No description.
client_timezonestring- No description.
ticktickmcp_list_undone_tasks_by_time_queryList undone tasks using a predefined time query: today, last24hour, last7day, tomorrow, or nextWeek.Read-onlyList Undone Tasks By Time Query
List undone tasks using a predefined time query: today, last24hour, last7day, tomorrow, or nextWeek.
Inputs
client_timezonestring- No description.
query_commandstring- No description.one of
todaylast24hourlast7daytomorrownext24hournext7daydefaulttoday
ticktickmcp_query_calendar_eventsQuery events from connected third-party calendars.Read-onlyQuery Calendar Events
Query events from connected third-party calendars. Omit the query for the server's default range (now through the next three months); explicit ranges cannot exceed three months.
Inputs
client_timezonestring- No description.
querystring- No description.
ticktickmcp_searchSearch TickTick and return matching results with IDs, titles, and URLs.Read-onlySearch
Search TickTick and return matching results with IDs, titles, and URLs.
Inputs
querystringrequired- Search keyword to filter tasks by name or content.
ticktickmcp_search_taskSearch tasks by keyword and return matching taskId, title, and URL.Read-onlySearch Task
Search tasks by keyword and return matching taskId, title, and URL.
Inputs
querystringrequired- Search keyword to filter tasks by name or content.
ticktickmcp_add_commentAdd a plain-text comment (max 1024 characters) to a task.WriteAdd Comment
Add a plain-text comment (max 1024 characters) to a task.
Inputs
project_idstringrequired- Unique ID of the project. Get it from list_projects.
task_idstringrequired- Unique ID of the task. Get it from search_task or get_task_in_project.
titlestringrequired- Text content of the comment (plain text, max 1024 characters).
ticktickmcp_assign_taskAssign a task in a shared project to one of the project's members.WriteAssign Task
Assign a task in a shared project to one of the project's members.
- Idempotent
Inputs
assignee_usernamestringrequired- Username of the project member to assign the task to. Get it from list_project_members.
project_idstringrequired- Unique ID of the project. Get it from list_projects.
task_idstringrequired- Unique ID of the task. Get it from search_task or get_task_in_project.
ticktickmcp_batch_add_tasksCreate multiple tasks in one request.WriteBatch Add Tasks
Create multiple tasks in one request. Each task must include a title and projectId.
Inputs
tasksarrayrequired- No description.
client_timezonestring- No description.
ticktickmcp_batch_update_tasksUpdate multiple existing tasks in one request.WriteBatch Update Tasks
Update multiple existing tasks in one request. Each task must include its taskId.
- Idempotent
Inputs
tasksarrayrequired- No description.
ticktickmcp_complete_checklist_itemComplete one checklist item in a CHECKLIST task.WriteComplete Checklist Item
Complete one checklist item in a CHECKLIST task.
Inputs
checklist_item_idstringrequired- No description.
project_idstringrequired- No description.
task_idstringrequired- No description.
ticktickmcp_complete_taskMark a task as completed by projectId and taskId.WriteComplete Task
Mark a task as completed by projectId and taskId.
- Idempotent
Inputs
project_idstringrequired- Unique ID of the project. Get it from list_projects.
task_idstringrequired- Unique ID of the task. Get it from search_task or get_task_in_project.
ticktickmcp_complete_tasks_in_projectMark up to 20 tasks as completed in a project.WriteComplete Tasks In Project
Mark up to 20 tasks as completed in a project.
- Idempotent
Inputs
project_idstringrequired- Unique ID of the project. Get it from list_projects.
task_idsarrayrequired- No description.
ticktickmcp_create_columnCreate a new Kanban column in a project.WriteCreate Column
Create a new Kanban column in a project.
Inputs
columnstringrequired- No description.
project_idstringrequired- Unique ID of the project. Get it from list_projects.
ticktickmcp_create_focusCreate a focus session record.WriteCreate Focus
Create a focus session record. Type 0 = Pomodoro, type 1 = timer.
Inputs
end_timestringrequired- No description.
start_timestringrequired- No description.
typeintegerrequired- No description.one of
01 client_timezonestring- No description.
habit_idstring- No description.
notestring- No description.
task_idstring- No description.
ticktickmcp_create_habitCreate a new habit to track in TickTick.WriteCreate Habit
Create a new habit to track in TickTick.
Inputs
habitstringrequired- No description.
ticktickmcp_create_projectCreate a new project (list) in TickTick.WriteCreate Project
Create a new project (list) in TickTick.
Inputs
namestringrequired- Display name for the project.
colorstring- Hex color code for the project, e.g. #FF6B6B.
group_idstring- ID of the project group to place this project in.
kindstring- Project kind. Accepted values: TASK, NOTE.default
TASK sort_orderinteger- Integer sort order for positioning the project in the list.default
0 view_modestring- Default view mode. Accepted values: list, kanban, timeline.default
list
ticktickmcp_create_project_groupCreate a new project group for organizing projects.WriteCreate Project Group
Create a new project group for organizing projects.
Inputs
project_groupstringrequired- No description.
ticktickmcp_create_tagCreate a new tag for labeling tasks.WriteCreate Tag
Create a new tag for labeling tasks.
Inputs
tagstringrequired- No description.
ticktickmcp_create_taskCreate a new task in a TickTick project.WriteCreate Task
Create a new task in a TickTick project.
Inputs
taskstringrequired- No description.
client_timezonestring- No description.
ticktickmcp_move_taskMove tasks to different projects.WriteMove Task
Move tasks to different projects.
- Idempotent
Inputs
movesarrayrequired- No description.
ticktickmcp_rename_tagRename a tag and its display label.WriteRename Tag
Rename a tag and its display label.
Inputs
namestringrequired- No description.
new_namestringrequired- New tag name, up to 64 characters; cannot contain whitespace or \ / " # : * ? < > |
scopeinteger- No description.one of
01default0
ticktickmcp_unassign_taskRemove the assignee from a task in a shared project.WriteUnassign Task
Remove the assignee from a task in a shared project.
- Idempotent
Inputs
project_idstringrequired- Unique ID of the project. Get it from list_projects.
task_idstringrequired- Unique ID of the task. Get it from search_task or get_task_in_project.
ticktickmcp_update_columnUpdate an existing Kanban column by columnId.WriteUpdate Column
Update an existing Kanban column by columnId.
- Idempotent
Inputs
columnstringrequired- No description.
column_idstringrequired- Unique ID of the column. Get it from list_columns.
project_idstringrequired- Unique ID of the project. Get it from list_projects.
ticktickmcp_update_focusUpdate an existing focus record.WriteUpdate Focus
Update an existing focus record. The focus type is required.
Inputs
focusstringrequired- No description.
focus_idstringrequired- No description.
client_timezonestring- No description.
ticktickmcp_update_habitUpdate an existing habit by habitId.WriteUpdate Habit
Update an existing habit by habitId.
- Idempotent
Inputs
habitstringrequired- No description.
habit_idstringrequired- Unique ID of the habit. Get it from list_habits.
ticktickmcp_update_projectUpdate an existing project's name, color, group, or display settings.WriteUpdate Project
Update an existing project's name, color, group, or display settings.
- Idempotent
Inputs
project_idstringrequired- Unique ID of the project. Get it from list_projects.
closedstring- Whether the project is archived.
colorstring- Hex color code for the project, e.g. #FF6B6B.
group_idstring- ID of the project group to place this project in.
kindstring- Project kind. Accepted values: TASK, NOTE.
namestring- Display name for the project.
sort_orderstring- Integer sort order for positioning the project in the list.
view_modestring- Default view mode. Accepted values: list, kanban, timeline.
ticktickmcp_update_project_groupUpdate an existing project group by projectGroupId.WriteUpdate Project Group
Update an existing project group by projectGroupId.
- Idempotent
Inputs
project_groupstringrequired- No description.
project_group_idstringrequired- Unique ID of the project group. Get it from list_project_groups.
ticktickmcp_update_tagUpdate tag attributes other than its name or label.WriteUpdate Tag
Update tag attributes other than its name or label.
Inputs
tagstringrequired- No description.
ticktickmcp_update_taskUpdate an existing task's fields.WriteUpdate Task
Update an existing task's fields. To remove a parent-child relationship, set parentId to empty string.
- Idempotent
Inputs
taskstringrequired- No description.
task_idstringrequired- No description.
client_timezonestring- No description.
ticktickmcp_upsert_habit_checkinsCreate or update check-in records for a habit by habitId.WriteUpsert Habit Checkins
Create or update check-in records for a habit by habitId.
- Idempotent
Inputs
checkin_datastringrequired- No description.
habit_idstringrequired- No description.
client_timezonestring- No description.
ticktickmcp_delete_commentDelete a comment from a task by comment ID.DestructiveDelete Comment
Delete a comment from a task by comment ID.
- Idempotent
Inputs
idstringrequired- Unique ID of the resource.
project_idstringrequired- Unique ID of the project. Get it from list_projects.
task_idstringrequired- Unique ID of the task. Get it from search_task or get_task_in_project.
ticktickmcp_delete_focusDelete a focus session record by focusId and type.DestructiveDelete Focus
Delete a focus session record by focusId and type.
- Idempotent
Inputs
focus_idstringrequired- Unique ID of the focus session.
typeintegerrequired- Focus session type: 0 for Pomodoro, 1 for timer.one of
01
ticktickmcp_delete_project_groupDelete a project group permanently by its ID.DestructiveDelete Project Group
Delete a project group permanently by its ID.
- Idempotent
Inputs
project_group_idstringrequired- Unique ID of the project group. Get it from list_project_groups.
ticktickmcp_delete_tagDelete a tag and remove its task associations.DestructiveDelete Tag
Delete a tag and remove its task associations.
Inputs
namestringrequired- No description.
scopeinteger- No description.one of
01default0
ticktickmcp_delete_taskPermanently delete a task by projectId and taskId.DestructiveDelete Task
Permanently delete a task by projectId and taskId.
- Idempotent
Inputs
project_idstringrequired- Unique ID of the project. Get it from list_projects.
task_idstringrequired- Unique ID of the task. Get it from search_task or get_task_in_project.
No tools match.