runline 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/dist/plugins/actionNetwork/src/index.js +118 -25
  2. package/dist/plugins/activeCampaign/src/index.js +184 -38
  3. package/dist/plugins/adalo/src/index.js +40 -8
  4. package/dist/plugins/affinity/src/index.js +100 -20
  5. package/dist/plugins/agileCrm/src/index.js +115 -27
  6. package/dist/plugins/airtable/src/index.js +94 -19
  7. package/dist/plugins/airtop/src/index.js +266 -62
  8. package/dist/plugins/apiTemplateIo/src/index.js +25 -5
  9. package/dist/plugins/asana/src/index.js +195 -41
  10. package/dist/plugins/autopilot/src/index.js +39 -8
  11. package/dist/plugins/bambooHr/src/index.js +109 -22
  12. package/dist/plugins/bannerbear/src/index.js +36 -8
  13. package/dist/plugins/baserow/src/index.js +35 -7
  14. package/dist/plugins/beeminder/src/index.js +198 -40
  15. package/dist/plugins/bitly/src/index.js +46 -10
  16. package/dist/plugins/bitwarden/src/index.js +167 -36
  17. package/dist/plugins/box/src/index.js +172 -37
  18. package/dist/plugins/brandfetch/src/index.js +5 -1
  19. package/dist/plugins/brevo/src/index.js +136 -29
  20. package/dist/plugins/bubble/src/index.js +76 -17
  21. package/dist/plugins/chargebee/src/index.js +35 -7
  22. package/dist/plugins/circleci/src/index.js +50 -10
  23. package/dist/plugins/ciscoWebex/src/index.js +131 -27
  24. package/dist/plugins/clearbit/src/index.js +76 -17
  25. package/dist/plugins/clickup/src/index.js +500 -107
  26. package/dist/plugins/clockify/src/index.js +229 -47
  27. package/dist/plugins/cloudflare/src/index.js +28 -6
  28. package/dist/plugins/cockpit/src/index.js +54 -12
  29. package/dist/plugins/coda/src/index.js +81 -19
  30. package/dist/plugins/coingecko/src/index.js +157 -33
  31. package/dist/plugins/contentful/src/index.js +85 -17
  32. package/dist/plugins/convertkit/src/index.js +74 -18
  33. package/dist/plugins/copper/src/index.js +59 -11
  34. package/dist/plugins/cortex/src/index.js +55 -13
  35. package/dist/plugins/currents/src/index.js +310 -71
  36. package/dist/plugins/customerIo/src/index.js +112 -23
  37. package/dist/plugins/databricks/src/index.js +549 -115
  38. package/dist/plugins/deepl/src/index.js +26 -6
  39. package/dist/plugins/demio/src/index.js +56 -11
  40. package/dist/plugins/dhl/src/index.js +16 -3
  41. package/dist/plugins/discord/src/index.js +141 -31
  42. package/dist/plugins/discourse/src/index.js +136 -31
  43. package/dist/plugins/disqus/src/index.js +96 -20
  44. package/dist/plugins/docker/src/index.js +20 -4
  45. package/dist/plugins/drift/src/index.js +19 -5
  46. package/dist/plugins/dropbox/src/index.js +139 -30
  47. package/dist/plugins/dropcontact/src/index.js +21 -4
  48. package/dist/plugins/egoi/src/index.js +61 -15
  49. package/dist/plugins/elasticsearch/src/index.js +59 -13
  50. package/dist/plugins/emelia/src/index.js +95 -19
  51. package/dist/plugins/erpnext/src/index.js +74 -15
  52. package/dist/plugins/facebookGraph/src/index.js +52 -11
  53. package/dist/plugins/freshdesk/src/index.js +220 -48
  54. package/dist/plugins/freshservice/src/index.js +39 -9
  55. package/dist/plugins/freshworksCrm/src/index.js +58 -12
  56. package/dist/plugins/getresponse/src/index.js +87 -18
  57. package/dist/plugins/ghost/src/index.js +114 -26
  58. package/dist/plugins/github/src/index.js +483 -109
  59. package/dist/plugins/gitlab/src/index.js +193 -45
  60. package/dist/plugins/gong/src/index.js +68 -14
  61. package/dist/plugins/gotify/src/index.js +43 -9
  62. package/dist/plugins/gotowebinar/src/index.js +233 -47
  63. package/dist/plugins/grafana/src/index.js +92 -21
  64. package/dist/plugins/graphql/src/index.js +38 -8
  65. package/dist/plugins/grist/src/index.js +52 -10
  66. package/dist/plugins/hackernews/src/index.js +32 -6
  67. package/dist/plugins/halopsa/src/index.js +131 -26
  68. package/dist/plugins/harvest/src/index.js +182 -42
  69. package/dist/plugins/helpscout/src/index.js +153 -31
  70. package/dist/plugins/highlevel/src/index.js +291 -58
  71. package/dist/plugins/homeAssistant/src/index.js +124 -26
  72. package/dist/plugins/hubspot/src/index.js +163 -29
  73. package/dist/plugins/humanticAi/src/index.js +54 -5
  74. package/dist/plugins/hunter/src/index.js +21 -4
  75. package/dist/plugins/intercom/src/index.js +95 -20
  76. package/dist/plugins/iterable/src/index.js +96 -20
  77. package/dist/plugins/jenkins/src/index.js +75 -17
  78. package/dist/plugins/jira/src/index.js +193 -43
  79. package/dist/plugins/keap/src/index.js +222 -56
  80. package/dist/plugins/kobotoolbox/src/index.js +113 -25
  81. package/dist/plugins/lemlist/src/index.js +79 -18
  82. package/dist/plugins/linear/src/index.js +86 -19
  83. package/dist/plugins/lingvanex/src/index.js +38 -8
  84. package/dist/plugins/linkedin/src/index.js +37 -8
  85. package/dist/plugins/lonescale/src/index.js +41 -9
  86. package/dist/plugins/magento/src/index.js +98 -27
  87. package/dist/plugins/mailcheck/src/index.js +11 -2
  88. package/dist/plugins/mailchimp/src/index.js +193 -42
  89. package/dist/plugins/mailerlite/src/index.js +61 -12
  90. package/dist/plugins/mailgun/src/index.js +39 -7
  91. package/dist/plugins/mailjet/src/index.js +141 -30
  92. package/dist/plugins/mandrill/src/index.js +67 -14
  93. package/dist/plugins/marketstack/src/index.js +56 -10
  94. package/dist/plugins/matrix/src/index.js +97 -20
  95. package/dist/plugins/mattermost/src/index.js +124 -26
  96. package/dist/plugins/mautic/src/index.js +129 -26
  97. package/dist/plugins/medium/src/index.js +64 -13
  98. package/dist/plugins/messagebird/src/index.js +80 -15
  99. package/dist/plugins/metabase/src/index.js +57 -12
  100. package/dist/plugins/misp/src/index.js +135 -33
  101. package/dist/plugins/mocean/src/index.js +33 -7
  102. package/dist/plugins/monday/src/index.js +97 -23
  103. package/dist/plugins/monicaCrm/src/index.js +112 -23
  104. package/dist/plugins/msg91/src/index.js +11 -2
  105. package/dist/plugins/nasa/src/index.js +108 -21
  106. package/dist/plugins/netlify/src/index.js +28 -6
  107. package/dist/plugins/netscalerAdc/src/index.js +144 -29
  108. package/dist/plugins/nextcloud/src/index.js +103 -20
  109. package/dist/plugins/nocodb/src/index.js +57 -11
  110. package/dist/plugins/notion/src/index.js +148 -37
  111. package/dist/plugins/npm/src/index.js +59 -12
  112. package/dist/plugins/odoo/src/index.js +102 -20
  113. package/dist/plugins/okta/src/index.js +50 -10
  114. package/dist/plugins/oneSimpleApi/src/index.js +84 -17
  115. package/dist/plugins/onfleet/src/index.js +139 -32
  116. package/dist/plugins/openThesaurus/src/index.js +46 -9
  117. package/dist/plugins/openweathermap/src/index.js +31 -6
  118. package/dist/plugins/oura/src/index.js +36 -7
  119. package/dist/plugins/paddle/src/index.js +80 -17
  120. package/dist/plugins/pagerduty/src/index.js +53 -12
  121. package/dist/plugins/paypal/src/index.js +51 -11
  122. package/dist/plugins/peekalink/src/index.js +12 -3
  123. package/dist/plugins/phantombuster/src/index.js +39 -8
  124. package/dist/plugins/philipsHue/src/index.js +64 -13
  125. package/dist/plugins/pipedrive/src/index.js +167 -45
  126. package/dist/plugins/plivo/src/index.js +43 -8
  127. package/dist/plugins/postbin/src/index.js +9 -2
  128. package/dist/plugins/posthog/src/index.js +50 -13
  129. package/dist/plugins/profitwell/src/index.js +24 -5
  130. package/dist/plugins/pushbullet/src/index.js +45 -9
  131. package/dist/plugins/pushcut/src/index.js +31 -6
  132. package/dist/plugins/pushover/src/index.js +51 -10
  133. package/dist/plugins/quickbase/src/index.js +66 -13
  134. package/dist/plugins/quickbooks/src/index.js +86 -19
  135. package/dist/plugins/quickchart/src/index.js +35 -7
  136. package/dist/plugins/raindrop/src/index.js +54 -13
  137. package/dist/plugins/reddit/src/index.js +73 -18
  138. package/dist/plugins/rocketchat/src/index.js +47 -9
  139. package/dist/plugins/rundeck/src/index.js +26 -5
  140. package/dist/plugins/salesforce/src/index.js +161 -31
  141. package/dist/plugins/salesmate/src/index.js +75 -16
  142. package/dist/plugins/securityScorecard/src/index.js +73 -15
  143. package/dist/plugins/segment/src/index.js +21 -4
  144. package/dist/plugins/sendgrid/src/index.js +102 -24
  145. package/dist/plugins/sendy/src/index.js +54 -11
  146. package/dist/plugins/sentry/src/index.js +174 -34
  147. package/dist/plugins/servicenow/src/index.js +120 -27
  148. package/dist/plugins/shopify/src/index.js +53 -12
  149. package/dist/plugins/signl4/src/index.js +16 -3
  150. package/dist/plugins/slack/src/index.js +407 -105
  151. package/dist/plugins/sms77/src/index.js +26 -5
  152. package/dist/plugins/splunk/src/index.js +186 -45
  153. package/dist/plugins/spotify/src/index.js +265 -66
  154. package/dist/plugins/stackby/src/index.js +18 -6
  155. package/dist/plugins/storyblok/src/index.js +57 -11
  156. package/dist/plugins/strapi/src/index.js +63 -12
  157. package/dist/plugins/strava/src/index.js +58 -13
  158. package/dist/plugins/stripe/src/index.js +143 -30
  159. package/dist/plugins/supabase/src/index.js +49 -10
  160. package/dist/plugins/syncromsp/src/index.js +245 -67
  161. package/dist/plugins/tapfiliate/src/index.js +57 -14
  162. package/dist/plugins/telegram/src/index.js +202 -39
  163. package/dist/plugins/thehive/src/index.js +271 -66
  164. package/dist/plugins/thehiveProject/src/index.js +457 -89
  165. package/dist/plugins/todoist/src/index.js +326 -77
  166. package/dist/plugins/travisci/src/index.js +35 -8
  167. package/dist/plugins/trello/src/index.js +204 -46
  168. package/dist/plugins/twake/src/index.js +10 -2
  169. package/dist/plugins/twilio/src/index.js +56 -11
  170. package/dist/plugins/twist/src/index.js +241 -48
  171. package/dist/plugins/twitter/src/index.js +128 -30
  172. package/dist/plugins/unleashedSoftware/src/index.js +30 -6
  173. package/dist/plugins/uplead/src/index.js +9 -2
  174. package/dist/plugins/uproc/src/index.js +31 -6
  175. package/dist/plugins/uptimerobot/src/index.js +119 -25
  176. package/dist/plugins/urlscanio/src/index.js +25 -6
  177. package/dist/plugins/vero/src/index.js +68 -13
  178. package/dist/plugins/vonage/src/index.js +32 -6
  179. package/dist/plugins/wekan/src/index.js +297 -52
  180. package/dist/plugins/woocommerce/src/index.js +57 -12
  181. package/dist/plugins/wordpress/src/index.js +94 -18
  182. package/dist/plugins/xero/src/index.js +79 -13
  183. package/dist/plugins/yourls/src/index.js +33 -6
  184. package/dist/plugins/zammad/src/index.js +139 -36
  185. package/dist/plugins/zendesk/src/index.js +201 -48
  186. package/dist/plugins/zoho/src/index.js +88 -21
  187. package/dist/plugins/zoom/src/index.js +41 -7
  188. package/dist/plugins/zulip/src/index.js +101 -20
  189. package/package.json +1 -1
@@ -18,7 +18,10 @@ async function apiRequest(token, method, endpoint, body, qs) {
18
18
  method,
19
19
  headers: { "Content-Type": "application/json", Authorization: token },
20
20
  };
21
- if (body && Object.keys(body).length > 0 && method !== "GET" && method !== "DELETE") {
21
+ if (body &&
22
+ Object.keys(body).length > 0 &&
23
+ method !== "GET" &&
24
+ method !== "DELETE") {
22
25
  opts.body = JSON.stringify(body);
23
26
  }
24
27
  const res = await fetch(url.toString(), opts);
@@ -37,7 +40,10 @@ async function paginateAll(token, endpoint, property, qs, limit) {
37
40
  const results = [];
38
41
  let page = 0;
39
42
  while (true) {
40
- const data = (await apiRequest(token, "GET", endpoint, undefined, { ...qs, page }));
43
+ const data = (await apiRequest(token, "GET", endpoint, undefined, {
44
+ ...qs,
45
+ page,
46
+ }));
41
47
  const items = data[property] ?? [];
42
48
  results.push(...items);
43
49
  if (limit && results.length >= limit)
@@ -78,7 +84,11 @@ export default function clickup(rl) {
78
84
  rl.registerAction("checklist.update", {
79
85
  description: "Update a checklist",
80
86
  inputSchema: {
81
- checklistId: { type: "string", required: true, description: "Checklist ID" },
87
+ checklistId: {
88
+ type: "string",
89
+ required: true,
90
+ description: "Checklist ID",
91
+ },
82
92
  name: { type: "string", required: false, description: "New name" },
83
93
  position: { type: "number", required: false, description: "Position" },
84
94
  },
@@ -91,7 +101,11 @@ export default function clickup(rl) {
91
101
  rl.registerAction("checklist.delete", {
92
102
  description: "Delete a checklist",
93
103
  inputSchema: {
94
- checklistId: { type: "string", required: true, description: "Checklist ID" },
104
+ checklistId: {
105
+ type: "string",
106
+ required: true,
107
+ description: "Checklist ID",
108
+ },
95
109
  },
96
110
  async execute(input, ctx) {
97
111
  const { checklistId } = input;
@@ -103,9 +117,17 @@ export default function clickup(rl) {
103
117
  rl.registerAction("checklistItem.create", {
104
118
  description: "Create a checklist item",
105
119
  inputSchema: {
106
- checklistId: { type: "string", required: true, description: "Checklist ID" },
120
+ checklistId: {
121
+ type: "string",
122
+ required: true,
123
+ description: "Checklist ID",
124
+ },
107
125
  name: { type: "string", required: true, description: "Item name" },
108
- assignee: { type: "number", required: false, description: "Assignee user ID" },
126
+ assignee: {
127
+ type: "number",
128
+ required: false,
129
+ description: "Assignee user ID",
130
+ },
109
131
  },
110
132
  async execute(input, ctx) {
111
133
  const { checklistId, name, assignee } = input;
@@ -119,12 +141,24 @@ export default function clickup(rl) {
119
141
  rl.registerAction("checklistItem.update", {
120
142
  description: "Update a checklist item",
121
143
  inputSchema: {
122
- checklistId: { type: "string", required: true, description: "Checklist ID" },
123
- checklistItemId: { type: "string", required: true, description: "Checklist item ID" },
144
+ checklistId: {
145
+ type: "string",
146
+ required: true,
147
+ description: "Checklist ID",
148
+ },
149
+ checklistItemId: {
150
+ type: "string",
151
+ required: true,
152
+ description: "Checklist item ID",
153
+ },
124
154
  name: { type: "string", required: false, description: "Name" },
125
155
  assignee: { type: "number", required: false, description: "Assignee" },
126
156
  resolved: { type: "boolean", required: false, description: "Resolved" },
127
- parent: { type: "string", required: false, description: "Parent checklist item ID" },
157
+ parent: {
158
+ type: "string",
159
+ required: false,
160
+ description: "Parent checklist item ID",
161
+ },
128
162
  },
129
163
  async execute(input, ctx) {
130
164
  const { checklistId, checklistItemId, ...body } = input;
@@ -135,8 +169,16 @@ export default function clickup(rl) {
135
169
  rl.registerAction("checklistItem.delete", {
136
170
  description: "Delete a checklist item",
137
171
  inputSchema: {
138
- checklistId: { type: "string", required: true, description: "Checklist ID" },
139
- checklistItemId: { type: "string", required: true, description: "Checklist item ID" },
172
+ checklistId: {
173
+ type: "string",
174
+ required: true,
175
+ description: "Checklist ID",
176
+ },
177
+ checklistItemId: {
178
+ type: "string",
179
+ required: true,
180
+ description: "Checklist item ID",
181
+ },
140
182
  },
141
183
  async execute(input, ctx) {
142
184
  const { checklistId, checklistItemId } = input;
@@ -148,11 +190,27 @@ export default function clickup(rl) {
148
190
  rl.registerAction("comment.create", {
149
191
  description: "Create a comment on a task, view, or list",
150
192
  inputSchema: {
151
- commentOn: { type: "string", required: true, description: "Resource type: task, view, or list" },
193
+ commentOn: {
194
+ type: "string",
195
+ required: true,
196
+ description: "Resource type: task, view, or list",
197
+ },
152
198
  id: { type: "string", required: true, description: "Resource ID" },
153
- commentText: { type: "string", required: true, description: "Comment text" },
154
- assignee: { type: "number", required: false, description: "Assignee user ID" },
155
- notifyAll: { type: "boolean", required: false, description: "Notify all assignees" },
199
+ commentText: {
200
+ type: "string",
201
+ required: true,
202
+ description: "Comment text",
203
+ },
204
+ assignee: {
205
+ type: "number",
206
+ required: false,
207
+ description: "Assignee user ID",
208
+ },
209
+ notifyAll: {
210
+ type: "boolean",
211
+ required: false,
212
+ description: "Notify all assignees",
213
+ },
156
214
  },
157
215
  async execute(input, ctx) {
158
216
  const { commentOn, id, commentText, assignee, notifyAll } = input;
@@ -167,7 +225,11 @@ export default function clickup(rl) {
167
225
  rl.registerAction("comment.list", {
168
226
  description: "List comments on a task, view, or list",
169
227
  inputSchema: {
170
- commentsOn: { type: "string", required: true, description: "Resource type: task, view, or list" },
228
+ commentsOn: {
229
+ type: "string",
230
+ required: true,
231
+ description: "Resource type: task, view, or list",
232
+ },
171
233
  id: { type: "string", required: true, description: "Resource ID" },
172
234
  limit: { type: "number", required: false, description: "Max results" },
173
235
  },
@@ -221,12 +283,16 @@ export default function clickup(rl) {
221
283
  },
222
284
  async execute(input, ctx) {
223
285
  const { spaceId, name } = input;
224
- return apiRequest(getToken(ctx), "POST", `/space/${spaceId}/folder`, { name });
286
+ return apiRequest(getToken(ctx), "POST", `/space/${spaceId}/folder`, {
287
+ name,
288
+ });
225
289
  },
226
290
  });
227
291
  rl.registerAction("folder.get", {
228
292
  description: "Get a folder",
229
- inputSchema: { folderId: { type: "string", required: true, description: "Folder ID" } },
293
+ inputSchema: {
294
+ folderId: { type: "string", required: true, description: "Folder ID" },
295
+ },
230
296
  async execute(input, ctx) {
231
297
  return apiRequest(getToken(ctx), "GET", `/folder/${input.folderId}`);
232
298
  },
@@ -235,7 +301,11 @@ export default function clickup(rl) {
235
301
  description: "List folders in a space",
236
302
  inputSchema: {
237
303
  spaceId: { type: "string", required: true, description: "Space ID" },
238
- archived: { type: "boolean", required: false, description: "Include archived" },
304
+ archived: {
305
+ type: "boolean",
306
+ required: false,
307
+ description: "Include archived",
308
+ },
239
309
  limit: { type: "number", required: false, description: "Max results" },
240
310
  },
241
311
  async execute(input, ctx) {
@@ -263,7 +333,9 @@ export default function clickup(rl) {
263
333
  });
264
334
  rl.registerAction("folder.delete", {
265
335
  description: "Delete a folder",
266
- inputSchema: { folderId: { type: "string", required: true, description: "Folder ID" } },
336
+ inputSchema: {
337
+ folderId: { type: "string", required: true, description: "Folder ID" },
338
+ },
267
339
  async execute(input, ctx) {
268
340
  await apiRequest(getToken(ctx), "DELETE", `/folder/${input.folderId}`);
269
341
  return { success: true };
@@ -275,14 +347,30 @@ export default function clickup(rl) {
275
347
  inputSchema: {
276
348
  teamId: { type: "string", required: true, description: "Team ID" },
277
349
  name: { type: "string", required: true, description: "Goal name" },
278
- dueDate: { type: "string", required: false, description: "Due date (ISO 8601)" },
279
- description: { type: "string", required: false, description: "Description" },
350
+ dueDate: {
351
+ type: "string",
352
+ required: false,
353
+ description: "Due date (ISO 8601)",
354
+ },
355
+ description: {
356
+ type: "string",
357
+ required: false,
358
+ description: "Description",
359
+ },
280
360
  color: { type: "string", required: false, description: "Color hex" },
281
- owners: { type: "array", required: false, description: "Array of owner user IDs" },
282
- multipleOwners: { type: "boolean", required: false, description: "Allow multiple owners" },
361
+ owners: {
362
+ type: "array",
363
+ required: false,
364
+ description: "Array of owner user IDs",
365
+ },
366
+ multipleOwners: {
367
+ type: "boolean",
368
+ required: false,
369
+ description: "Allow multiple owners",
370
+ },
283
371
  },
284
372
  async execute(input, ctx) {
285
- const { teamId, name, dueDate, description, color, owners, multipleOwners } = input;
373
+ const { teamId, name, dueDate, description, color, owners, multipleOwners, } = input;
286
374
  const body = { name };
287
375
  if (dueDate)
288
376
  body.due_date = new Date(dueDate).getTime();
@@ -300,7 +388,9 @@ export default function clickup(rl) {
300
388
  });
301
389
  rl.registerAction("goal.get", {
302
390
  description: "Get a goal",
303
- inputSchema: { goalId: { type: "string", required: true, description: "Goal ID" } },
391
+ inputSchema: {
392
+ goalId: { type: "string", required: true, description: "Goal ID" },
393
+ },
304
394
  async execute(input, ctx) {
305
395
  const data = (await apiRequest(getToken(ctx), "GET", `/goal/${input.goalId}`));
306
396
  return data.goal;
@@ -327,10 +417,22 @@ export default function clickup(rl) {
327
417
  goalId: { type: "string", required: true, description: "Goal ID" },
328
418
  name: { type: "string", required: false, description: "Name" },
329
419
  dueDate: { type: "string", required: false, description: "Due date" },
330
- description: { type: "string", required: false, description: "Description" },
420
+ description: {
421
+ type: "string",
422
+ required: false,
423
+ description: "Description",
424
+ },
331
425
  color: { type: "string", required: false, description: "Color" },
332
- addOwners: { type: "array", required: false, description: "User IDs to add as owners" },
333
- removeOwners: { type: "array", required: false, description: "User IDs to remove" },
426
+ addOwners: {
427
+ type: "array",
428
+ required: false,
429
+ description: "User IDs to add as owners",
430
+ },
431
+ removeOwners: {
432
+ type: "array",
433
+ required: false,
434
+ description: "User IDs to remove",
435
+ },
334
436
  },
335
437
  async execute(input, ctx) {
336
438
  const { goalId, dueDate, addOwners, removeOwners, ...rest } = input;
@@ -348,7 +450,9 @@ export default function clickup(rl) {
348
450
  });
349
451
  rl.registerAction("goal.delete", {
350
452
  description: "Delete a goal",
351
- inputSchema: { goalId: { type: "string", required: true, description: "Goal ID" } },
453
+ inputSchema: {
454
+ goalId: { type: "string", required: true, description: "Goal ID" },
455
+ },
352
456
  async execute(input, ctx) {
353
457
  await apiRequest(getToken(ctx), "DELETE", `/goal/${input.goalId}`);
354
458
  return { success: true };
@@ -360,12 +464,32 @@ export default function clickup(rl) {
360
464
  inputSchema: {
361
465
  goalId: { type: "string", required: true, description: "Goal ID" },
362
466
  name: { type: "string", required: true, description: "Key result name" },
363
- type: { type: "string", required: true, description: "Type: number, currency, boolean, percentage, automatic" },
364
- unit: { type: "string", required: false, description: "Unit (for number/currency)" },
365
- stepsStart: { type: "number", required: false, description: "Start value" },
467
+ type: {
468
+ type: "string",
469
+ required: true,
470
+ description: "Type: number, currency, boolean, percentage, automatic",
471
+ },
472
+ unit: {
473
+ type: "string",
474
+ required: false,
475
+ description: "Unit (for number/currency)",
476
+ },
477
+ stepsStart: {
478
+ type: "number",
479
+ required: false,
480
+ description: "Start value",
481
+ },
366
482
  stepsEnd: { type: "number", required: false, description: "End value" },
367
- taskIds: { type: "array", required: false, description: "Task IDs (for automatic type)" },
368
- listIds: { type: "array", required: false, description: "List IDs (for automatic type)" },
483
+ taskIds: {
484
+ type: "array",
485
+ required: false,
486
+ description: "Task IDs (for automatic type)",
487
+ },
488
+ listIds: {
489
+ type: "array",
490
+ required: false,
491
+ description: "List IDs (for automatic type)",
492
+ },
369
493
  owners: { type: "array", required: false, description: "Owner user IDs" },
370
494
  },
371
495
  async execute(input, ctx) {
@@ -387,11 +511,23 @@ export default function clickup(rl) {
387
511
  rl.registerAction("goalKeyResult.update", {
388
512
  description: "Update a key result",
389
513
  inputSchema: {
390
- keyResultId: { type: "string", required: true, description: "Key result ID" },
514
+ keyResultId: {
515
+ type: "string",
516
+ required: true,
517
+ description: "Key result ID",
518
+ },
391
519
  name: { type: "string", required: false, description: "Name" },
392
520
  note: { type: "string", required: false, description: "Note" },
393
- stepsCurrent: { type: "number", required: false, description: "Current steps" },
394
- stepsStart: { type: "number", required: false, description: "Start steps" },
521
+ stepsCurrent: {
522
+ type: "number",
523
+ required: false,
524
+ description: "Current steps",
525
+ },
526
+ stepsStart: {
527
+ type: "number",
528
+ required: false,
529
+ description: "Start steps",
530
+ },
395
531
  stepsEnd: { type: "number", required: false, description: "End steps" },
396
532
  unit: { type: "string", required: false, description: "Unit" },
397
533
  },
@@ -411,7 +547,13 @@ export default function clickup(rl) {
411
547
  });
412
548
  rl.registerAction("goalKeyResult.delete", {
413
549
  description: "Delete a key result",
414
- inputSchema: { keyResultId: { type: "string", required: true, description: "Key result ID" } },
550
+ inputSchema: {
551
+ keyResultId: {
552
+ type: "string",
553
+ required: true,
554
+ description: "Key result ID",
555
+ },
556
+ },
415
557
  async execute(input, ctx) {
416
558
  await apiRequest(getToken(ctx), "DELETE", `/key_result/${input.keyResultId}`);
417
559
  return { success: true };
@@ -423,12 +565,24 @@ export default function clickup(rl) {
423
565
  inputSchema: {
424
566
  teamId: { type: "string", required: true, description: "Team ID" },
425
567
  email: { type: "string", required: true, description: "Guest email" },
426
- canEditTags: { type: "boolean", required: false, description: "Can edit tags" },
427
- canSeeTimeSpend: { type: "boolean", required: false, description: "Can see time spent" },
428
- canSeeTimeEstimated: { type: "boolean", required: false, description: "Can see time estimated" },
568
+ canEditTags: {
569
+ type: "boolean",
570
+ required: false,
571
+ description: "Can edit tags",
572
+ },
573
+ canSeeTimeSpend: {
574
+ type: "boolean",
575
+ required: false,
576
+ description: "Can see time spent",
577
+ },
578
+ canSeeTimeEstimated: {
579
+ type: "boolean",
580
+ required: false,
581
+ description: "Can see time estimated",
582
+ },
429
583
  },
430
584
  async execute(input, ctx) {
431
- const { teamId, email, canEditTags, canSeeTimeSpend, canSeeTimeEstimated } = input;
585
+ const { teamId, email, canEditTags, canSeeTimeSpend, canSeeTimeEstimated, } = input;
432
586
  const body = { email };
433
587
  if (canEditTags !== undefined)
434
588
  body.can_edit_tags = canEditTags;
@@ -458,9 +612,21 @@ export default function clickup(rl) {
458
612
  teamId: { type: "string", required: true, description: "Team ID" },
459
613
  guestId: { type: "string", required: true, description: "Guest ID" },
460
614
  username: { type: "string", required: false, description: "Username" },
461
- canEditTags: { type: "boolean", required: false, description: "Can edit tags" },
462
- canSeeTimeSpend: { type: "boolean", required: false, description: "Can see time spent" },
463
- canSeeTimeEstimated: { type: "boolean", required: false, description: "Can see time estimated" },
615
+ canEditTags: {
616
+ type: "boolean",
617
+ required: false,
618
+ description: "Can edit tags",
619
+ },
620
+ canSeeTimeSpend: {
621
+ type: "boolean",
622
+ required: false,
623
+ description: "Can see time spent",
624
+ },
625
+ canSeeTimeEstimated: {
626
+ type: "boolean",
627
+ required: false,
628
+ description: "Can see time estimated",
629
+ },
464
630
  },
465
631
  async execute(input, ctx) {
466
632
  const { teamId, guestId, ...body } = input;
@@ -486,18 +652,58 @@ export default function clickup(rl) {
486
652
  inputSchema: {
487
653
  listId: { type: "string", required: true, description: "List ID" },
488
654
  name: { type: "string", required: true, description: "Task name" },
489
- content: { type: "string", required: false, description: "Task description" },
490
- markdownContent: { type: "string", required: false, description: "Markdown description" },
491
- assignees: { type: "array", required: false, description: "Assignee user IDs" },
655
+ content: {
656
+ type: "string",
657
+ required: false,
658
+ description: "Task description",
659
+ },
660
+ markdownContent: {
661
+ type: "string",
662
+ required: false,
663
+ description: "Markdown description",
664
+ },
665
+ assignees: {
666
+ type: "array",
667
+ required: false,
668
+ description: "Assignee user IDs",
669
+ },
492
670
  tags: { type: "array", required: false, description: "Tag names" },
493
671
  status: { type: "string", required: false, description: "Status" },
494
- priority: { type: "number", required: false, description: "Priority (1=urgent, 2=high, 3=normal, 4=low)" },
495
- dueDate: { type: "string", required: false, description: "Due date (ISO 8601)" },
496
- startDate: { type: "string", required: false, description: "Start date (ISO 8601)" },
497
- timeEstimate: { type: "number", required: false, description: "Time estimate in minutes" },
498
- notifyAll: { type: "boolean", required: false, description: "Notify all assignees" },
499
- parentId: { type: "string", required: false, description: "Parent task ID (for subtask)" },
500
- customFields: { type: "array", required: false, description: "Custom fields array [{id, value}]" },
672
+ priority: {
673
+ type: "number",
674
+ required: false,
675
+ description: "Priority (1=urgent, 2=high, 3=normal, 4=low)",
676
+ },
677
+ dueDate: {
678
+ type: "string",
679
+ required: false,
680
+ description: "Due date (ISO 8601)",
681
+ },
682
+ startDate: {
683
+ type: "string",
684
+ required: false,
685
+ description: "Start date (ISO 8601)",
686
+ },
687
+ timeEstimate: {
688
+ type: "number",
689
+ required: false,
690
+ description: "Time estimate in minutes",
691
+ },
692
+ notifyAll: {
693
+ type: "boolean",
694
+ required: false,
695
+ description: "Notify all assignees",
696
+ },
697
+ parentId: {
698
+ type: "string",
699
+ required: false,
700
+ description: "Parent task ID (for subtask)",
701
+ },
702
+ customFields: {
703
+ type: "array",
704
+ required: false,
705
+ description: "Custom fields array [{id, value}]",
706
+ },
501
707
  },
502
708
  async execute(input, ctx) {
503
709
  const { listId, dueDate, startDate, timeEstimate, markdownContent, parentId, customFields, ...rest } = input;
@@ -524,7 +730,11 @@ export default function clickup(rl) {
524
730
  description: "Get a task",
525
731
  inputSchema: {
526
732
  taskId: { type: "string", required: true, description: "Task ID" },
527
- includeSubtasks: { type: "boolean", required: false, description: "Include subtasks" },
733
+ includeSubtasks: {
734
+ type: "boolean",
735
+ required: false,
736
+ description: "Include subtasks",
737
+ },
528
738
  },
529
739
  async execute(input, ctx) {
530
740
  const { taskId, includeSubtasks } = input;
@@ -538,14 +748,42 @@ export default function clickup(rl) {
538
748
  description: "List tasks in a list",
539
749
  inputSchema: {
540
750
  listId: { type: "string", required: true, description: "List ID" },
541
- archived: { type: "boolean", required: false, description: "Include archived" },
542
- subtasks: { type: "boolean", required: false, description: "Include subtasks" },
543
- includeClosed: { type: "boolean", required: false, description: "Include closed" },
544
- orderBy: { type: "string", required: false, description: "Order by field" },
545
- statuses: { type: "array", required: false, description: "Filter by statuses" },
546
- assignees: { type: "array", required: false, description: "Filter by assignee IDs" },
751
+ archived: {
752
+ type: "boolean",
753
+ required: false,
754
+ description: "Include archived",
755
+ },
756
+ subtasks: {
757
+ type: "boolean",
758
+ required: false,
759
+ description: "Include subtasks",
760
+ },
761
+ includeClosed: {
762
+ type: "boolean",
763
+ required: false,
764
+ description: "Include closed",
765
+ },
766
+ orderBy: {
767
+ type: "string",
768
+ required: false,
769
+ description: "Order by field",
770
+ },
771
+ statuses: {
772
+ type: "array",
773
+ required: false,
774
+ description: "Filter by statuses",
775
+ },
776
+ assignees: {
777
+ type: "array",
778
+ required: false,
779
+ description: "Filter by assignee IDs",
780
+ },
547
781
  tags: { type: "array", required: false, description: "Filter by tags" },
548
- limit: { type: "number", required: false, description: "Max results (omit for all)" },
782
+ limit: {
783
+ type: "number",
784
+ required: false,
785
+ description: "Max results (omit for all)",
786
+ },
549
787
  },
550
788
  async execute(input, ctx) {
551
789
  const { listId, limit, ...filters } = (input ?? {});
@@ -577,9 +815,21 @@ export default function clickup(rl) {
577
815
  priority: { type: "number", required: false, description: "Priority" },
578
816
  dueDate: { type: "string", required: false, description: "Due date" },
579
817
  startDate: { type: "string", required: false, description: "Start date" },
580
- timeEstimate: { type: "number", required: false, description: "Time estimate (minutes)" },
581
- addAssignees: { type: "array", required: false, description: "User IDs to add" },
582
- removeAssignees: { type: "array", required: false, description: "User IDs to remove" },
818
+ timeEstimate: {
819
+ type: "number",
820
+ required: false,
821
+ description: "Time estimate (minutes)",
822
+ },
823
+ addAssignees: {
824
+ type: "array",
825
+ required: false,
826
+ description: "User IDs to add",
827
+ },
828
+ removeAssignees: {
829
+ type: "array",
830
+ required: false,
831
+ description: "User IDs to remove",
832
+ },
583
833
  },
584
834
  async execute(input, ctx) {
585
835
  const { taskId, dueDate, startDate, timeEstimate, addAssignees, removeAssignees, ...rest } = input;
@@ -597,7 +847,9 @@ export default function clickup(rl) {
597
847
  });
598
848
  rl.registerAction("task.delete", {
599
849
  description: "Delete a task",
600
- inputSchema: { taskId: { type: "string", required: true, description: "Task ID" } },
850
+ inputSchema: {
851
+ taskId: { type: "string", required: true, description: "Task ID" },
852
+ },
601
853
  async execute(input, ctx) {
602
854
  await apiRequest(getToken(ctx), "DELETE", `/task/${input.taskId}`);
603
855
  return { success: true };
@@ -622,8 +874,16 @@ export default function clickup(rl) {
622
874
  description: "Set a custom field value on a task",
623
875
  inputSchema: {
624
876
  taskId: { type: "string", required: true, description: "Task ID" },
625
- fieldId: { type: "string", required: true, description: "Custom field ID" },
626
- value: { type: "string", required: true, description: "Value (string, number, or JSON)" },
877
+ fieldId: {
878
+ type: "string",
879
+ required: true,
880
+ description: "Custom field ID",
881
+ },
882
+ value: {
883
+ type: "string",
884
+ required: true,
885
+ description: "Value (string, number, or JSON)",
886
+ },
627
887
  },
628
888
  async execute(input, ctx) {
629
889
  const { taskId, fieldId, value } = input;
@@ -685,11 +945,17 @@ export default function clickup(rl) {
685
945
  description: "Add a dependency to a task",
686
946
  inputSchema: {
687
947
  taskId: { type: "string", required: true, description: "Task ID" },
688
- dependsOnTaskId: { type: "string", required: true, description: "Task this depends on" },
948
+ dependsOnTaskId: {
949
+ type: "string",
950
+ required: true,
951
+ description: "Task this depends on",
952
+ },
689
953
  },
690
954
  async execute(input, ctx) {
691
955
  const { taskId, dependsOnTaskId } = input;
692
- await apiRequest(getToken(ctx), "POST", `/task/${taskId}/dependency`, { depends_on: dependsOnTaskId });
956
+ await apiRequest(getToken(ctx), "POST", `/task/${taskId}/dependency`, {
957
+ depends_on: dependsOnTaskId,
958
+ });
693
959
  return { success: true };
694
960
  },
695
961
  });
@@ -697,7 +963,11 @@ export default function clickup(rl) {
697
963
  description: "Remove a dependency from a task",
698
964
  inputSchema: {
699
965
  taskId: { type: "string", required: true, description: "Task ID" },
700
- dependsOnTaskId: { type: "string", required: true, description: "Dependent task ID" },
966
+ dependsOnTaskId: {
967
+ type: "string",
968
+ required: true,
969
+ description: "Dependent task ID",
970
+ },
701
971
  },
702
972
  async execute(input, ctx) {
703
973
  const { taskId, dependsOnTaskId } = input;
@@ -711,8 +981,16 @@ export default function clickup(rl) {
711
981
  inputSchema: {
712
982
  spaceId: { type: "string", required: true, description: "Space ID" },
713
983
  name: { type: "string", required: true, description: "Tag name" },
714
- foregroundColor: { type: "string", required: true, description: "Text color hex" },
715
- backgroundColor: { type: "string", required: true, description: "Background color hex" },
984
+ foregroundColor: {
985
+ type: "string",
986
+ required: true,
987
+ description: "Text color hex",
988
+ },
989
+ backgroundColor: {
990
+ type: "string",
991
+ required: true,
992
+ description: "Background color hex",
993
+ },
716
994
  },
717
995
  async execute(input, ctx) {
718
996
  const { spaceId, name, foregroundColor, backgroundColor } = input;
@@ -741,15 +1019,31 @@ export default function clickup(rl) {
741
1019
  description: "Update a space tag",
742
1020
  inputSchema: {
743
1021
  spaceId: { type: "string", required: true, description: "Space ID" },
744
- tagName: { type: "string", required: true, description: "Current tag name" },
1022
+ tagName: {
1023
+ type: "string",
1024
+ required: true,
1025
+ description: "Current tag name",
1026
+ },
745
1027
  newName: { type: "string", required: true, description: "New tag name" },
746
- foregroundColor: { type: "string", required: true, description: "Text color hex" },
747
- backgroundColor: { type: "string", required: true, description: "Background color hex" },
1028
+ foregroundColor: {
1029
+ type: "string",
1030
+ required: true,
1031
+ description: "Text color hex",
1032
+ },
1033
+ backgroundColor: {
1034
+ type: "string",
1035
+ required: true,
1036
+ description: "Background color hex",
1037
+ },
748
1038
  },
749
1039
  async execute(input, ctx) {
750
1040
  const { spaceId, tagName, newName, foregroundColor, backgroundColor } = input;
751
1041
  await apiRequest(getToken(ctx), "PUT", `/space/${spaceId}/tag/${tagName}`, {
752
- tag: { name: newName, tag_fg: foregroundColor, tag_bg: backgroundColor },
1042
+ tag: {
1043
+ name: newName,
1044
+ tag_fg: foregroundColor,
1045
+ tag_bg: backgroundColor,
1046
+ },
753
1047
  });
754
1048
  return { success: true };
755
1049
  },
@@ -771,12 +1065,24 @@ export default function clickup(rl) {
771
1065
  description: "Create a list (in a folder or folderless in a space)",
772
1066
  inputSchema: {
773
1067
  name: { type: "string", required: true, description: "List name" },
774
- spaceId: { type: "string", required: false, description: "Space ID (for folderless list)" },
775
- folderId: { type: "string", required: false, description: "Folder ID (for list in folder)" },
1068
+ spaceId: {
1069
+ type: "string",
1070
+ required: false,
1071
+ description: "Space ID (for folderless list)",
1072
+ },
1073
+ folderId: {
1074
+ type: "string",
1075
+ required: false,
1076
+ description: "Folder ID (for list in folder)",
1077
+ },
776
1078
  content: { type: "string", required: false, description: "Description" },
777
1079
  dueDate: { type: "string", required: false, description: "Due date" },
778
1080
  priority: { type: "number", required: false, description: "Priority" },
779
- assignee: { type: "number", required: false, description: "Assignee user ID" },
1081
+ assignee: {
1082
+ type: "number",
1083
+ required: false,
1084
+ description: "Assignee user ID",
1085
+ },
780
1086
  status: { type: "string", required: false, description: "Status" },
781
1087
  },
782
1088
  async execute(input, ctx) {
@@ -786,13 +1092,17 @@ export default function clickup(rl) {
786
1092
  delete body.folderId;
787
1093
  if (dueDate)
788
1094
  body.due_date = new Date(dueDate).getTime();
789
- const endpoint = folderId ? `/folder/${folderId}/list` : `/space/${spaceId}/list`;
1095
+ const endpoint = folderId
1096
+ ? `/folder/${folderId}/list`
1097
+ : `/space/${spaceId}/list`;
790
1098
  return apiRequest(getToken(ctx), "POST", endpoint, body);
791
1099
  },
792
1100
  });
793
1101
  rl.registerAction("list.get", {
794
1102
  description: "Get a list",
795
- inputSchema: { listId: { type: "string", required: true, description: "List ID" } },
1103
+ inputSchema: {
1104
+ listId: { type: "string", required: true, description: "List ID" },
1105
+ },
796
1106
  async execute(input, ctx) {
797
1107
  return apiRequest(getToken(ctx), "GET", `/list/${input.listId}`);
798
1108
  },
@@ -800,9 +1110,17 @@ export default function clickup(rl) {
800
1110
  rl.registerAction("list.list", {
801
1111
  description: "List lists in a folder or space",
802
1112
  inputSchema: {
803
- spaceId: { type: "string", required: false, description: "Space ID (for folderless)" },
1113
+ spaceId: {
1114
+ type: "string",
1115
+ required: false,
1116
+ description: "Space ID (for folderless)",
1117
+ },
804
1118
  folderId: { type: "string", required: false, description: "Folder ID" },
805
- archived: { type: "boolean", required: false, description: "Include archived" },
1119
+ archived: {
1120
+ type: "boolean",
1121
+ required: false,
1122
+ description: "Include archived",
1123
+ },
806
1124
  limit: { type: "number", required: false, description: "Max results" },
807
1125
  },
808
1126
  async execute(input, ctx) {
@@ -810,7 +1128,9 @@ export default function clickup(rl) {
810
1128
  const qs = {};
811
1129
  if (archived)
812
1130
  qs.archived = archived;
813
- const endpoint = folderId ? `/folder/${folderId}/list` : `/space/${spaceId}/list`;
1131
+ const endpoint = folderId
1132
+ ? `/folder/${folderId}/list`
1133
+ : `/space/${spaceId}/list`;
814
1134
  const data = (await apiRequest(getToken(ctx), "GET", endpoint, undefined, qs));
815
1135
  const lists = data.lists ?? [];
816
1136
  if (limit)
@@ -827,7 +1147,11 @@ export default function clickup(rl) {
827
1147
  dueDate: { type: "string", required: false, description: "Due date" },
828
1148
  priority: { type: "number", required: false, description: "Priority" },
829
1149
  assignee: { type: "number", required: false, description: "Assignee" },
830
- unsetStatus: { type: "boolean", required: false, description: "Unset status" },
1150
+ unsetStatus: {
1151
+ type: "boolean",
1152
+ required: false,
1153
+ description: "Unset status",
1154
+ },
831
1155
  },
832
1156
  async execute(input, ctx) {
833
1157
  const { listId, dueDate, ...rest } = input;
@@ -840,7 +1164,9 @@ export default function clickup(rl) {
840
1164
  });
841
1165
  rl.registerAction("list.delete", {
842
1166
  description: "Delete a list",
843
- inputSchema: { listId: { type: "string", required: true, description: "List ID" } },
1167
+ inputSchema: {
1168
+ listId: { type: "string", required: true, description: "List ID" },
1169
+ },
844
1170
  async execute(input, ctx) {
845
1171
  await apiRequest(getToken(ctx), "DELETE", `/list/${input.listId}`);
846
1172
  return { success: true };
@@ -863,7 +1189,9 @@ export default function clickup(rl) {
863
1189
  });
864
1190
  rl.registerAction("list.getCustomFields", {
865
1191
  description: "Get custom fields for a list",
866
- inputSchema: { listId: { type: "string", required: true, description: "List ID" } },
1192
+ inputSchema: {
1193
+ listId: { type: "string", required: true, description: "List ID" },
1194
+ },
867
1195
  async execute(input, ctx) {
868
1196
  const data = (await apiRequest(getToken(ctx), "GET", `/list/${input.listId}/field`));
869
1197
  return data.fields;
@@ -875,9 +1203,21 @@ export default function clickup(rl) {
875
1203
  inputSchema: {
876
1204
  teamId: { type: "string", required: true, description: "Team ID" },
877
1205
  taskId: { type: "string", required: true, description: "Task ID" },
878
- start: { type: "string", required: true, description: "Start time (ISO 8601)" },
879
- duration: { type: "number", required: true, description: "Duration in minutes" },
880
- description: { type: "string", required: false, description: "Description" },
1206
+ start: {
1207
+ type: "string",
1208
+ required: true,
1209
+ description: "Start time (ISO 8601)",
1210
+ },
1211
+ duration: {
1212
+ type: "number",
1213
+ required: true,
1214
+ description: "Duration in minutes",
1215
+ },
1216
+ description: {
1217
+ type: "string",
1218
+ required: false,
1219
+ description: "Description",
1220
+ },
881
1221
  billable: { type: "boolean", required: false, description: "Billable" },
882
1222
  },
883
1223
  async execute(input, ctx) {
@@ -897,7 +1237,11 @@ export default function clickup(rl) {
897
1237
  description: "Get a time entry (or current running timer)",
898
1238
  inputSchema: {
899
1239
  teamId: { type: "string", required: true, description: "Team ID" },
900
- timeEntryId: { type: "string", required: false, description: "Time entry ID (omit for current)" },
1240
+ timeEntryId: {
1241
+ type: "string",
1242
+ required: false,
1243
+ description: "Time entry ID (omit for current)",
1244
+ },
901
1245
  },
902
1246
  async execute(input, ctx) {
903
1247
  const { teamId, timeEntryId } = input;
@@ -912,13 +1256,26 @@ export default function clickup(rl) {
912
1256
  description: "List time entries for a team",
913
1257
  inputSchema: {
914
1258
  teamId: { type: "string", required: true, description: "Team ID" },
915
- startDate: { type: "string", required: false, description: "Start date filter" },
916
- endDate: { type: "string", required: false, description: "End date filter" },
917
- assignee: { type: "array", required: false, description: "Assignee user IDs" },
1259
+ startDate: {
1260
+ type: "string",
1261
+ required: false,
1262
+ description: "Start date filter",
1263
+ },
1264
+ endDate: {
1265
+ type: "string",
1266
+ required: false,
1267
+ description: "End date filter",
1268
+ },
1269
+ assignee: {
1270
+ type: "array",
1271
+ required: false,
1272
+ description: "Assignee user IDs",
1273
+ },
918
1274
  limit: { type: "number", required: false, description: "Max results" },
919
1275
  },
920
1276
  async execute(input, ctx) {
921
- const { teamId, startDate, endDate, assignee, limit } = (input ?? {});
1277
+ const { teamId, startDate, endDate, assignee, limit } = (input ??
1278
+ {});
922
1279
  const qs = {};
923
1280
  if (startDate)
924
1281
  qs.start_date = new Date(startDate).getTime();
@@ -937,10 +1294,22 @@ export default function clickup(rl) {
937
1294
  description: "Update a time entry",
938
1295
  inputSchema: {
939
1296
  teamId: { type: "string", required: true, description: "Team ID" },
940
- timeEntryId: { type: "string", required: true, description: "Time entry ID" },
1297
+ timeEntryId: {
1298
+ type: "string",
1299
+ required: true,
1300
+ description: "Time entry ID",
1301
+ },
941
1302
  start: { type: "string", required: false, description: "Start time" },
942
- duration: { type: "number", required: false, description: "Duration in minutes" },
943
- description: { type: "string", required: false, description: "Description" },
1303
+ duration: {
1304
+ type: "number",
1305
+ required: false,
1306
+ description: "Duration in minutes",
1307
+ },
1308
+ description: {
1309
+ type: "string",
1310
+ required: false,
1311
+ description: "Description",
1312
+ },
944
1313
  billable: { type: "boolean", required: false, description: "Billable" },
945
1314
  },
946
1315
  async execute(input, ctx) {
@@ -959,7 +1328,11 @@ export default function clickup(rl) {
959
1328
  inputSchema: {
960
1329
  teamId: { type: "string", required: true, description: "Team ID" },
961
1330
  taskId: { type: "string", required: true, description: "Task ID" },
962
- description: { type: "string", required: false, description: "Description" },
1331
+ description: {
1332
+ type: "string",
1333
+ required: false,
1334
+ description: "Description",
1335
+ },
963
1336
  billable: { type: "boolean", required: false, description: "Billable" },
964
1337
  },
965
1338
  async execute(input, ctx) {
@@ -984,7 +1357,11 @@ export default function clickup(rl) {
984
1357
  description: "Delete a time entry",
985
1358
  inputSchema: {
986
1359
  teamId: { type: "string", required: true, description: "Team ID" },
987
- timeEntryId: { type: "string", required: true, description: "Time entry ID" },
1360
+ timeEntryId: {
1361
+ type: "string",
1362
+ required: true,
1363
+ description: "Time entry ID",
1364
+ },
988
1365
  },
989
1366
  async execute(input, ctx) {
990
1367
  const { teamId, timeEntryId } = input;
@@ -997,8 +1374,16 @@ export default function clickup(rl) {
997
1374
  description: "Add tags to time entries",
998
1375
  inputSchema: {
999
1376
  teamId: { type: "string", required: true, description: "Team ID" },
1000
- timeEntryIds: { type: "array", required: true, description: "Array of time entry IDs" },
1001
- tags: { type: "array", required: true, description: "Array of {name, tag_bg, tag_fg} objects" },
1377
+ timeEntryIds: {
1378
+ type: "array",
1379
+ required: true,
1380
+ description: "Array of time entry IDs",
1381
+ },
1382
+ tags: {
1383
+ type: "array",
1384
+ required: true,
1385
+ description: "Array of {name, tag_bg, tag_fg} objects",
1386
+ },
1002
1387
  },
1003
1388
  async execute(input, ctx) {
1004
1389
  const { teamId, timeEntryIds, tags } = input;
@@ -1028,8 +1413,16 @@ export default function clickup(rl) {
1028
1413
  description: "Remove tags from time entries",
1029
1414
  inputSchema: {
1030
1415
  teamId: { type: "string", required: true, description: "Team ID" },
1031
- timeEntryIds: { type: "array", required: true, description: "Array of time entry IDs" },
1032
- tagNames: { type: "array", required: true, description: "Array of tag names to remove" },
1416
+ timeEntryIds: {
1417
+ type: "array",
1418
+ required: true,
1419
+ description: "Array of time entry IDs",
1420
+ },
1421
+ tagNames: {
1422
+ type: "array",
1423
+ required: true,
1424
+ description: "Array of tag names to remove",
1425
+ },
1033
1426
  },
1034
1427
  async execute(input, ctx) {
1035
1428
  const { teamId, timeEntryIds, tagNames } = input;