Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to ClickUp

Scalekit connector
Open markdown

The ClickUp connector lets your AI agent act in each user's ClickUp account. Each user signs in to ClickUp once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 99 tools.

Tools
99
What they doRead · write · destructive
39 · 47 · 1339 read47 write13 destructive
Users sign in with
OAuth app
Your own ClickUp app

What you can do

  • Manage tasks: create, update, delete, and search tasks; set priorities, due dates, assignees, and statuses
  • Manage lists: create, update, and delete lists in folders or as folderless lists; get members
  • Manage folders: create, update, and delete folders; list all folders in a space
  • Manage spaces: create, update, and delete spaces; manage space tags and views
  • Manage comments: add, update, and delete comments on tasks and lists
  • Manage goals: create, update, delete, and list goals and their key results
  • Track time: list and create time entries for tasks
  • Manage checklists: create task checklists and checklist items
  • Manage webhooks: create, update, delete, and list workspace webhooks
  • Access workspace data: get user info, list workspaces, spaces, and views

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

    In AgentKit > Connections, create a ClickUp connection and copy its redirect URI. The name you give it is the connection_name your code passes. See Configure connections.

  4. Register an OAuth app

    ClickUp connections use your own OAuth app. Register one with ClickUp and add the redirect URI you copied.

    Then enter the app's Client ID and Client Secret on the ClickUp connection.

    Console steps with screenshots

    Register your Scalekit environment with the ClickUp connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:

    1. Set up auth redirects

      • In Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find ClickUp and click Create. Copy the redirect URI. It looks like https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.

        Copy redirect URI from Scalekit dashboard

      • In ClickUp, click your Workspace avatar (lower-left corner) → Settings → Integrations → ClickUp API.

      • Open your application and paste the copied URI under Redirect URL(s), then save.

        Add redirect URI in ClickUp API settings

    2. Get client credentials

      On your ClickUp application page (Settings → Integrations → ClickUp API):

      Get ClickUp Client ID and Client Secret

      • Client ID — found under Client ID on your app page
      • Client Secret — found under Client Secret on your app page
    3. Add credentials in Scalekit

      • In Scalekit dashboard, go to AgentKit > Connections and open the connection you created.

      • Enter your credentials:

        • Client ID (from your ClickUp app page)
        • Client Secret (from your ClickUp app page)

        Add credentials for ClickUp in Scalekit dashboard

      • Click Save.

    4. Connect a user account

      • Click the Connected Accounts tab, then Add Account.
      • Enter your user’s ID and click Create Account — you’ll be redirected to ClickUp to authorize access.
  5. 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 = 'clickup'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize ClickUp:', 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: 'clickup_user_get',
    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
  • clickup_chat_channels_listList Chat channels in a ClickUp Workspace, including regular channels, direct messages, and group direct messages.Read-only

    List Chat Channels

    List Chat channels in a ClickUp Workspace, including regular channels, direct messages, and group direct messages.

    Inputs

    workspace_idstringrequired
    The Workspace ID to list Chat channels for
    cursorstring
    Pagination cursor from a previous response
    description_formatstring
    Format to render each channel's description inone of text/mdtext/plain
    include_closedboolean
    If true, includes closed direct messages and group direct messages. Defaults to false.
    is_followerboolean
    If true, only return channels the authenticated user follows. Defaults to false.
    limitinteger
    Maximum number of channels to return per page (1-100). Defaults to 50.
    with_message_sinceinteger
    Only return channels with messages since this Unix timestamp (milliseconds)
  • clickup_comment_get_listRetrieve comments on a ClickUp list.Read-only

    Get List Comments

    Retrieve comments on a ClickUp list. Returns up to 25 most recent comments by default. Use start and start_id for pagination.

    Inputs

    list_idstringrequired
    The unique identifier of the list
    startinteger
    Unix timestamp in milliseconds of a reference comment for pagination
    start_idstring
    ID of a reference comment for pagination
  • clickup_comment_get_taskRetrieve comments on a ClickUp task.Read-only

    Get Task Comments

    Retrieve comments on a ClickUp task. Returns up to 25 most recent comments. Use start and start_id for pagination.

    Inputs

    task_idstringrequired
    The unique identifier of the task
    startinteger
    Unix timestamp in milliseconds of a reference comment for pagination
    start_idstring
    ID of a reference comment for pagination
  • clickup_comment_thread_listRetrieve the threaded replies on a ClickUp comment.Read-only

    List Threaded Comment Replies

    Retrieve the threaded replies on a ClickUp comment. The parent comment itself is not included in the response.

    Inputs

    comment_idstringrequired
    The unique identifier of the parent comment to fetch replies for
  • clickup_custom_field_listView the Custom Fields (and their configuration options) available on a ClickUp list.Read-only

    List List Custom Fields

    View the Custom Fields (and their configuration options) available on a ClickUp list.

    Inputs

    list_idstringrequired
    The ID of the list to fetch available Custom Fields for
    include_applied_objectsboolean
    When true, includes applied_objects for task-type-scoped Custom Fields
  • clickup_custom_task_types_listList the custom task types (e.g.Read-only

    List Custom Task Types

    List the custom task types (e.g. Bug, Sprint) configured for a ClickUp Workspace, so their IDs can be used to set a task's type correctly.

    Inputs

    team_idstringrequired
    The workspace (team) ID to list custom task types for
  • clickup_doc_getFetch metadata for a single ClickUp Doc by ID.Read-only

    Get Doc

    Fetch metadata for a single ClickUp Doc by ID.

    Inputs

    doc_idstringrequired
    The ID of the Doc to fetch
    workspace_idstringrequired
    The ID of the Workspace the Doc belongs to
  • clickup_doc_page_getFetch the content of a single page in a ClickUp Doc.Read-only

    Get Doc Page

    Fetch the content of a single page in a ClickUp Doc.

    Inputs

    doc_idstringrequired
    The ID of the Doc the page belongs to
    page_idstringrequired
    The ID of the page to fetch
    workspace_idstringrequired
    The ID of the Workspace the Doc belongs to
    content_formatstring
    Format to return the page content in. Default is text/md.one of text/mdtext/plain

Workflows

Proxy API call
const result = await actions.request({
connectionName: 'clickup',
identifier: 'user_123',
path: '/api/v2/user',
method: 'GET',
});
console.log(result);
Execute a tool
const result = await actions.executeTool({
connector: 'clickup',
identifier: 'user_123',
toolName: 'clickup_workspaces_list',
toolInput: {},
});
console.log(result);