Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the TickTick MCP server

Vendor MCP
Open markdown

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

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. 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>
  3. Create the TickTick MCP connection

    In AgentKit > Connections, create a TickTick MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for TickTick MCP server, so you don't need to register an OAuth app.

  4. 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.actions
    const connector = 'ticktickmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { 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 call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'ticktickmcp_get_user_preference',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • ticktickmcp_fetchFetch the full contents of a task by its ID.Read-only

    Fetch

    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-only

    Filter 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get Project By Id

    Get project details by projectId.

    Inputs

    project_idstringrequired
    Unique ID of the project. Get it from list_projects.