{"_id":"clickup-cli-js","_rev":"6-693a3c4ad1a7d4bfaf78121317ffeadb","name":"clickup-cli-js","dist-tags":{"latest":"0.8.0"},"versions":{"0.1.0":{"name":"clickup-cli-js","version":"0.1.0","keywords":["clickup","cli","api","ai-agents","mcp","productivity"],"author":"","license":"Apache-2.0","_id":"clickup-cli-js@0.1.0","maintainers":[{"name":"ananthukanive","email":"ananthu.kanive6@gmail.com"}],"bin":{"clkup-js":"bin/clkup-js.js","clickup-cli-js":"bin/clickup-cli-js.js"},"dist":{"shasum":"f1a42d3d1fe569bd7e91123c81d69d503ed34e8d","tarball":"https://registry.npmjs.org/clickup-cli-js/-/clickup-cli-js-0.1.0.tgz","fileCount":7,"integrity":"sha512-z63UQgkP2Jy4CYJSUQeRoz/jYGZ7AEmNHoQJQfTgQBXkPAVPNRw5MXJeUZjCTUbAkSZ3/wEX2HV5LZTAHCexLA==","signatures":[{"sig":"MEQCIC8Iw/ZZpIOx7ttTYvHuXXDWwmVjpMIOfyEDz+tD4EZGAiBBbsTdhfMTuLoeiPnyz+8TCIWSY+mITA924S4+I0SG2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":543530},"main":"dist/main.js","type":"module","types":"dist/main.d.ts","engines":{"node":">=18"},"gitHead":"0abe72c246ef43e7e041dfceec30cc865915a255","scripts":{"dev":"tsup --watch","lint":"biome check src tests","test":"vitest run","build":"tsup","format":"biome format --write src tests","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"ananthukanive","email":"ananthu.kanive6@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.12.1","description":"CLI for the ClickUp API, optimized for AI agents (TypeScript port)","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ora":"^8.0.0","boxen":"^8.0.0","chalk":"^5.0.0","figures":"^6.0.0","commander":"^12.0.0","env-paths":"^3.0.0","cli-table3":"^0.6.0","update-notifier":"^7.0.0","@inquirer/prompts":"^7.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nock":"^13.0.0","tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@biomejs/biome":"^1.9.0","@types/update-notifier":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/clickup-cli-js_0.1.0_1784615747948_0.8790800280040516","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"clickup-cli-js","version":"0.4.0","keywords":["clickup","cli","api","ai-agents","mcp","productivity"],"author":"","license":"Apache-2.0","_id":"clickup-cli-js@0.4.0","maintainers":[{"name":"ananthukanive","email":"ananthu.kanive6@gmail.com"}],"homepage":"https://github.com/LonelyCpp/clickup-cli-js#readme","bugs":{"url":"https://github.com/LonelyCpp/clickup-cli-js/issues"},"bin":{"clkup-js":"bin/clkup-js.js","clickup-cli-js":"bin/clickup-cli-js.js"},"dist":{"shasum":"131cbe1be751e63ec63c25230680b5a6e7ff6a55","tarball":"https://registry.npmjs.org/clickup-cli-js/-/clickup-cli-js-0.4.0.tgz","fileCount":7,"integrity":"sha512-T3/XK7PePRgVW1BSTAyEOxDMw2ppGlaaCzeHbQPSpc1JXX9CTWqJMxINe3ttfImv+8QgZgHfSeHXoZzTLFOAbg==","signatures":[{"sig":"MEQCIDyoZ49bkn0/h/mJqLjV17omxHt0Mu/9YmLduaZ57R2IAiAF2FEOTRa2hg4IDw/CURdqkYhrhiDC2l8BgHem8Ti7AQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clickup-cli-js@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":543581},"main":"dist/main.js","type":"module","types":"dist/main.d.ts","engines":{"node":">=18"},"gitHead":"62cc6ff9d6d57720c6514a537e1f38cfd732109c","scripts":{"dev":"tsup --watch","lint":"biome check src tests","test":"vitest run","build":"tsup","format":"biome format --write src tests","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06e1a686-7296-4813-a4a3-86c5d1c281b2"}},"repository":{"url":"git+https://github.com/LonelyCpp/clickup-cli-js.git","type":"git"},"_npmVersion":"11.16.0","description":"CLI for the ClickUp API, optimized for AI agents (TypeScript port)","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ora":"^8.0.0","boxen":"^8.0.0","chalk":"^5.0.0","figures":"^6.0.0","commander":"^12.0.0","env-paths":"^3.0.0","cli-table3":"^0.6.0","update-notifier":"^7.0.0","@inquirer/prompts":"^7.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nock":"^13.0.0","tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@biomejs/biome":"^1.9.0","@types/update-notifier":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/clickup-cli-js_0.4.0_1784618400438_0.7207294714913874","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"clickup-cli-js","version":"0.5.0","keywords":["clickup","cli","api","ai-agents","mcp","productivity"],"author":"","license":"Apache-2.0","_id":"clickup-cli-js@0.5.0","maintainers":[{"name":"ananthukanive","email":"ananthu.kanive6@gmail.com"}],"homepage":"https://github.com/LonelyCpp/clickup-cli-js#readme","bugs":{"url":"https://github.com/LonelyCpp/clickup-cli-js/issues"},"bin":{"clkup-js":"bin/clkup-js.js","clickup-cli-js":"bin/clickup-cli-js.js"},"dist":{"shasum":"e86d1019c3b283ba8da895fabd662161c764e954","tarball":"https://registry.npmjs.org/clickup-cli-js/-/clickup-cli-js-0.5.0.tgz","fileCount":7,"integrity":"sha512-gpRlYMBWL4NsJ33eHYup5ZxOIt+d6Kujkqpis2TGamxYgJQ2L0SAVP/LuIVk146VjrMoEsFDb3gy8SteiRTj7Q==","signatures":[{"sig":"MEUCIQCkgp6gG8Kc6ASYyBdHefMIDGQ9CxK+zhzDwthO1RXXmgIgVJfv+vMbbNQ8fFlCLI/fdrB3QtvxKTGUnd0EijPSBus=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clickup-cli-js@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":544313},"main":"dist/main.js","type":"module","types":"dist/main.d.ts","engines":{"node":">=18"},"gitHead":"2e78e4c83e695215abf401cdeb72a7ecc913e986","scripts":{"dev":"tsup --watch","lint":"biome check src tests","test":"vitest run","build":"tsup","format":"biome format --write src tests","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06e1a686-7296-4813-a4a3-86c5d1c281b2"}},"repository":{"url":"git+https://github.com/LonelyCpp/clickup-cli-js.git","type":"git"},"_npmVersion":"11.16.0","description":"CLI for the ClickUp API, optimized for AI agents (TypeScript port)","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ora":"^8.0.0","boxen":"^8.0.0","chalk":"^5.0.0","figures":"^6.0.0","commander":"^12.0.0","env-paths":"^3.0.0","cli-table3":"^0.6.0","update-notifier":"^7.0.0","@inquirer/prompts":"^7.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nock":"^13.0.0","tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@biomejs/biome":"^1.9.0","@types/update-notifier":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/clickup-cli-js_0.5.0_1784620875833_0.015089583142355645","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"clickup-cli-js","version":"0.6.0","keywords":["clickup","cli","api","ai-agents","mcp","productivity"],"author":"","license":"Apache-2.0","_id":"clickup-cli-js@0.6.0","maintainers":[{"name":"ananthukanive","email":"ananthu.kanive6@gmail.com"}],"homepage":"https://github.com/LonelyCpp/clickup-cli-js#readme","bugs":{"url":"https://github.com/LonelyCpp/clickup-cli-js/issues"},"bin":{"clkup-js":"bin/clkup-js.js","clickup-cli-js":"bin/clickup-cli-js.js"},"dist":{"shasum":"be983e6d5f2aaa45cf6a7fa3d8a6bd97984d0885","tarball":"https://registry.npmjs.org/clickup-cli-js/-/clickup-cli-js-0.6.0.tgz","fileCount":7,"integrity":"sha512-GSbcIq7SA6Y9KI7ELSd3lfRF9q5Pq0gaH8t7M/FPgaBEon0JSeoFDfh2BimHD5u3yjbEU0d4yUCBAxgYTyv5cA==","signatures":[{"sig":"MEQCIHpKJPi4vy/l01m3wWGdTVrQI6qbciaacfozzZu2yPz9AiBpbNw6cmNb9+IMEGq+4Ku1RqAcTboe6vHwS+i1vWLipw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clickup-cli-js@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":558691},"main":"dist/main.js","type":"module","types":"dist/main.d.ts","engines":{"node":">=18"},"gitHead":"1f343d9f8b6ff32cc744bd2c5c00c8a9d7c968a0","scripts":{"dev":"tsup --watch","lint":"biome check src tests","test":"vitest run","build":"tsup","format":"biome format --write src tests","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06e1a686-7296-4813-a4a3-86c5d1c281b2"}},"repository":{"url":"git+https://github.com/LonelyCpp/clickup-cli-js.git","type":"git"},"_npmVersion":"11.16.0","description":"CLI for the ClickUp API, optimized for AI agents (TypeScript port)","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ora":"^8.0.0","boxen":"^8.0.0","chalk":"^5.0.0","figures":"^6.0.0","commander":"^12.0.0","env-paths":"^3.0.0","cli-table3":"^0.6.0","update-notifier":"^7.0.0","@inquirer/prompts":"^7.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nock":"^13.0.0","tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@biomejs/biome":"^1.9.0","@types/update-notifier":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/clickup-cli-js_0.6.0_1784640022439_0.787567593164056","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"clickup-cli-js","version":"0.7.0","keywords":["clickup","cli","api","ai-agents","mcp","productivity"],"author":"","license":"Apache-2.0","_id":"clickup-cli-js@0.7.0","maintainers":[{"name":"ananthukanive","email":"ananthu.kanive6@gmail.com"}],"homepage":"https://github.com/LonelyCpp/clickup-cli-js#readme","bugs":{"url":"https://github.com/LonelyCpp/clickup-cli-js/issues"},"bin":{"clkup-js":"bin/clkup-js.js","clickup-cli-js":"bin/clickup-cli-js.js"},"dist":{"shasum":"1e609022321ce31e99ebe2f4a2e69f56b6dc3587","tarball":"https://registry.npmjs.org/clickup-cli-js/-/clickup-cli-js-0.7.0.tgz","fileCount":7,"integrity":"sha512-hYAeCEipJgV4CkKYx3tSr2A8vAmrJgZPUmPIpcLn3skawFdTAwAG0vde8K4T4qflHSLStn12Klh5+tN/CMmLiA==","signatures":[{"sig":"MEUCICvb8GTmb6zYF9Lpv8yltQkM69pgq/Cfa3aBmZr485OmAiEAi42Yr0ig+L0/ml8VV3VO4TMjBfdr+x2ITxY+y93S51Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clickup-cli-js@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":566367},"main":"dist/main.js","type":"module","types":"dist/main.d.ts","engines":{"node":">=18"},"gitHead":"1eda836071ae1dd0db75c98c9a537376439c89e2","scripts":{"dev":"tsup --watch","lint":"biome check src tests","test":"vitest run","build":"tsup","format":"biome format --write src tests","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06e1a686-7296-4813-a4a3-86c5d1c281b2"}},"repository":{"url":"git+https://github.com/LonelyCpp/clickup-cli-js.git","type":"git"},"_npmVersion":"11.16.0","description":"CLI for the ClickUp API, optimized for AI agents (TypeScript port)","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ora":"^8.0.0","boxen":"^8.0.0","chalk":"^5.0.0","figures":"^6.0.0","commander":"^12.0.0","env-paths":"^3.0.0","cli-table3":"^0.6.0","update-notifier":"^7.0.0","@inquirer/prompts":"^7.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nock":"^13.0.0","tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@biomejs/biome":"^1.9.0","@types/update-notifier":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/clickup-cli-js_0.7.0_1784641394975_0.48543103910087915","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"_id":"clickup-cli-js@0.8.0","bin":{"clkup-js":"bin/clkup-js.js","clickup-cli-js":"bin/clickup-cli-js.js"},"bugs":{"url":"https://github.com/LonelyCpp/clickup-cli-js/issues"},"dist":{"shasum":"d16793b8258b1a2f30ce58e2b1ab04bea89bc9ea","tarball":"https://registry.npmjs.org/clickup-cli-js/-/clickup-cli-js-0.8.0.tgz","fileCount":10,"integrity":"sha512-nCzHaMtNL36SRlXOYanvCXo1mHqWjFLvg3guCV4eUMANw3RRem/KJX7VMFOOzv+UR8yhKu6gT3LIvcFAwUC7Uw==","signatures":[{"sig":"MEQCIGVrg5WqP8PfS4lmrteKU97BcCI6WaK1QyFErAFKYdiYAiB3nuLn9xbKo5xQpqiEQny1lc+SnChBpszIhL8MS2WCpA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICHL+VtgPdL+KBcbfRVLlk0EZWsBIFD4N6oH1GHs26crAiBspuPX/tY4rMgVaei1ox0TVtHsO/tcZek98i6ICkdUug=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clickup-cli-js@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":604275},"main":"./dist/index.js","name":"clickup-cli-js","type":"module","types":"./dist/index.d.ts","author":"","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/main.d.ts","import":"./dist/main.js"},"./package.json":"./package.json"},"gitHead":"428c8226af98e493abc7d42b0291ad318512dfff","license":"Apache-2.0","scripts":{"dev":"tsup --watch","lint":"biome check src tests","test":"vitest run","build":"tsup","format":"biome format --write src tests","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"version":"0.8.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:06e1a686-7296-4813-a4a3-86c5d1c281b2"}},"homepage":"https://github.com/LonelyCpp/clickup-cli-js#readme","keywords":["clickup","cli","api","ai-agents","mcp","productivity"],"repository":{"url":"git+https://github.com/LonelyCpp/clickup-cli-js.git","type":"git"},"_npmVersion":"11.17.0","description":"CLI for the ClickUp API, optimized for AI agents (TypeScript port)","directories":{},"maintainers":[{"name":"ananthukanive","email":"ananthu.kanive6@gmail.com"}],"_nodeVersion":"24.19.0","dependencies":{"ora":"^8.0.0","boxen":"^8.0.0","chalk":"^5.0.0","figures":"^6.0.0","commander":"^12.0.0","env-paths":"^3.0.0","cli-table3":"^0.6.0","update-notifier":"^7.0.0","@inquirer/prompts":"^7.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"nock":"^13.0.0","tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@biomejs/biome":"^1.9.0","@types/update-notifier":"^6.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/clickup-cli-js_0.8.0_1787336261479_0.8752416341641591"}}},"time":{"created":"2026-07-21T06:35:47.906Z","modified":"2026-08-21T18:17:41.926Z","0.1.0":"2026-07-21T06:35:48.098Z","0.4.0":"2026-07-21T07:20:00.584Z","0.5.0":"2026-07-21T08:01:15.970Z","0.6.0":"2026-07-21T13:20:22.619Z","0.7.0":"2026-07-21T13:43:15.115Z","0.8.0":"2026-08-21T18:17:41.581Z"},"bugs":{"url":"https://github.com/LonelyCpp/clickup-cli-js/issues"},"license":"Apache-2.0","homepage":"https://github.com/LonelyCpp/clickup-cli-js#readme","keywords":["clickup","cli","api","ai-agents","mcp","productivity"],"repository":{"url":"git+https://github.com/LonelyCpp/clickup-cli-js.git","type":"git"},"description":"CLI for the ClickUp API, optimized for AI agents (TypeScript port)","maintainers":[{"name":"ananthukanive","email":"ananthu.kanive6@gmail.com"}],"readme":"# clickup-cli-js\n\nA CLI for the [ClickUp API](https://developer.clickup.com/reference), optimized for AI agents.\n\n## Why?\n\nClickUp's API responses are massive — easily 12,000+ tokens for 5 tasks. This CLI flattens nested objects, selects essential fields, and renders compact output. ~98% token reduction vs raw JSON.\n\n**Improvements over the original:**\n- **Type-preserving compact JSON** — numbers stay numbers (`priority: 3`), booleans stay booleans (`active: true`), not stringified\n- **`--max-chars`** — truncate long text values to cap token cost (default 60, `0`=off)\n- **`--output compact`** — pipe-delimited rows, no alignment padding (~20-35% smaller than tables)\n- **`--summary`** — aggregate summary instead of rows (`12 tasks: 4 Open, 6 In Progress | overdue: 3`)\n- **`count`** — just the number (`task count --list X --status \"in progress\"` → `4`)\n- **`--max-tokens`** — soft token budget cap with truncation footer\n\n## Install\n\n```bash\nnpm install -g clickup-cli-js\n```\n\nRequires Node.js 18+.\n\n## Node.js SDK\n\nThe package also provides a side-effect-free ESM API for calling ClickUp from a\nNode.js or TypeScript application. Importing it does not start the CLI or parse\nyour application's command-line arguments.\n\n```ts\nimport { ClickUpClient, ClickUpError } from 'clickup-cli-js';\n\ninterface Task {\n  id: string;\n  name: string;\n  status: { status: string };\n}\n\nconst clickup = new ClickUpClient({\n  token: process.env.CLICKUP_TOKEN!,\n  timeoutSecs: 30,\n});\n\ntry {\n  const task = await clickup.get<Task>('/v2/task/TASK_ID');\n  console.log(task.name);\n} catch (error) {\n  if (error instanceof ClickUpError) {\n    console.error(error.kind, error.status, error.message);\n  }\n}\n```\n\nThe SDK exposes generic `get`, `post`, `put`, `patch`, `delete`,\n`deleteWithBody`, and `uploadFile` methods. Paths are relative to\n`https://api.clickup.com/api`; for example, use `/v2/user`. The original\n`new ClickUpClient(token, timeoutSecs)` constructor remains supported.\n\n## Quick Start\n\n```bash\n# Configure your API token (interactive)\nclickup-cli-js setup\n\n# Or non-interactive\nclickup-cli-js setup --token pk_your_token_here\n\n# Verify\nclickup-cli-js auth whoami\n\n# Show current config\nclickup-cli-js status\n```\n\n## Usage\n\n```bash\n# Hierarchy navigation\nclickup-cli-js workspace list\nclickup-cli-js space list\nclickup-cli-js folder list --space 12345\nclickup-cli-js list list --folder 67890\n\n# Task management\nclickup-cli-js task list --list 12345\nclickup-cli-js task create --list 12345 --name \"My Task\" --priority 3\nclickup-cli-js task get abc123\nclickup-cli-js task update abc123 --status \"in progress\"\nclickup-cli-js task search --status \"in progress\" --assignee 44106202\nclickup-cli-js task batch-update abc123 def456 --add-tag urgent --remove-tag stale\n\n# Token-efficient modes\nclickup-cli-js task list --list 12345 --output compact\nclickup-cli-js task list --list 12345 --output brief\nclickup-cli-js task list --list 12345 --summary\nclickup-cli-js task count --list 12345 --status \"in progress\"\nclickup-cli-js task list --list 12345 --max-tokens 200\nclickup-cli-js task list --list 12345 --all --output-file /tmp/tasks.json\n\n# Auto-detect task ID from git branch\nclickup-cli-js task get          # resolves abc123 from feat/CU-abc123-foo\nclickup-cli-js task update --status \"in progress\"\n\n# Comments and collaboration\nclickup-cli-js comment list --task abc123\nclickup-cli-js comment create --task abc123 --text \"Looking good!\"\nclickup-cli-js tag list --space 12345\nclickup-cli-js field list --list 12345\nclickup-cli-js field create --list 12345 --name \"Release Version\" --type short_text\nclickup-cli-js field ensure \"Priority\" abc123 --value \"High\"\n\n# Time tracking\nclickup-cli-js time start --task abc123 --description \"Working on feature\"\nclickup-cli-js time stop\nclickup-cli-js time list --start-date 2026-03-01 --end-date 2026-03-31\n\n# Views\nclickup-cli-js view list --space 12345\nclickup-cli-js view tasks VIEW_ID\n```\n\n## Output Modes\n\n| Flag | Description |\n|------|-------------|\n| *(default)* | Aligned table with essential fields |\n| `--output compact` | Pipe-delimited rows, no padding (agent-friendly) |\n| `--output json` | Full API response, or filtered to `--fields` (raw values) if given |\n| `--output json-compact` | Identical data to `json` (respects `--fields` the same way), minified instead of pretty-printed |\n| `--output brief` | Flattened, lightweight JSON: `id, name, status, tags, assignees, description` by default (override with `--fields`) — no raw `custom_fields` or user objects |\n| `--output csv` | CSV format |\n| `-q` / `--quiet` | IDs only, one per line |\n\n## Token-Efficiency Features\n\n### `--fields` restricts JSON too\n\n`--fields` used to only trim table/compact/csv columns. It now restricts `json`/`json-compact`/`brief` output the same way — with no `--fields`, `json`/`json-compact` return the full raw item; with `--fields`, they return just those fields (raw values, custom fields resolved by name/UUID same as other modes):\n\n```bash\nclickup-cli-js task get abc123 --output json --fields id,name,status\n# [{\"id\": \"abc123\", \"name\": \"Fix bug\", \"status\": {\"status\": \"in progress\", \"color\": \"#d3d3d3\"}}]\n```\n\n### `json` and `json-compact` return identical data\n\nThey're now the same data, just formatted differently — `json` is pretty-printed, `json-compact` is minified. Pipe either through `jq` or `JSON.parse` and you get the same structure back.\n\n### Type-preserving compact JSON (`--output brief` + MCP)\n\nNumbers and booleans stay native JSON types, not quoted strings, and nested objects/arrays are flattened to plain names — no raw `custom_fields` definitions or user objects:\n\n```bash\nclickup-cli-js task list --list 123 --output brief\n# [{\"id\": \"abc\", \"name\": \"Fix bug\", \"status\": \"in progress\", \"tags\": \"bug, urgent\", \"assignees\": \"alice, bob\", \"description\": \"...\"}]\n```\n\nvs the original which stringified everything:\n\n```json\n[{\"id\": \"abc\", \"priority\": \"3\", \"active\": \"true\", \"name\": \"Fix bug\"}]\n```\n\n### `--output-file <path>`\n\nWrites the full response to a file instead of stdout, so large listings survive a terminal or calling tool that truncates output. Stdout gets a short notice instead of the full data:\n\n```bash\nclickup-cli-js task list --list 123 --all --output-file /tmp/tasks.json\n# {\"output_file\":\"/tmp/tasks.json\",\"count\":842,\"bytes\":193021}\n```\n\n### Pagination metadata\n\nIf more results exist beyond what was fetched (because `--all` wasn't passed, or the 100-page safety cap was hit), an extra note is printed after the results:\n\n```bash\nclickup-cli-js task list --list 123\n# ...rows...\n# Note: more results available. Pass --all to fetch everything.\n```\n\nIn `json`/`json-compact`/`brief` modes the same information is a trailing JSON line: `{\"pagination\":{\"has_more\":true,\"hint\":\"...\"}}`.\n\n### `--max-chars N` (default 60)\n\nTruncates long text values with `…`:\n\n```bash\nclickup-cli-js task list --list 123 --max-chars 30   # truncate to 30 chars\nclickup-cli-js task list --list 123 --max-chars 0    # no truncation\n```\n\n### `--output compact`\n\nPipe-delimited rows without alignment padding:\n\n```\nid|name|status|priority|assignees|due_date\nabc123|Fix bug|Open|3|alice, bob|2026-03-17\n```\n\n### `--summary`\n\nAggregate summary instead of rows:\n\n```bash\nclickup-cli-js task list --list 123 --summary\n# 12 tasks: 4 Open, 6 In Progress, 2 Done | overdue: 3 | assignees: alice(5), bob(4), unassigned(3)\n```\n\n### `count`\n\nJust the number:\n\n```bash\nclickup-cli-js task count --list 123 --status \"in progress\"\n# 4\n```\n\n### `--max-tokens N`\n\nSoft token budget — returns rows that fit + a truncation footer:\n\n```bash\nclickup-cli-js task list --list 123 --max-tokens 200\n# ...rows...\n# {\"truncated\":true,\"shown\":15,\"total\":87}\n```\n\n## Command Groups\n\n| Group | Commands |\n|-------|----------|\n| `setup` | Configure token and workspace |\n| `auth` | whoami, check |\n| `workspace` | list, seats, plan |\n| `space` | list, get, create, update, delete |\n| `folder` | list, get, create, update, delete |\n| `list` | list, get, create, update, delete, add-task, remove-task |\n| `task` | list, search, get, create, update, delete, time-in-status, add-tag, remove-tag, add-dep, remove-dep, link, unlink, move, set-estimate, replace-estimates, count, batch-update |\n| `comment` | list, create, update, delete, replies, reply |\n| `tag` | list, create, update, delete |\n| `field` | list, create, set, unset, ensure |\n| `time` | list, get, current, create, update, delete, start, stop, tags, add-tags, remove-tags, rename-tag, history |\n| `view` | list, get, create, update, delete, tasks |\n| `member` | list |\n| `user` | invite, get, update, remove (Enterprise) |\n| `status` | Show current config |\n| `mcp` | serve — MCP server for LLM tool integration |\n\n## Global Flags\n\n| Flag | Description |\n|------|-------------|\n| `--token TOKEN` | Override config file token |\n| `--workspace ID` | Override default workspace |\n| `--output MODE` | table, compact, json, json-compact, csv, brief |\n| `--fields LIST` | Comma-separated field names (restricts JSON output too) |\n| `--output-file PATH` | Write full response to a file; stdout gets a short notice |\n| `--no-header` | Omit table header row |\n| `--all` | Fetch all pages |\n| `--limit N` | Cap total results |\n| `--page N` | Manual page (v2 page-based) |\n| `--cursor X` | Manual cursor (v3 cursor-based) |\n| `--start MS` + `--start-id ID` | Boundary pair (v2 comment endpoints) |\n| `-q` / `--quiet` | IDs only |\n| `--timeout SECS` | HTTP timeout (default 30) |\n| `--max-chars N` | Max chars per text value (default 60, 0=off) |\n| `--max-tokens N` | Soft token budget cap |\n\n## Auto-detect Task ID from Git Branch\n\nWhen a task-scoped command runs without an explicit ID, the CLI resolves the ID from the current git branch:\n\n- `feat/CU-abc123-foo` → `abc123`\n- `PROJ-42-add-login` → `PROJ-42` (custom task ID, auto-injects `custom_task_ids=true&team_id=<ws>`)\n\nResolution order: explicit arg → `CLICKUP_TASK_ID` env var → git branch.\n\nDestructive commands (`task delete`, `task link`, `task unlink`) never auto-detect — pass the ID explicitly.\n\nDisable with `CLICKUP_GIT_DETECT=0` env var.\n\n## Destructive Confirmations\n\nDelete operations (`task delete`, `space delete`, `folder delete`, `list delete`, `comment delete`, `tag delete`, `time delete`, `view delete`, `user remove`) require confirmation:\n\n- **Interactive (TTY)**: prompts with `@inquirer/prompts` confirm\n- **Non-interactive (CI/non-TTY)**: refuses unless `--yes` is passed\n\n```bash\nclickup-cli-js task delete abc123 --yes   # skip confirmation\n```\n\n## MCP Server\n\nThe CLI includes an MCP (Model Context Protocol) server for LLM tool integration:\n\n```bash\nclickup-cli-js mcp serve\n```\n\nExposes 62 tools covering all implemented ClickUp API endpoints. Responses use type-preserving compact JSON for token efficiency.\n\nAdd to your MCP client config (e.g., `.mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"clickup\": {\n      \"command\": \"clickup-cli-js\",\n      \"args\": [\"mcp\", \"serve\"]\n    }\n  }\n}\n```\n\n### Limiting MCP Tools\n\n```bash\nclickup-cli-js mcp serve --read-only\nclickup-cli-js mcp serve --groups task,comment,time\nclickup-cli-js mcp serve --profile safe\nclickup-cli-js mcp serve --exclude-tools clickup_task_delete\n```\n\nOr via environment variables: `CLICKUP_MCP_PROFILE`, `CLICKUP_MCP_READ_ONLY`, `CLICKUP_MCP_GROUPS`, `CLICKUP_MCP_EXCLUDE_GROUPS`, `CLICKUP_MCP_TOOLS`, `CLICKUP_MCP_EXCLUDE_TOOLS`.\n\n## Configuration\n\n### Config Files\n\n| Level | File |\n|-------|------|\n| **Project** | `.clickup.json` (current directory, walks up) |\n| **Global** | `~/.config/clickup-cli/config.json` (Linux) or `~/Library/Preferences/clickup-cli/config.json` (macOS) |\n\n```json\n{\n  \"auth\": { \"token\": \"pk_...\" },\n  \"defaults\": { \"workspace_id\": \"12345\" },\n  \"git\": { \"enabled\": true, \"verbose\": true }\n}\n```\n\n### Token Resolution (highest priority wins)\n\n1. `--token` CLI flag\n2. `CLICKUP_TOKEN` environment variable\n3. `.clickup.json` (project-level)\n4. Global config\n\n### Workspace Resolution\n\n1. `--workspace` CLI flag\n2. `CLICKUP_WORKSPACE` environment variable\n3. `.clickup.json` (project-level)\n4. Global config\n\n## Exit Codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | Success |\n| 1 | Client error (bad input) |\n| 2 | Auth/permission error (401, 403) |\n| 3 | Not found (404) |\n| 4 | Rate limited (429) |\n| 5 | Server error (5xx) |\n| 6 | Network error (DNS/connection failure — request never reached ClickUp) |\n| 7 | Timeout (exceeded `--timeout`) |\n\n## Free-form Text Flags\n\nFlags like `--description`, `--text`, `--content` accept:\n\n- `@path` — read value from a file\n- `@-` — read value from stdin\n- `@@text` — literal text starting with `@`\n- anything else — used verbatim\n\n## Attribution\n\nThis project is a TypeScript port of [clickup-cli](https://github.com/nicholasbester/clickup-cli) by [Nicholas Bester](https://github.com/nicholasbester), a Rust CLI for the ClickUp API. The command structure, API endpoint mappings, git-branch task-ID detection, pagination strategies, and token-efficient output philosophy are derived from the original project, which is licensed under Apache-2.0.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}