MewCP LogoAStheTech
MCPsBlogsPricingDocsLogin
MewCP Logo

Infrastructure You Can Trust for Agentic Products

X

Categories

  • Productivity & Docs
  • Developer Tools
  • CRM & Sales
  • Finance & Commerce
  • Data & Analytics
  • Marketing & SEO
  • Search & Web
  • Communication
  • View All Servers →

Resources

  • Blog
  • Docs
  • Privacy Policy
  • Terms of Service

Blogs

  • View All Blogs →
Browse Servers|Pricing|Contact

Browse by Category

Productivity & Docs

  • Gmail
  • Google Drive
  • YouTube
  • Google Calendar
  • Google People
  • Google Classroom
  • Notion
  • ClickUp
  • Figma

Developer Tools

  • Gemini
  • Veo
  • ClickUp
  • Firecrawl
  • Vercel
  • Apify
  • Github
  • Chef
  • Scientific Calculator
  • Figma
  • HTTP
  • Perplexity

CRM & Sales

  • Google People

Finance & Commerce

  • Kite
  • Razorpay
  • Polymarket
  • Stripe
  • Binance

Marketing & SEO

  • YouTube
  • Google Business
  • Mailchimp

Search & Web

  • Web Scrapper
  • Firecrawl
  • Apify
  • Perplexity

Communication

  • Gmail
  • Google Meet
  • Google Calendar
  • Mailchimp
  • WhatsApp
  • Slack

© 2026 MewCP. All rights reserved.

ClickUp

ClickUp

v1.0.00 callsOAuthGitHub
Open in ChatGPTChatGPT
Open in ClaudeClaude

Documentation

Guide

Connect

Gateway URL

https://gateway.mewcp.com/clickup/mcp

Integrations

Click a client to view its config snippet and setup steps. Use for a guided setup with your MewCP key pre-filled.

Help Improve This Server

Missing a tool?

Found a bug?

Have an idea for an improvement?

Share your feedback directly with the maintainers - every feedback helps make this server better for everyone.

Open GitHub Issues →

Manage tasks, projects, and team workflows in ClickUp through the Model Context Protocol.

A Model Context Protocol (MCP) server that exposes ClickUp's API for managing workspaces, tasks, time tracking, and team collaboration.


Overview

The CL ClickUp MCP Server provides stateless, multi-user access to the ClickUp API with server-side credential injection:

  • Full workspace hierarchy management — spaces, folders, lists, and tasks
  • Time tracking, goals, checklists, custom fields, tags, and views
  • Team collaboration tools — comments, members, webhooks, docs, and chat

Perfect for:

  • Automating task creation, updates, and assignment from AI workflows
  • Querying and reporting across projects, sprints, and workspaces
  • Integrating ClickUp data into custom pipelines and productivity tools

Tools

Utility

Verifies the server is running and reachable. No credentials required.

Inputs:

No inputs required.

Output:

{
  "status": "ok",
  "server": "CL ClickUp MCP Server",
  "message": "Server is running successfully!",
  "api_base": "https://api.clickup.com/api/v2"
}

usage Example:

POST /mcp/clickup/ping

Authorization

Returns the ClickUp user associated with the injected OAuth access token.

Inputs:

No inputs required.

Output:

{
  "user": {
    "id": 1234567,
    "username": "jane_doe",
    "email": "jane@example.com",
    "color": "#7B68EE",
    "profilePicture": "https://..."
  }
}

usage Example:


Returns all ClickUp Workspaces (teams) the authenticated user has access to.

Inputs:

No inputs required.

Output:

{
  "teams": [
    {
      "id": "9876543",
      "name": "My Workspace",
      "color": "#536DFE",
      "members": [{ "user": { "id": 1234567, "username": "jane_doe" } }]
    }


Spaces

Returns all Spaces within the specified Workspace, with optional filtering for archived spaces.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • archived (boolean, optional) → Include archived spaces. Default: false.

Output:

{
  "spaces": [
    {
      "id": "90110011",
      "name": "Engineering",
      "archived": false,




Returns full details for a single Space by its ID.

Inputs:

  • space_id (string, required) → The ID of the Space.

Output:

{
  "id": "90110011",
  "name": "Engineering",
  "archived": false,
  "multiple_assignees": true,
  "features": { "due_dates": { "enabled": true }, "time_tracking": { 

Creates a Space with the specified name and feature configuration inside a Workspace.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • body (string, required) → JSON string of the space definition.

Body fields:

  • name (string, required) → Space name.
  • multiple_assignees (boolean, optional) → Allow multiple assignees on tasks.
  • features (object, optional) → Feature flags (e.g. due_dates, time_tracking).

Output:


Updates the name, settings, or feature flags of an existing Space.

Inputs:

  • space_id (string, required) → The ID of the Space to update.
  • body (string, required) → JSON string of fields to update.

Body fields:

  • name (string, optional) → New Space name.
  • multiple_assignees (boolean, optional) → Allow multiple assignees.
  • features (object, optional) → Updated feature flags.

Output:

{
  "id": "90110011",



Permanently deletes a Space and all its contents.

Inputs:

  • space_id (string, required) → The ID of the Space to delete.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/delete_space
 
{
  "space_id": "90110011"
}

Folders

Returns all Folders within the specified Space.

Inputs:

  • space_id (string, required) → The ID of the Space.
  • archived (boolean, optional) → Include archived folders. Default: false.

Output:

{
  "folders": [
    { "id": "78901234", "name": "Sprint 1", "task_count": "12", "lists": [] }
  ]

Returns full details for a single Folder by its ID.

Inputs:

  • folder_id (string, required) → The ID of the Folder.

Output:

{
  "id": "78901234",
  "name": "Sprint 1",
  "task_count": "12",
  "lists": [{ "id": "56789012", "name": "Backlog" }]
}

Creates a named Folder inside the specified Space.

Inputs:

  • space_id (string, required) → The ID of the Space.
  • body (string, required) → JSON string of the folder definition.

Body fields:

  • name (string, required) → Folder name.

Output:

{
  "id": "78901299",
  "name": "Sprint 2",
  "task_count": "0"
}

Renames or modifies an existing Folder.

Inputs:

  • folder_id (string, required) → The ID of the Folder to update.
  • body (string, required) → JSON string of fields to update.

Body fields:

  • name (string, optional) → New Folder name.

Output:

{
  "id": "78901234",
  "name": "Sprint 1 (Completed)"
}

usage Example:


Permanently deletes a Folder and all its lists.

Inputs:

  • folder_id (string, required) → The ID of the Folder to delete.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/delete_folder
 
{
  "folder_id": "78901234"
}

Lists

Returns all Lists within the specified Folder.

Inputs:

  • folder_id (string, required) → The ID of the Folder.
  • archived (boolean, optional) → Include archived lists. Default: false.

Output:

{
  "lists": [
    { "id": "56789012", "name": "Backlog", "task_count": 8, "status": null


Returns Lists that belong directly to a Space (not inside any Folder).

Inputs:

  • space_id (string, required) → The ID of the Space.
  • archived (boolean, optional) → Include archived lists. Default: false.

Output:

{
  "lists": [
    { "id": "56789099", "name": "Inbox", "task_count": 3 }
  ]
}

Returns full details for a single List by its ID.

Inputs:

  • list_id (string, required) → The ID of the List.

Output:

{
  "id": "56789012",
  "name": "Backlog",
  "task_count": 8,
  "due_date": null,
  "priority": null
}

usage Example:


Creates a named List inside the specified Folder.

Inputs:

  • folder_id (string, required) → The ID of the Folder.
  • body (string, required) → JSON string of the list definition.

Body fields:

  • name (string, required) → List name.
  • content (string, optional) → List description.
  • due_date (integer, optional) → Due date as Unix timestamp in ms.
  • priority (integer, optional) → Priority level (1–4).
  • assignee (integer, optional) → Default assignee user ID.
  • status (string, optional) → List status.


Creates a List at the Space level, not inside any Folder.

Inputs:

  • space_id (string, required) → The ID of the Space.
  • body (string, required) → JSON string of the list definition (same fields as create_list).

Output:

{
  "id": "56789100",
  "name": "General"
}

usage Example:


Updates the name, description, due date, or other properties of a List.

Inputs:

  • list_id (string, required) → The ID of the List to update.
  • body (string, required) → JSON string of fields to update.

Body fields:

  • name (string, optional) → New List name.
  • content (string, optional) → Updated description.
  • due_date (integer, optional) → New due date (Unix ms).
  • priority (integer, optional) → Priority level (1–4).
  • assignee (integer, optional) → Updated default assignee.
  • unset_status (boolean, optional) → Clear the list status.

Permanently deletes a List and all its tasks.

Inputs:

  • list_id (string, required) → The ID of the List to delete.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/delete_list
 
{
  "list_id": "56789012"
}

Tasks

Returns tasks in the specified List with optional pagination and filtering.

Inputs:

  • list_id (string, required) → The ID of the List.
  • archived (boolean, optional) → Include archived tasks. Default: false.
  • include_closed (boolean, optional) → Include closed tasks. Default: false.
  • page (integer, optional) → Page number (0-indexed). Default: 0.
  • order_by (string, optional) → Sort field: id, , , .

Returns full details for a single task by its ID.

Inputs:

  • task_id (string, required) → The ID of the task.
  • include_subtasks (boolean, optional) → Include subtasks in response. Default: false.
  • include_markdown_description (boolean, optional) → Return description as markdown. Default: false.

Output:

{
  "id": "abc123",
  "name": "Fix login bug",
  "description"







Creates a task with the specified properties inside a List.

Inputs:

  • list_id (string, required) → The ID of the List.
  • body (string, required) → JSON string of the task definition.

Body fields:

  • name (string, required) → Task name.
  • description (string, optional) → Task description (plain text).
  • markdown_description (string, optional) → Task description in markdown.
  • assignees (array of integers, optional) → List of assignee user IDs.
  • tags (array of strings, optional) → Tag names to apply.
  • status (string, optional) → Initial status name.

Updates any combination of task fields including name, status, priority, assignees, and due date.

Inputs:

  • task_id (string, required) → The ID of the task to update.
  • body (string, required) → JSON string of fields to update.

Body fields:

  • name (string, optional) → New task name.
  • description (string, optional) → Updated description.
  • status (string, optional) → New status name.
  • priority (integer, optional) → New priority (1–4, or null to clear).
  • due_date (integer, optional) → New due date (Unix ms, or to clear).

Permanently deletes a task.

Inputs:

  • task_id (string, required) → The ID of the task to delete.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/delete_task
 
{
  "task_id": "abc123"
}

Returns tasks across an entire Workspace with optional filtering by space, folder, list, status, assignee, and date ranges.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • page (integer, optional) → Page number (0-indexed). Default: 0.
  • order_by (string, optional) → Sort field: id, created, updated, due_date.
  • reverse (boolean, optional) → Reverse the sort order.
  • (boolean, optional) → Include subtasks.

Task Comments

Returns all comments on the specified task, with optional pagination by date or comment ID.

Inputs:

  • task_id (string, required) → The ID of the task.
  • start (integer, optional) → Return comments after this Unix ms timestamp.
  • start_id (string, optional) → Return comments after this comment ID.

Output:

{
  "comments": [
    {
      "id": "55001122",
      "comment_text": "Looks good, merging tomorrow.",
      "user": { "id"





Adds a new comment to the specified task.

Inputs:

  • task_id (string, required) → The ID of the task.
  • body (string, required) → JSON string of the comment.

Body fields:

  • comment_text (string, required) → The comment text.
  • assignee (integer, optional) → Assign the comment to a user ID.
  • notify_all (boolean, optional) → Notify all task watchers. Default: false.

Output:

{
  "id"



Returns all comments posted on the specified List.

Inputs:

  • list_id (string, required) → The ID of the list.
  • start (integer, optional) → Return comments after this Unix ms timestamp.
  • start_id (string, optional) → Return comments after this comment ID.

Output:

{
  "comments": [
    {
      "id": "55001123",
      "comment_text": "This list needs triage.",
      "user": { "id": 




Adds a new comment to the specified List.

Inputs:

  • list_id (string, required) → The ID of the list.
  • body (string, required) → JSON string of the comment.

Body fields:

  • comment_text (string, required) → The comment text.
  • notify_all (boolean, optional) → Notify all list members. Default: false.

Output:

{
  "id": "55001200",
  "comment": [{ 


Edits the text or resolved state of a comment.

Inputs:

  • comment_id (string, required) → The ID of the comment to update.
  • body (string, required) → JSON string of fields to update.

Body fields:

  • comment_text (string, optional) → Updated comment text.
  • assignee (integer, optional) → Updated assignee user ID.
  • resolved (boolean, optional) → Mark or unmark as resolved.

Output:

{
  "success": true
}

Permanently deletes a comment.

Inputs:

  • comment_id (string, required) → The ID of the comment to delete.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/delete_comment
 
{
  "comment_id": "55001122"
}

Time Tracking

Returns time entries within an optional date range, filterable by assignee.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • start_date (integer, optional) → Start of range as Unix ms timestamp.
  • end_date (integer, optional) → End of range as Unix ms timestamp.
  • assignee (string, optional) → Filter by user ID.
  • include_task_tags (boolean, optional) → Include task tags in response. Default: false.
  • include_location_names (boolean, optional) → Include space/folder/list names. Default: false.

Output:


Returns full details for a single time entry.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • timer_id (string, required) → The ID of the time entry.

Output:

{
  "data": {
    "id": "1234567890",
    "task": { "id": "abc123" },
    "duration": "3600000",
    "start": "1717100000000",



Logs time against a task with explicit start time and duration.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • body (string, required) → JSON string of the time entry.

Body fields:

  • start (integer, required) → Start time as Unix ms timestamp.
  • duration (integer, required) → Duration in milliseconds.
  • tid (string, optional) → Task ID to log time against.
  • description (string, optional) → Note about the work done.
  • billable (boolean, optional) → Mark as billable.

Output:


Modifies the start time, duration, task, or description of an existing time entry.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • timer_id (string, required) → The ID of the time entry to update.
  • body (string, required) → JSON string of fields to update.

Body fields:

  • start (integer, optional) → Updated start time (Unix ms).
  • duration (integer, optional) → Updated duration (ms).
  • description (string, optional) → Updated description.
  • tid (string, optional) → Updated task ID.
  • billable (boolean, optional) → Updated billable flag.

Permanently deletes a time entry.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • timer_id (string, required) → The ID of the time entry to delete.

Output:

{
  "data": []
}

usage Example:

POST /mcp/clickup/delete_time_entry
 
{
  "team_id": "9876543",


Starts a live timer optionally linked to a task.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • body (string, required) → JSON string of the timer details.

Body fields:

  • tid (string, optional) → Task ID to track time against.
  • description (string, optional) → Note about what's being worked on.
  • billable (boolean, optional) → Mark as billable.

Output:

{
  "data": {
    "id": 




Stops the currently running timer for the authenticated user.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).

Output:

{
  "data": {
    "id": "9876543211",
    "start": "1717200000000",
    "end": "1717203600000",
    "duration": "3600000"
  }
}

usage Example:


Returns the active timer for the authenticated user, if one is running.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).

Output:

{
  "data": {
    "id": "9876543211",
    "start": "1717200000000",
    "task": { "id": "abc123", "name": "Fix login bug" }
  }
}

Members

Returns the Workspace details including all member profiles.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).

Output:

{
  "team": {
    "id": "9876543",
    "name": "My Workspace",
    "members": [
      { "user": { "id": 1234567, "username": "jane_doe", "email": 



Returns all users who are assignees or watchers of the specified task.

Inputs:

  • task_id (string, required) → The ID of the task.

Output:

{
  "members": [
    { "id": 1234567, "username": "jane_doe", "email": "jane@example.com" }
  ]
}

usage Example:


Returns all users who have access to the specified List.

Inputs:

  • list_id (string, required) → The ID of the list.

Output:

{
  "members": [
    { "id": 1234567, "username": "jane_doe", "email": "jane@example.com" }
  ]
}

usage Example:


Tags

Returns all tags defined within the specified Space.

Inputs:

  • space_id (string, required) → The ID of the Space.

Output:

{
  "tags": [
    { "name": "bug", "tag_fg": "#FFFFFF", "tag_bg": "#FF0000" },
    { "name": "feature", "tag_fg": "#FFFFFF", "tag_bg": 


Creates a new named tag with custom foreground and background colors.

Inputs:

  • space_id (string, required) → The ID of the Space.
  • body (string, required) → JSON string of the tag definition.

Body fields:

  • tag.name (string, required) → Tag name.
  • tag.tag_fg (string, optional) → Foreground color hex (e.g. #FFFFFF).
  • tag.tag_bg (string, optional) → Background color hex (e.g. #FF0000).

Output:


Updates the name or colors of an existing tag.

Inputs:

  • space_id (string, required) → The ID of the Space.
  • tag_name (string, required) → The current name of the tag to update.
  • body (string, required) → JSON string of tag fields to update.

Body fields:

  • tag.name (string, optional) → New tag name.
  • tag.tag_fg (string, optional) → New foreground color hex.
  • tag.tag_bg (string, optional) → New background color hex.

Output:

{


Removes a tag from the Space and detaches it from all tasks.

Inputs:

  • space_id (string, required) → The ID of the Space.
  • tag_name (string, required) → The name of the tag to delete.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/delete_space_tag
 
{
  "space_id": "90110011"


Attaches an existing Space tag to the specified task.

Inputs:

  • task_id (string, required) → The ID of the task.
  • tag_name (string, required) → The name of the tag to apply.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/add_tag_to_task
 
{
  "task_id": "abc123",


Detaches a tag from the specified task.

Inputs:

  • task_id (string, required) → The ID of the task.
  • tag_name (string, required) → The name of the tag to remove.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/remove_tag_from_task
 
{
  "task_id": "abc123",


Goals

Returns all goals in the Workspace, optionally including completed ones.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • include_completed (boolean, optional) → Include completed goals. Default: false.

Output:

{
  "goals": [
    {
      "id": "goal001",
      "name": "Q2 OKRs",
      "due_date": "1719792000000",






Returns full details for a single goal including key results.

Inputs:

  • goal_id (string, required) → The ID of the goal.

Output:

{
  "goal": {
    "id": "goal001",
    "name": "Q2 OKRs",
    "percent_completed": 45,
    "key_results": [],
    "owners": [{ "id": 1234567 }]
  }
}

Creates a goal with a name, due date, owners, and optional color.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • body (string, required) → JSON string of the goal definition.

Body fields:

  • name (string, required) → Goal name.
  • due_date (integer, required) → Due date as Unix ms timestamp.
  • description (string, optional) → Goal description.
  • multiple_owners (boolean, optional) → Allow multiple owners.
  • owners (array of integers, optional) → List of owner user IDs.
  • color (string, optional) → Goal color hex.

Updates the name, description, due date, or owners of a goal.

Inputs:

  • goal_id (string, required) → The ID of the goal to update.
  • body (string, required) → JSON string of fields to update.

Body fields:

  • name (string, optional) → New goal name.
  • due_date (integer, optional) → New due date (Unix ms).
  • description (string, optional) → Updated description.
  • rem_owners (array of integers, optional) → Owner user IDs to remove.
  • add_owners (array of integers, optional) → Owner user IDs to add.
  • color (string, optional) → Updated color hex.

Permanently deletes a goal.

Inputs:

  • goal_id (string, required) → The ID of the goal to delete.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/delete_goal
 
{
  "goal_id": "goal001"
}

Checklists

Adds a named checklist to the specified task.

Inputs:

  • task_id (string, required) → The ID of the task.
  • body (string, required) → JSON string of the checklist definition.

Body fields:

  • name (string, required) → Checklist name.

Output:

{
  "checklist": {
    "id": "chk001",
    "name": "Pre-launch QA",
    "task_id": "abc123"



Renames a checklist or changes its position.

Inputs:

  • checklist_id (string, required) → The ID of the checklist.
  • body (string, required) → JSON string of fields to update.

Body fields:

  • name (string, optional) → New checklist name.
  • position (integer, optional) → Display position (0-indexed).

Output:

{
  "checklist": {
    "id": "chk001",
    "name": "Pre-launch QA (Final)"


Permanently deletes a checklist and all its items.

Inputs:

  • checklist_id (string, required) → The ID of the checklist to delete.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/delete_checklist
 
{
  "checklist_id": "chk001"
}

Adds a new item to the specified checklist with optional assignee.

Inputs:

  • checklist_id (string, required) → The ID of the checklist.
  • body (string, required) → JSON string of the checklist item.

Body fields:

  • name (string, required) → Item text.
  • assignee (integer, optional) → User ID to assign the item to.

Output:

{
  "checklist": {
    "id": "chk001",
    "items": [




Edits the text, assignee, or resolved state of a checklist item.

Inputs:

  • checklist_id (string, required) → The ID of the checklist.
  • checklist_item_id (string, required) → The ID of the checklist item.
  • body (string, required) → JSON string of fields to update.

Body fields:

  • name (string, optional) → Updated item text.
  • assignee (integer, optional) → Updated assignee user ID.
  • resolved (boolean, optional) → Mark as complete or incomplete.
  • parent (string, optional) → Parent item ID (to nest items).

Output:


Permanently removes an item from a checklist.

Inputs:

  • checklist_id (string, required) → The ID of the checklist.
  • checklist_item_id (string, required) → The ID of the checklist item to delete.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/delete_checklist_item
 
{
  "checklist_id": "chk001"


Custom Fields

Returns all custom fields accessible within the specified List.

Inputs:

  • list_id (string, required) → The ID of the list.

Output:

{
  "fields": [
    {
      "id": "field001",
      "name": "Story Points",
      "type": "number",
      "type_config": { "precision": 0 },
      "required": false



Assigns a value to a specific custom field on a task. The value format depends on the field type.

Inputs:

  • task_id (string, required) → The ID of the task.
  • field_id (string, required) → The ID of the custom field.
  • body (string, required) → JSON string containing the value.

Body fields:

  • value (any, required) → The value to set. Type depends on the field: string for text, integer for number, boolean for checkbox, ISO date string for date fields.

Output:

{
  "success": true
}


Removes the value of a custom field from a task, resetting it to empty.

Inputs:

  • task_id (string, required) → The ID of the task.
  • field_id (string, required) → The ID of the custom field to clear.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/remove_custom_field_value
 
{
  "task_id": 


Views

Returns all views defined at the top level of a Workspace.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).

Output:

{
  "views": [
    { "id": "view001", "name": "All Tasks", "type": "list" },
    { "id": "view002", "name": "Gantt", "type": 


Returns all views defined within the specified Space.

Inputs:

  • space_id (string, required) → The ID of the Space.

Output:

{
  "views": [
    { "id": "view003", "name": "Sprint Board", "type": "board" }
  ]
}

usage Example:


Returns all views defined within the specified Folder.

Inputs:

  • folder_id (string, required) → The ID of the Folder.

Output:

{
  "views": [
    { "id": "view004", "name": "Sprint Timeline", "type": "gantt" }
  ]
}

usage Example:


Returns all views defined within the specified List.

Inputs:

  • list_id (string, required) → The ID of the List.

Output:

{
  "views": [
    { "id": "view005", "name": "Task List", "type": "list" }
  ]
}

usage Example:


Returns full configuration details for a single view.

Inputs:

  • view_id (string, required) → The ID of the view.

Output:

{
  "view": {
    "id": "view001",
    "name": "All Tasks",
    "type": "list",
    "grouping": { "field": "status" },
    "filters": {}
  }
}

Returns the tasks visible in the specified view, with pagination support.

Inputs:

  • view_id (string, required) → The ID of the view.
  • page (integer, optional) → Page number (0-indexed). Default: 0.

Output:

{
  "tasks": [
    { "id": "abc123", "name": "Fix login bug", "status": { "status": "in progress" } }



Webhooks

Returns all registered webhooks for the specified Workspace.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).

Output:

{
  "webhooks": [
    {
      "id": "wh001",
      "endpoint": "https://example.com/webhook",
      "events": ["taskCreated", "taskUpdated"],
      "health": { "status": "active" }



Creates a webhook that fires on specified ClickUp events.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • body (string, required) → JSON string of the webhook definition.

Body fields:

  • endpoint (string, required) → URL to send webhook payloads to.
  • events (array of strings, required) → Events to subscribe to (e.g. taskCreated, taskUpdated, taskDeleted, listCreated, spaceCreated).
  • (integer, optional) → Limit events to a specific Space.

Updates the endpoint URL, event subscriptions, or status of a webhook.

Inputs:

  • webhook_id (string, required) → The ID of the webhook.
  • body (string, required) → JSON string of fields to update.

Body fields:

  • endpoint (string, optional) → New endpoint URL.
  • events (array of strings, optional) → Updated event list.
  • status (string, optional) → active or inactive.

Output:








Permanently removes a webhook registration.

Inputs:

  • webhook_id (string, required) → The ID of the webhook to delete.

Output:

{
  "success": true
}

usage Example:

POST /mcp/clickup/delete_webhook
 
{
  "webhook_id": "wh001"
}

Docs

Searches ClickUp Docs within the specified Workspace by query string.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).
  • query (string, optional) → Search query string.

Output:

{
  "docs": [
    {
      "id": "doc001",
      "name": "Engineering Handbook",
      "date_created": "1717100000000"
    }
  ]
}

Returns all pages within the specified Doc.

Inputs:

  • doc_id (string, required) → The ID of the Doc.

Output:

{
  "pages": [
    { "id": "page001", "name": "Introduction", "date_created": "1717100000000" },
    { "id": "page002", "name": "Setup Guide", "date_created": 


Adds a new page with a title and markdown content to the specified Doc.

Inputs:

  • doc_id (string, required) → The ID of the Doc.
  • body (string, required) → JSON string of the page definition.

Body fields:

  • name (string, required) → Page title.
  • content (string, optional) → Page content in markdown.
  • parent_page_id (string, optional) → Parent page ID for nested pages.

Output:

{
  "id": "page003",



Chat

Returns all chat channels available in the specified Workspace.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).

Output:

{
  "channels": [
    { "id": "ch001", "name": "general" },
    { "id": "ch002", "name": "engineering" }
  ]
}

Sends a message to the specified chat channel.

Inputs:

  • channel_id (string, required) → The ID of the chat channel.
  • body (string, required) → JSON string of the message.

Body fields:

  • content (string, required) → Message text.

Output:

{
  "id": "msg001",
  "content": "Hello team!",
  "date": "1717200000000"
}

Shared Hierarchy

Returns all Spaces, Folders, Lists, and tasks that have been explicitly shared with the authenticated user.

Inputs:

  • team_id (string, required) → The ID of the Workspace (team).

Output:

{
  "shared": {
    "tasks": [{ "id": "abc123", "name": "Fix login bug" }],
    "lists": [{ "id": "56789012", "name": "Backlog" }],
    "folders": []


Common Parameters

  • team_id → ClickUp Workspace (team) identifier. Find yours via get_authorized_teams.
  • page → Zero-indexed page number for paginated responses. Increment to fetch subsequent pages.
  • archived → Pass true to include archived resources alongside active ones.
  • include_closed → Pass true in task queries to include tasks in closed/completed statuses.
  • order_by → Sort tasks by field: id, created, , or .

Credentials are injected server-side via fastmcp-credentials. No tool accepts auth parameters directly — you configure credentials once on the platform and every tool call uses them automatically.

Step 1: Create a ClickUp OAuth App

  1. Log in to ClickUp
  2. Go to Settings → Integrations → ClickUp API
  3. Click Create an App
  4. Enter a name and your redirect URI
  5. Copy the Client ID and Client Secret

Step 2: Authorize and Obtain an Access Token

  1. Direct users to the authorization URL:
    https://app.clickup.com/api?client_id={client_id}&redirect_uri={redirect_uri}
  2. After the user approves, exchange the returned code for an access token:

Missing or Invalid Credential

  • Cause: OAuth access token not injected by the platform or the token is malformed.
  • Solution:
    1. Verify the credential is configured in your Curious Layer account for ClickUp.
    2. Re-authorize the ClickUp integration to obtain a fresh access token.
    3. Check that the platform is passing X-MCP-Cred-Access-Token to the server.

Insufficient Credits

  • Cause: API calls have exceeded your request limits.
  • Solution:
    1. Check credit usage in your Curious Layer dashboard.
    2. Upgrade to a paid plan or add credits for higher limits.
    3. Contact support for credit adjustments.

Malformed Request Payload

  • Cause: The body parameter contains invalid JSON or is missing required fields.
  • Solution:
    1. Validate your JSON string before passing it as body.
    2. Ensure all required fields for the specific operation are included.
    3. Check that numeric values (IDs, timestamps) are not wrapped in quotes where integers are expected.

Resource Not Found (404)


  • ClickUp API Documentation → Official API reference
  • ClickUp Authentication Guide → OAuth setup and token management
  • ClickUp Rate Limits → Request limits and throttling policy
  • FastMCP Docs → FastMCP specification
  • fastmcp-credentials package → Server-side credential injection for FastMCP
POST /mcp/clickup/get_authorized_user
]
}

usage Example:

POST /mcp/clickup/get_authorized_teams
"features"
: {
"due_dates"
: {
"enabled"
:
true
} }
}
]
}

usage Example:

POST /mcp/clickup/get_spaces
 
{
  "team_id": "9876543"
}
"enabled"
:
true
} }
}

usage Example:

POST /mcp/clickup/get_space
 
{
  "space_id": "90110011"
}
{ "id": "90110099", "name": "New Space", "archived": false }

usage Example:

POST /mcp/clickup/create_space
 
{
  "team_id": "9876543",
  "body": "{\"name\": \"New Space\", \"multiple_assignees\": true}"
}
"name"
:
"Engineering (Updated)"
,
"archived": false
}

usage Example:

POST /mcp/clickup/update_space
 
{
  "space_id": "90110011",
  "body": "{\"name\": \"Engineering (Updated)\"}"
}
}

usage Example:

POST /mcp/clickup/get_folders
 
{
  "space_id": "90110011"
}

usage Example:

POST /mcp/clickup/get_folder
 
{
  "folder_id": "78901234"
}

usage Example:

POST /mcp/clickup/create_folder
 
{
  "space_id": "90110011",
  "body": "{\"name\": \"Sprint 2\"}"
}
POST /mcp/clickup/update_folder
 
{
  "folder_id": "78901234",
  "body": "{\"name\": \"Sprint 1 (Completed)\"}"
}
}
]
}

usage Example:

POST /mcp/clickup/get_lists
 
{
  "folder_id": "78901234"
}

usage Example:

POST /mcp/clickup/get_folderless_lists
 
{
  "space_id": "90110011"
}
POST /mcp/clickup/get_list
 
{
  "list_id": "56789012"
}
Output:
{
  "id": "56789099",
  "name": "In Review"
}

usage Example:

POST /mcp/clickup/create_list
 
{
  "folder_id": "78901234",
  "body": "{\"name\": \"In Review\", \"content\": \"Tasks under code review\"}"
}
POST /mcp/clickup/create_folderless_list { "space_id": "90110011", "body": "{\"name\": \"General\"}" }

Output:

{
  "id": "56789012",
  "name": "Backlog (Archived)"
}

usage Example:

POST /mcp/clickup/update_list
 
{
  "list_id": "56789012",
  "body": "{\"name\": \"Backlog (Archived)\"}"
}
created
updated
due_date
  • reverse (boolean, optional) → Reverse the sort order.
  • subtasks (boolean, optional) → Include subtasks.
  • statuses (string, optional) → Comma-separated status names to filter by.
  • assignees (string, optional) → Comma-separated assignee user IDs to filter by.
  • due_date_gt (integer, optional) → Tasks with due date after this Unix ms timestamp.
  • due_date_lt (integer, optional) → Tasks with due date before this Unix ms timestamp.
  • date_created_gt (integer, optional) → Tasks created after this Unix ms timestamp.
  • date_created_lt (integer, optional) → Tasks created before this Unix ms timestamp.
  • date_updated_gt (integer, optional) → Tasks updated after this Unix ms timestamp.
  • date_updated_lt (integer, optional) → Tasks updated before this Unix ms timestamp.
  • Output:

    {
      "tasks": [
        {
          "id": "abc123",
          "name": "Fix login bug",
          "status": { "status": "in progress", "color": "#4169E1" },
          "priority": { "id": "2", "priority": "high" },
          "assignees": [{ "id": 1234567, "username": "jane_doe" }],
          "due_date": "1717200000000"
        }
      ]
    }

    usage Example:

    POST /mcp/clickup/get_tasks
     
    {
      "list_id": "56789012",
      "include_closed": false,
      "order_by": "due_date"
    }
    :
    "Investigate session token expiry"
    ,
    "status": { "status": "in progress" },
    "priority": { "priority": "high" },
    "assignees": [{ "id": 1234567 }],
    "due_date": "1717200000000",
    "tags": [],
    "subtasks": []
    }

    usage Example:

    POST /mcp/clickup/get_task
     
    {
      "task_id": "abc123",
      "include_subtasks": true
    }
  • priority (integer, optional) → Priority level: 1 Urgent, 2 High, 3 Normal, 4 Low.
  • due_date (integer, optional) → Due date as Unix timestamp in ms.
  • due_date_time (boolean, optional) → Whether due_date includes a time component.
  • time_estimate (integer, optional) → Time estimate in milliseconds.
  • start_date (integer, optional) → Start date as Unix timestamp in ms.
  • notify_all (boolean, optional) → Notify all assignees.
  • parent (string, optional) → Parent task ID (to create a subtask).
  • Output:

    {
      "id": "abc999",
      "name": "Implement dark mode",
      "status": { "status": "Open" },
      "priority": { "priority": "normal" },
      "assignees": []
    }

    usage Example:

    POST /mcp/clickup/create_task
     
    {
      "list_id": "56789012",
      "body": "{\"name\": \"Implement dark mode\", \"priority\": 3, \"assignees\": [1234567]}"
    }
    null
  • assignees (object, optional) → {"add": [id], "rem": [id]} to add/remove assignees.
  • archived (boolean, optional) → Archive or unarchive the task.
  • Output:

    {
      "id": "abc123",
      "name": "Fix login bug",
      "status": { "status": "in review" },
      "priority": { "priority": "urgent" }
    }

    usage Example:

    POST /mcp/clickup/update_task
     
    {
      "task_id": "abc123",
      "body": "{\"status\": \"in review\", \"priority\": 1}"
    }
    subtasks
  • space_ids (string, optional) → Comma-separated Space IDs to filter by.
  • project_ids (string, optional) → Comma-separated Folder IDs to filter by.
  • list_ids (string, optional) → Comma-separated List IDs to filter by.
  • statuses (string, optional) → Comma-separated status names to filter by.
  • include_closed (boolean, optional) → Include closed tasks. Default: false.
  • assignees (string, optional) → Comma-separated assignee user IDs to filter by.
  • due_date_gt (integer, optional) → Tasks with due date after this Unix ms timestamp.
  • due_date_lt (integer, optional) → Tasks with due date before this Unix ms timestamp.
  • date_created_gt (integer, optional) → Tasks created after this Unix ms timestamp.
  • date_created_lt (integer, optional) → Tasks created before this Unix ms timestamp.
  • date_updated_gt (integer, optional) → Tasks updated after this Unix ms timestamp.
  • date_updated_lt (integer, optional) → Tasks updated before this Unix ms timestamp.
  • Output:

    {
      "tasks": [
        {
          "id": "abc123",
          "name": "Fix login bug",
          "list": { "id": "56789012", "name": "Backlog" },
          "folder": { "id": "78901234", "name": "Sprint 1" },
          "space": { "id": "90110011" }
        }
      ]
    }

    usage Example:

    POST /mcp/clickup/get_filtered_team_tasks
     
    {
      "team_id": "9876543",
      "statuses": "in progress,in review",
      "assignees": "1234567"
    }
    :
    1234567
    ,
    "username"
    :
    "jane_doe"
    },
    "date": "1717200000000",
    "resolved": false
    }
    ]
    }

    usage Example:

    POST /mcp/clickup/get_task_comments
     
    {
      "task_id": "abc123"
    }
    :
    "55001199"
    ,
    "comment": [{ "text": "Looks good, merging tomorrow." }],
    "date": "1717200000000"
    }

    usage Example:

    POST /mcp/clickup/create_task_comment
     
    {
      "task_id": "abc123",
      "body": "{\"comment_text\": \"Looks good, merging tomorrow.\", \"notify_all\": false}"
    }
    1234567
    },
    "date": "1717100000000"
    }
    ]
    }

    usage Example:

    POST /mcp/clickup/get_list_comments
     
    {
      "list_id": "56789012"
    }
    "text"
    :
    "This list needs triage."
    }],
    "date": "1717100000000"
    }

    usage Example:

    POST /mcp/clickup/create_list_comment
     
    {
      "list_id": "56789012",
      "body": "{\"comment_text\": \"This list needs triage.\"}"
    }

    usage Example:

    POST /mcp/clickup/update_comment
     
    {
      "comment_id": "55001122",
      "body": "{\"resolved\": true}"
    }
    {
      "data": [
        {
          "id": "1234567890",
          "task": { "id": "abc123", "name": "Fix login bug" },
          "duration": "3600000",
          "start": "1717100000000",
          "user": { "id": 1234567 }
        }
      ]
    }

    usage Example:

    POST /mcp/clickup/get_time_entries
     
    {
      "team_id": "9876543",
      "start_date": 1717100000000,
      "end_date": 1717200000000
    }
    "end": "1717103600000"
    }
    }

    usage Example:

    POST /mcp/clickup/get_single_time_entry
     
    {
      "team_id": "9876543",
      "timer_id": "1234567890"
    }
    {
      "data": {
        "id": "9876543210",
        "duration": "3600000",
        "start": "1717100000000"
      }
    }

    usage Example:

    POST /mcp/clickup/create_time_entry
     
    {
      "team_id": "9876543",
      "body": "{\"tid\": \"abc123\", \"start\": 1717100000000, \"duration\": 3600000}"
    }

    Output:

    {
      "data": {
        "id": "1234567890",
        "duration": "7200000"
      }
    }

    usage Example:

    POST /mcp/clickup/update_time_entry
     
    {
      "team_id": "9876543",
      "timer_id": "1234567890",
      "body": "{\"duration\": 7200000}"
    }
    "timer_id"
    :
    "1234567890"
    }
    "9876543211"
    ,
    "start": "1717200000000",
    "task": { "id": "abc123" }
    }
    }

    usage Example:

    POST /mcp/clickup/start_time_entry
     
    {
      "team_id": "9876543",
      "body": "{\"tid\": \"abc123\", \"description\": \"Working on login fix\"}"
    }
    POST /mcp/clickup/stop_time_entry
     
    {
      "team_id": "9876543"
    }

    usage Example:

    POST /mcp/clickup/get_running_time_entry
     
    {
      "team_id": "9876543"
    }
    "jane@example.com"
    ,
    "role"
    :
    2
    } }
    ]
    }
    }

    usage Example:

    POST /mcp/clickup/get_workspace_members
     
    {
      "team_id": "9876543"
    }
    POST /mcp/clickup/get_task_members { "task_id": "abc123" }
    POST /mcp/clickup/get_list_members { "list_id": "56789012" }
    "#4169E1"
    }
    ]
    }

    usage Example:

    POST /mcp/clickup/get_space_tags
     
    {
      "space_id": "90110011"
    }
    { "success": true }

    usage Example:

    POST /mcp/clickup/create_space_tag
     
    {
      "space_id": "90110011",
      "body": "{\"tag\": {\"name\": \"urgent\", \"tag_fg\": \"#FFFFFF\", \"tag_bg\": \"#FF0000\"}}"
    }
    "success": true
    }

    usage Example:

    POST /mcp/clickup/update_space_tag
     
    {
      "space_id": "90110011",
      "tag_name": "urgent",
      "body": "{\"tag\": {\"name\": \"critical\", \"tag_bg\": \"#CC0000\"}}"
    }
    ,
    "tag_name": "critical"
    }
    "tag_name": "bug"
    }
    "tag_name": "bug"
    }
    "description"
    :
    "Quarterly objectives"
    ,
    "percent_completed": 45,
    "owners": [{ "id": 1234567 }]
    }
    ]
    }

    usage Example:

    POST /mcp/clickup/get_goals
     
    {
      "team_id": "9876543",
      "include_completed": false
    }

    usage Example:

    POST /mcp/clickup/get_goal
     
    {
      "goal_id": "goal001"
    }

    Output:

    {
      "goal": {
        "id": "goal002",
        "name": "Q3 OKRs",
        "due_date": "1727740800000"
      }
    }

    usage Example:

    POST /mcp/clickup/create_goal
     
    {
      "team_id": "9876543",
      "body": "{\"name\": \"Q3 OKRs\", \"due_date\": 1727740800000, \"owners\": [1234567]}"
    }

    Output:

    {
      "goal": {
        "id": "goal001",
        "name": "Q2 OKRs (Extended)",
        "percent_completed": 45
      }
    }

    usage Example:

    POST /mcp/clickup/update_goal
     
    {
      "goal_id": "goal001",
      "body": "{\"name\": \"Q2 OKRs (Extended)\"}"
    }
    ,
    "items": []
    }
    }

    usage Example:

    POST /mcp/clickup/create_checklist
     
    {
      "task_id": "abc123",
      "body": "{\"name\": \"Pre-launch QA\"}"
    }
    }
    }

    usage Example:

    POST /mcp/clickup/update_checklist
     
    {
      "checklist_id": "chk001",
      "body": "{\"name\": \"Pre-launch QA (Final)\"}"
    }
    { "id": "item001", "name": "Smoke test all pages", "resolved": false }
    ]
    }
    }

    usage Example:

    POST /mcp/clickup/create_checklist_item
     
    {
      "checklist_id": "chk001",
      "body": "{\"name\": \"Smoke test all pages\", \"assignee\": 1234567}"
    }
    {
      "checklist": {
        "id": "chk001",
        "items": [
          { "id": "item001", "name": "Smoke test all pages", "resolved": true }
        ]
      }
    }

    usage Example:

    POST /mcp/clickup/update_checklist_item
     
    {
      "checklist_id": "chk001",
      "checklist_item_id": "item001",
      "body": "{\"resolved\": true}"
    }
    ,
    "checklist_item_id": "item001"
    }
    }
    ]
    }

    usage Example:

    POST /mcp/clickup/get_accessible_custom_fields
     
    {
      "list_id": "56789012"
    }
    usage Example:
    POST /mcp/clickup/set_custom_field_value
     
    {
      "task_id": "abc123",
      "field_id": "field001",
      "body": "{\"value\": 8}"
    }
    "abc123"
    ,
    "field_id": "field001"
    }
    "gantt"
    }
    ]
    }

    usage Example:

    POST /mcp/clickup/get_team_views
     
    {
      "team_id": "9876543"
    }
    POST /mcp/clickup/get_space_views { "space_id": "90110011" }
    POST /mcp/clickup/get_folder_views { "folder_id": "78901234" }
    POST /mcp/clickup/get_list_views { "list_id": "56789012" }

    usage Example:

    POST /mcp/clickup/get_view
     
    {
      "view_id": "view001"
    }
    ],
    "last_page": false
    }

    usage Example:

    POST /mcp/clickup/get_view_tasks
     
    {
      "view_id": "view001",
      "page": 0
    }
    }
    ]
    }

    usage Example:

    POST /mcp/clickup/get_webhooks
     
    {
      "team_id": "9876543"
    }
    space_id
  • folder_id (integer, optional) → Limit events to a specific Folder.
  • list_id (integer, optional) → Limit events to a specific List.
  • task_id (string, optional) → Limit events to a specific task.
  • Output:

    {
      "id": "wh002",
      "webhook": {
        "id": "wh002",
        "endpoint": "https://example.com/webhook",
        "events": ["taskCreated"]
      }
    }

    usage Example:

    POST /mcp/clickup/create_webhook
     
    {
      "team_id": "9876543",
      "body": "{\"endpoint\": \"https://example.com/webhook\", \"events\": [\"taskCreated\", \"taskUpdated\"]}"
    }
    {
    "webhook": {
    "id": "wh001",
    "endpoint": "https://example.com/new-webhook",
    "status": "active"
    }
    }

    usage Example:

    POST /mcp/clickup/update_webhook
     
    {
      "webhook_id": "wh001",
      "body": "{\"endpoint\": \"https://example.com/new-webhook\"}"
    }

    usage Example:

    POST /mcp/clickup/search_docs
     
    {
      "team_id": "9876543",
      "query": "onboarding"
    }
    "1717110000000"
    }
    ]
    }

    usage Example:

    POST /mcp/clickup/get_doc_pages
     
    {
      "doc_id": "doc001"
    }
    "name"
    :
    "API Reference"
    ,
    "date_created": "1717200000000"
    }

    usage Example:

    POST /mcp/clickup/create_doc_page
     
    {
      "doc_id": "doc001",
      "body": "{\"name\": \"API Reference\", \"content\": \"## Endpoints\\n...\"}"
    }

    usage Example:

    POST /mcp/clickup/get_chat_channels
     
    {
      "team_id": "9876543"
    }

    usage Example:

    POST /mcp/clickup/send_chat_message
     
    {
      "channel_id": "ch001",
      "body": "{\"content\": \"Hello team!\"}"
    }
    }
    }

    usage Example:

    POST /mcp/clickup/get_shared_hierarchy
     
    {
      "team_id": "9876543"
    }
    updated
    due_date
  • reverse → Pass true to reverse the sort direction of order_by.
  • Priority Levels

    ValuePriority
    1Urgent
    2High
    3Normal
    4Low

    Timestamps

    All date/time values use Unix milliseconds (epoch × 1000).

    example: 1717200000000 → 2024-06-01 00:00:00 UTC

    ID Formats

    Workspace (team):

    format: numeric string
    Example: "9876543"

    space / Folder / List:

    format: numeric string
    Example: "90110011"

    task:

    format: alphanumeric string
    Example: "abc123"

    comment / Time Entry:

    format: numeric string
    Example: "1234567890"

    Webhook Events

    EventDescription
    taskCreatedA task was created
    taskUpdatedA task field was changed
    taskDeletedA task was deleted
    taskCommentPostedA comment was added to a task
    taskStatusUpdatedA task's status changed
    listCreatedA list was created
    listUpdatedA list was updated
    listDeletedA list was deleted
    folderCreatedA folder was created
    folderUpdatedA folder was updated
    folderDeletedA folder was deleted
    spaceCreatedA space was created
    spaceUpdatedA space was updated
    spaceDeletedA space was deleted
    POST https://api.clickup.com/api/v2/oauth/token Content-Type: application/json { "client_id": "YOUR_CLIENT_ID", "client_secret": "YOUR_CLIENT_SECRET", "code": "AUTHORIZATION_CODE" }
  • The response contains the access_token to use for all API calls.
  • Step 3: Configure on the Platform

    Provide the access token to the Curious Layer platform. It will be injected into every tool call via the X-MCP-Cred-Access-Token header — no token is ever passed as a tool parameter.

    Required Scopes

    ClickUp's OAuth does not use granular scopes. An authorized token grants access to all Workspaces and resources the user has permission to see within their account.

    Refer to the ClickUp Authentication Guide for detailed steps.

    • Cause: An ID refers to a resource that does not exist, has been deleted, or belongs to a different Workspace.
    • Solution:
      1. Verify the ID using the corresponding get_* or get_authorized_teams tool.
      2. Confirm the resource belongs to the Workspace associated with the authenticated token.
      3. Check whether the resource was archived (use archived: true to surface it).

    Authentication Token Invalid or Expired

    • Cause: ClickUp rejected the access token.
    • Solution:
      1. Re-authorize the ClickUp integration on the Curious Layer platform.
      2. Verify the token has not been revoked in ClickUp Settings → Integrations.
      3. Obtain a fresh token via the OAuth flow and update the platform credential.

    Rate Limit Exceeded (429)

    • Cause: Too many requests in a short period.
    • Solution:
      1. Reduce the frequency of API calls.
      2. Add delays between bulk operations.
      3. Refer to ClickUp Rate Limits for current limits.