@unclick/mcp-server 0.2.3 → 0.2.4

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 (177) hide show
  1. package/README.md +139 -153
  2. package/dist/airtable-tool.d.ts +2 -0
  3. package/dist/airtable-tool.d.ts.map +1 -0
  4. package/dist/airtable-tool.js +154 -0
  5. package/dist/airtable-tool.js.map +1 -0
  6. package/dist/anthropic-tool.d.ts +3 -0
  7. package/dist/anthropic-tool.d.ts.map +1 -0
  8. package/dist/anthropic-tool.js +123 -0
  9. package/dist/anthropic-tool.js.map +1 -0
  10. package/dist/asana-tool.d.ts +8 -0
  11. package/dist/asana-tool.d.ts.map +1 -0
  12. package/dist/asana-tool.js +218 -0
  13. package/dist/asana-tool.js.map +1 -0
  14. package/dist/calendly-tool.d.ts +6 -0
  15. package/dist/calendly-tool.d.ts.map +1 -0
  16. package/dist/calendly-tool.js +182 -0
  17. package/dist/calendly-tool.js.map +1 -0
  18. package/dist/clickup-tool.d.ts +2 -0
  19. package/dist/clickup-tool.d.ts.map +1 -0
  20. package/dist/clickup-tool.js +153 -0
  21. package/dist/clickup-tool.js.map +1 -0
  22. package/dist/connectors/figma.d.ts +3 -0
  23. package/dist/connectors/figma.d.ts.map +1 -0
  24. package/dist/connectors/figma.js +18 -0
  25. package/dist/connectors/figma.js.map +1 -0
  26. package/dist/connectors/index.d.ts +3 -1
  27. package/dist/connectors/index.d.ts.map +1 -1
  28. package/dist/connectors/index.js +5 -1
  29. package/dist/connectors/index.js.map +1 -1
  30. package/dist/connectors/line.d.ts +3 -0
  31. package/dist/connectors/line.d.ts.map +1 -0
  32. package/dist/connectors/line.js +18 -0
  33. package/dist/connectors/line.js.map +1 -0
  34. package/dist/ebay-tool.d.ts +5 -0
  35. package/dist/ebay-tool.d.ts.map +1 -0
  36. package/dist/ebay-tool.js +179 -0
  37. package/dist/ebay-tool.js.map +1 -0
  38. package/dist/elevenlabs-tool.d.ts +6 -0
  39. package/dist/elevenlabs-tool.d.ts.map +1 -0
  40. package/dist/elevenlabs-tool.js +166 -0
  41. package/dist/elevenlabs-tool.js.map +1 -0
  42. package/dist/etsy-tool.d.ts +6 -0
  43. package/dist/etsy-tool.d.ts.map +1 -0
  44. package/dist/etsy-tool.js +125 -0
  45. package/dist/etsy-tool.js.map +1 -0
  46. package/dist/exchangerate-tool.d.ts +5 -0
  47. package/dist/exchangerate-tool.d.ts.map +1 -0
  48. package/dist/exchangerate-tool.js +139 -0
  49. package/dist/exchangerate-tool.js.map +1 -0
  50. package/dist/figma-tool.d.ts +8 -0
  51. package/dist/figma-tool.d.ts.map +1 -0
  52. package/dist/figma-tool.js +231 -0
  53. package/dist/figma-tool.js.map +1 -0
  54. package/dist/gdelt-tool.d.ts +5 -0
  55. package/dist/gdelt-tool.d.ts.map +1 -0
  56. package/dist/gdelt-tool.js +177 -0
  57. package/dist/gdelt-tool.js.map +1 -0
  58. package/dist/github-tool.d.ts +2 -0
  59. package/dist/github-tool.d.ts.map +1 -0
  60. package/dist/github-tool.js +165 -0
  61. package/dist/github-tool.js.map +1 -0
  62. package/dist/gitlab-tool.d.ts +2 -0
  63. package/dist/gitlab-tool.d.ts.map +1 -0
  64. package/dist/gitlab-tool.js +127 -0
  65. package/dist/gitlab-tool.js.map +1 -0
  66. package/dist/igdb-tool.d.ts +6 -0
  67. package/dist/igdb-tool.d.ts.map +1 -0
  68. package/dist/igdb-tool.js +140 -0
  69. package/dist/igdb-tool.js.map +1 -0
  70. package/dist/line-tool.d.ts +7 -0
  71. package/dist/line-tool.d.ts.map +1 -0
  72. package/dist/line-tool.js +188 -0
  73. package/dist/line-tool.js.map +1 -0
  74. package/dist/linear-tool.d.ts +2 -0
  75. package/dist/linear-tool.d.ts.map +1 -0
  76. package/dist/linear-tool.js +186 -0
  77. package/dist/linear-tool.js.map +1 -0
  78. package/dist/monday-tool.d.ts +7 -0
  79. package/dist/monday-tool.d.ts.map +1 -0
  80. package/dist/monday-tool.js +206 -0
  81. package/dist/monday-tool.js.map +1 -0
  82. package/dist/openai-tool.d.ts +6 -0
  83. package/dist/openai-tool.d.ts.map +1 -0
  84. package/dist/openai-tool.js +227 -0
  85. package/dist/openai-tool.js.map +1 -0
  86. package/dist/paypal-tool.d.ts +3 -0
  87. package/dist/paypal-tool.d.ts.map +1 -0
  88. package/dist/paypal-tool.js +157 -0
  89. package/dist/paypal-tool.js.map +1 -0
  90. package/dist/pinterest-tool.d.ts +7 -0
  91. package/dist/pinterest-tool.d.ts.map +1 -0
  92. package/dist/pinterest-tool.js +219 -0
  93. package/dist/pinterest-tool.js.map +1 -0
  94. package/dist/plaid-tool.d.ts +6 -0
  95. package/dist/plaid-tool.d.ts.map +1 -0
  96. package/dist/plaid-tool.js +149 -0
  97. package/dist/plaid-tool.js.map +1 -0
  98. package/dist/postman-tool.d.ts +2 -0
  99. package/dist/postman-tool.d.ts.map +1 -0
  100. package/dist/postman-tool.js +92 -0
  101. package/dist/postman-tool.js.map +1 -0
  102. package/dist/pushover-tool.d.ts +6 -0
  103. package/dist/pushover-tool.d.ts.map +1 -0
  104. package/dist/pushover-tool.js +146 -0
  105. package/dist/pushover-tool.js.map +1 -0
  106. package/dist/quickbooks-tool.d.ts +5 -0
  107. package/dist/quickbooks-tool.d.ts.map +1 -0
  108. package/dist/quickbooks-tool.js +160 -0
  109. package/dist/quickbooks-tool.js.map +1 -0
  110. package/dist/replicate-tool.d.ts +7 -0
  111. package/dist/replicate-tool.d.ts.map +1 -0
  112. package/dist/replicate-tool.js +172 -0
  113. package/dist/replicate-tool.js.map +1 -0
  114. package/dist/sentry-tool.d.ts +2 -0
  115. package/dist/sentry-tool.d.ts.map +1 -0
  116. package/dist/sentry-tool.js +123 -0
  117. package/dist/sentry-tool.js.map +1 -0
  118. package/dist/speedrun-tool.d.ts +6 -0
  119. package/dist/speedrun-tool.d.ts.map +1 -0
  120. package/dist/speedrun-tool.js +192 -0
  121. package/dist/speedrun-tool.js.map +1 -0
  122. package/dist/spotify-tool.d.ts +8 -0
  123. package/dist/spotify-tool.d.ts.map +1 -0
  124. package/dist/spotify-tool.js +274 -0
  125. package/dist/spotify-tool.js.map +1 -0
  126. package/dist/square-tool.d.ts +5 -0
  127. package/dist/square-tool.d.ts.map +1 -0
  128. package/dist/square-tool.js +133 -0
  129. package/dist/square-tool.js.map +1 -0
  130. package/dist/stability-tool.d.ts +5 -0
  131. package/dist/stability-tool.d.ts.map +1 -0
  132. package/dist/stability-tool.js +190 -0
  133. package/dist/stability-tool.js.map +1 -0
  134. package/dist/steam-tool.d.ts +6 -0
  135. package/dist/steam-tool.d.ts.map +1 -0
  136. package/dist/steam-tool.js +222 -0
  137. package/dist/steam-tool.js.map +1 -0
  138. package/dist/stripe-tool.d.ts +7 -0
  139. package/dist/stripe-tool.d.ts.map +1 -0
  140. package/dist/stripe-tool.js +181 -0
  141. package/dist/stripe-tool.js.map +1 -0
  142. package/dist/tiktok-tool.d.ts +4 -0
  143. package/dist/tiktok-tool.d.ts.map +1 -0
  144. package/dist/tiktok-tool.js +129 -0
  145. package/dist/tiktok-tool.js.map +1 -0
  146. package/dist/toilets-tool.js +2 -2
  147. package/dist/tool-wiring.d.ts +4066 -18
  148. package/dist/tool-wiring.d.ts.map +1 -1
  149. package/dist/tool-wiring.js +2601 -18
  150. package/dist/tool-wiring.js.map +1 -1
  151. package/dist/trello-tool.d.ts +2 -0
  152. package/dist/trello-tool.d.ts.map +1 -0
  153. package/dist/trello-tool.js +166 -0
  154. package/dist/trello-tool.js.map +1 -0
  155. package/dist/twilio-tool.d.ts +8 -0
  156. package/dist/twilio-tool.d.ts.map +1 -0
  157. package/dist/twilio-tool.js +243 -0
  158. package/dist/twilio-tool.js.map +1 -0
  159. package/dist/whatsapp-tool.d.ts +6 -0
  160. package/dist/whatsapp-tool.d.ts.map +1 -0
  161. package/dist/whatsapp-tool.js +200 -0
  162. package/dist/whatsapp-tool.js.map +1 -0
  163. package/dist/woocommerce-tool.d.ts +4 -0
  164. package/dist/woocommerce-tool.d.ts.map +1 -0
  165. package/dist/woocommerce-tool.js +140 -0
  166. package/dist/woocommerce-tool.js.map +1 -0
  167. package/dist/youtube-tool.d.ts +7 -0
  168. package/dist/youtube-tool.d.ts.map +1 -0
  169. package/dist/youtube-tool.js +196 -0
  170. package/dist/youtube-tool.js.map +1 -0
  171. package/package.json +1 -1
  172. package/server.json +37 -37
  173. package/LICENSE +0 -216
  174. package/dist/cloudflare-worker.d.ts +0 -12
  175. package/dist/cloudflare-worker.d.ts.map +0 -1
  176. package/dist/cloudflare-worker.js +0 -50
  177. package/dist/cloudflare-worker.js.map +0 -1
@@ -0,0 +1,218 @@
1
+ // Asana task management API.
2
+ // Docs: https://developers.asana.com/reference/rest-api-reference
3
+ // Auth: ASANA_API_KEY (Personal Access Token, Bearer)
4
+ // Base: https://app.asana.com/api/1.0
5
+ const ASANA_BASE = "https://app.asana.com/api/1.0";
6
+ function getApiKey(args) {
7
+ const key = String(args.api_key ?? process.env.ASANA_API_KEY ?? "").trim();
8
+ if (!key)
9
+ throw new Error("api_key is required (or set ASANA_API_KEY env var).");
10
+ return key;
11
+ }
12
+ async function asanaGet(apiKey, path, params) {
13
+ const url = new URL(`${ASANA_BASE}${path}`);
14
+ if (params) {
15
+ for (const [k, v] of Object.entries(params)) {
16
+ if (v !== undefined && v !== "")
17
+ url.searchParams.set(k, v);
18
+ }
19
+ }
20
+ const res = await fetch(url.toString(), {
21
+ headers: {
22
+ Authorization: `Bearer ${apiKey}`,
23
+ Accept: "application/json",
24
+ },
25
+ });
26
+ if (res.status === 401)
27
+ throw new Error("Invalid Asana API key.");
28
+ if (res.status === 403)
29
+ throw new Error("Asana: access forbidden.");
30
+ if (res.status === 404)
31
+ throw new Error(`Asana: resource not found at ${path}.`);
32
+ if (res.status === 429)
33
+ throw new Error("Asana rate limit exceeded.");
34
+ if (!res.ok) {
35
+ const body = await res.text().catch(() => "");
36
+ throw new Error(`Asana HTTP ${res.status}: ${body || res.statusText}`);
37
+ }
38
+ return res.json();
39
+ }
40
+ async function asanaPost(apiKey, path, body, method = "POST") {
41
+ const res = await fetch(`${ASANA_BASE}${path}`, {
42
+ method,
43
+ headers: {
44
+ Authorization: `Bearer ${apiKey}`,
45
+ "Content-Type": "application/json",
46
+ Accept: "application/json",
47
+ },
48
+ body: JSON.stringify({ data: body }),
49
+ });
50
+ if (res.status === 401)
51
+ throw new Error("Invalid Asana API key.");
52
+ if (res.status === 403)
53
+ throw new Error("Asana: access forbidden.");
54
+ if (res.status === 404)
55
+ throw new Error(`Asana: resource not found at ${path}.`);
56
+ if (res.status === 429)
57
+ throw new Error("Asana rate limit exceeded.");
58
+ if (!res.ok) {
59
+ const b = await res.text().catch(() => "");
60
+ throw new Error(`Asana HTTP ${res.status}: ${b || res.statusText}`);
61
+ }
62
+ return res.json();
63
+ }
64
+ // list_asana_workspaces
65
+ export async function listAsanaWorkspaces(args) {
66
+ try {
67
+ const apiKey = getApiKey(args);
68
+ const json = await asanaGet(apiKey, "/workspaces");
69
+ const data = (json.data ?? []);
70
+ return {
71
+ count: data.length,
72
+ workspaces: data.map((w) => ({ gid: w.gid, name: w.name })),
73
+ };
74
+ }
75
+ catch (err) {
76
+ return { error: err instanceof Error ? err.message : String(err) };
77
+ }
78
+ }
79
+ // list_asana_projects
80
+ export async function listAsanaProjects(args) {
81
+ try {
82
+ const apiKey = getApiKey(args);
83
+ const workspaceGid = String(args.workspace_gid ?? "").trim();
84
+ if (!workspaceGid)
85
+ return { error: "workspace_gid is required." };
86
+ const params = {
87
+ workspace: workspaceGid,
88
+ opt_fields: "gid,name,color,archived,notes,created_at,modified_at",
89
+ };
90
+ if (args.archived !== undefined)
91
+ params.archived = String(args.archived);
92
+ if (args.limit)
93
+ params.limit = String(args.limit);
94
+ const json = await asanaGet(apiKey, "/projects", params);
95
+ const data = (json.data ?? []);
96
+ return { count: data.length, projects: data };
97
+ }
98
+ catch (err) {
99
+ return { error: err instanceof Error ? err.message : String(err) };
100
+ }
101
+ }
102
+ // list_asana_tasks
103
+ export async function listAsanaTasks(args) {
104
+ try {
105
+ const apiKey = getApiKey(args);
106
+ const projectGid = String(args.project_gid ?? "").trim();
107
+ if (!projectGid)
108
+ return { error: "project_gid is required." };
109
+ const params = {
110
+ project: projectGid,
111
+ opt_fields: "gid,name,completed,due_on,notes,assignee.name,created_at,modified_at",
112
+ };
113
+ if (args.completed !== undefined)
114
+ params.completed_since = args.completed ? "now" : "1970-01-01T00:00:00.000Z";
115
+ if (args.limit)
116
+ params.limit = String(args.limit);
117
+ const json = await asanaGet(apiKey, "/tasks", params);
118
+ const data = (json.data ?? []);
119
+ return { count: data.length, tasks: data };
120
+ }
121
+ catch (err) {
122
+ return { error: err instanceof Error ? err.message : String(err) };
123
+ }
124
+ }
125
+ // create_asana_task
126
+ export async function createAsanaTask(args) {
127
+ try {
128
+ const apiKey = getApiKey(args);
129
+ const name = String(args.name ?? "").trim();
130
+ if (!name)
131
+ return { error: "name is required." };
132
+ const workspaceGid = String(args.workspace_gid ?? "").trim();
133
+ if (!workspaceGid)
134
+ return { error: "workspace_gid is required." };
135
+ const body = { name, workspace: workspaceGid };
136
+ if (args.notes)
137
+ body.notes = String(args.notes);
138
+ if (args.due_on)
139
+ body.due_on = String(args.due_on);
140
+ if (args.assignee)
141
+ body.assignee = String(args.assignee);
142
+ if (args.projects)
143
+ body.projects = args.projects;
144
+ const json = await asanaPost(apiKey, "/tasks", body);
145
+ return json.data;
146
+ }
147
+ catch (err) {
148
+ return { error: err instanceof Error ? err.message : String(err) };
149
+ }
150
+ }
151
+ // update_asana_task
152
+ export async function updateAsanaTask(args) {
153
+ try {
154
+ const apiKey = getApiKey(args);
155
+ const taskGid = String(args.task_gid ?? "").trim();
156
+ if (!taskGid)
157
+ return { error: "task_gid is required." };
158
+ const body = {};
159
+ if (args.name)
160
+ body.name = String(args.name);
161
+ if (args.notes !== undefined)
162
+ body.notes = String(args.notes);
163
+ if (args.completed !== undefined)
164
+ body.completed = Boolean(args.completed);
165
+ if (args.due_on !== undefined)
166
+ body.due_on = args.due_on ? String(args.due_on) : null;
167
+ if (args.assignee !== undefined)
168
+ body.assignee = args.assignee ? String(args.assignee) : null;
169
+ const json = await asanaPost(apiKey, `/tasks/${taskGid}`, body, "PUT");
170
+ return json.data;
171
+ }
172
+ catch (err) {
173
+ return { error: err instanceof Error ? err.message : String(err) };
174
+ }
175
+ }
176
+ // get_asana_task
177
+ export async function getAsanaTask(args) {
178
+ try {
179
+ const apiKey = getApiKey(args);
180
+ const taskGid = String(args.task_gid ?? "").trim();
181
+ if (!taskGid)
182
+ return { error: "task_gid is required." };
183
+ const json = await asanaGet(apiKey, `/tasks/${taskGid}`, {
184
+ opt_fields: "gid,name,completed,due_on,notes,assignee.name,projects.name,workspace.name,created_at,modified_at",
185
+ });
186
+ return json.data;
187
+ }
188
+ catch (err) {
189
+ return { error: err instanceof Error ? err.message : String(err) };
190
+ }
191
+ }
192
+ // search_asana_tasks
193
+ export async function searchAsanaTasks(args) {
194
+ try {
195
+ const apiKey = getApiKey(args);
196
+ const workspaceGid = String(args.workspace_gid ?? "").trim();
197
+ if (!workspaceGid)
198
+ return { error: "workspace_gid is required." };
199
+ const text = String(args.text ?? "").trim();
200
+ if (!text)
201
+ return { error: "text is required." };
202
+ const params = {
203
+ text,
204
+ opt_fields: "gid,name,completed,due_on,notes,assignee.name",
205
+ };
206
+ if (args.completed !== undefined)
207
+ params.completed = String(args.completed);
208
+ if (args.limit)
209
+ params.limit = String(args.limit);
210
+ const json = await asanaGet(apiKey, `/workspaces/${workspaceGid}/tasks/search`, params);
211
+ const data = (json.data ?? []);
212
+ return { count: data.length, tasks: data };
213
+ }
214
+ catch (err) {
215
+ return { error: err instanceof Error ? err.message : String(err) };
216
+ }
217
+ }
218
+ //# sourceMappingURL=asana-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asana-tool.js","sourceRoot":"","sources":["../src/asana-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function getCalendlyUser(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function listCalendlyEventTypes(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function listCalendlyEvents(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function getCalendlyEvent(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function listCalendlyInvitees(args: Record<string, unknown>): Promise<unknown>;
6
+ //# sourceMappingURL=calendly-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendly-tool.d.ts","sourceRoot":"","sources":["../src/calendly-tool.ts"],"names":[],"mappings":"AA0CA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBrF;AAGD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA+B5F;AAGD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkCxF;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAUtF;AAGD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA2B1F"}
@@ -0,0 +1,182 @@
1
+ // Calendly scheduling and event management API.
2
+ // Docs: https://developer.calendly.com/api-docs
3
+ // Auth: CALENDLY_API_KEY (Personal Access Token, Bearer)
4
+ // Base: https://api.calendly.com
5
+ const CALENDLY_BASE = "https://api.calendly.com";
6
+ function getApiKey(args) {
7
+ const key = String(args.api_key ?? process.env.CALENDLY_API_KEY ?? "").trim();
8
+ if (!key)
9
+ throw new Error("api_key is required (or set CALENDLY_API_KEY env var).");
10
+ return key;
11
+ }
12
+ async function calendlyGet(apiKey, path, params) {
13
+ const url = new URL(`${CALENDLY_BASE}${path}`);
14
+ if (params) {
15
+ for (const [k, v] of Object.entries(params)) {
16
+ if (v !== undefined && v !== "")
17
+ url.searchParams.set(k, v);
18
+ }
19
+ }
20
+ const res = await fetch(url.toString(), {
21
+ headers: {
22
+ Authorization: `Bearer ${apiKey}`,
23
+ "Content-Type": "application/json",
24
+ },
25
+ });
26
+ if (res.status === 401)
27
+ throw new Error("Invalid Calendly API key.");
28
+ if (res.status === 403)
29
+ throw new Error("Calendly: access forbidden.");
30
+ if (res.status === 404)
31
+ throw new Error(`Calendly: resource not found at ${path}.`);
32
+ if (res.status === 429)
33
+ throw new Error("Calendly rate limit exceeded.");
34
+ if (!res.ok) {
35
+ const body = await res.text().catch(() => "");
36
+ throw new Error(`Calendly HTTP ${res.status}: ${body || res.statusText}`);
37
+ }
38
+ return res.json();
39
+ }
40
+ // get_calendly_user
41
+ export async function getCalendlyUser(args) {
42
+ try {
43
+ const apiKey = getApiKey(args);
44
+ const json = await calendlyGet(apiKey, "/users/me");
45
+ const r = json.resource;
46
+ return {
47
+ uri: r?.uri,
48
+ name: r?.name,
49
+ email: r?.email,
50
+ timezone: r?.timezone,
51
+ scheduling_url: r?.scheduling_url,
52
+ created_at: r?.created_at,
53
+ current_organization: r?.current_organization,
54
+ };
55
+ }
56
+ catch (err) {
57
+ return { error: err instanceof Error ? err.message : String(err) };
58
+ }
59
+ }
60
+ // list_calendly_event_types
61
+ export async function listCalendlyEventTypes(args) {
62
+ try {
63
+ const apiKey = getApiKey(args);
64
+ // Resolve user URI first if not provided
65
+ let userUri = String(args.user_uri ?? "").trim();
66
+ if (!userUri) {
67
+ const me = await calendlyGet(apiKey, "/users/me");
68
+ userUri = String(me.resource?.uri ?? "");
69
+ }
70
+ const params = { user: userUri };
71
+ if (args.active !== undefined)
72
+ params.active = String(args.active);
73
+ if (args.count)
74
+ params.count = String(args.count);
75
+ const json = await calendlyGet(apiKey, "/event_types", params);
76
+ const collection = (json.collection ?? []);
77
+ return {
78
+ count: collection.length,
79
+ event_types: collection.map((e) => ({
80
+ uri: e.uri,
81
+ name: e.name,
82
+ slug: e.slug,
83
+ active: e.active,
84
+ duration: e.duration,
85
+ kind: e.kind,
86
+ scheduling_url: e.scheduling_url,
87
+ description_plain: e.description_plain,
88
+ })),
89
+ };
90
+ }
91
+ catch (err) {
92
+ return { error: err instanceof Error ? err.message : String(err) };
93
+ }
94
+ }
95
+ // list_calendly_events
96
+ export async function listCalendlyEvents(args) {
97
+ try {
98
+ const apiKey = getApiKey(args);
99
+ let userUri = String(args.user_uri ?? "").trim();
100
+ if (!userUri) {
101
+ const me = await calendlyGet(apiKey, "/users/me");
102
+ userUri = String(me.resource?.uri ?? "");
103
+ }
104
+ const params = { user: userUri };
105
+ if (args.status)
106
+ params.status = String(args.status);
107
+ if (args.min_start_time)
108
+ params.min_start_time = String(args.min_start_time);
109
+ if (args.max_start_time)
110
+ params.max_start_time = String(args.max_start_time);
111
+ if (args.count)
112
+ params.count = String(args.count);
113
+ if (args.sort)
114
+ params.sort = String(args.sort);
115
+ const json = await calendlyGet(apiKey, "/scheduled_events", params);
116
+ const collection = (json.collection ?? []);
117
+ return {
118
+ count: collection.length,
119
+ events: collection.map((e) => ({
120
+ uri: e.uri,
121
+ name: e.name,
122
+ status: e.status,
123
+ start_time: e.start_time,
124
+ end_time: e.end_time,
125
+ event_type: e.event_type,
126
+ location: e.location,
127
+ created_at: e.created_at,
128
+ updated_at: e.updated_at,
129
+ })),
130
+ };
131
+ }
132
+ catch (err) {
133
+ return { error: err instanceof Error ? err.message : String(err) };
134
+ }
135
+ }
136
+ // get_calendly_event
137
+ export async function getCalendlyEvent(args) {
138
+ try {
139
+ const apiKey = getApiKey(args);
140
+ const eventUuid = String(args.event_uuid ?? "").trim();
141
+ if (!eventUuid)
142
+ return { error: "event_uuid is required." };
143
+ const json = await calendlyGet(apiKey, `/scheduled_events/${eventUuid}`);
144
+ return json.resource;
145
+ }
146
+ catch (err) {
147
+ return { error: err instanceof Error ? err.message : String(err) };
148
+ }
149
+ }
150
+ // list_calendly_invitees
151
+ export async function listCalendlyInvitees(args) {
152
+ try {
153
+ const apiKey = getApiKey(args);
154
+ const eventUuid = String(args.event_uuid ?? "").trim();
155
+ if (!eventUuid)
156
+ return { error: "event_uuid is required." };
157
+ const params = {};
158
+ if (args.status)
159
+ params.status = String(args.status);
160
+ if (args.count)
161
+ params.count = String(args.count);
162
+ const json = await calendlyGet(apiKey, `/scheduled_events/${eventUuid}/invitees`, params);
163
+ const collection = (json.collection ?? []);
164
+ return {
165
+ count: collection.length,
166
+ invitees: collection.map((i) => ({
167
+ uri: i.uri,
168
+ email: i.email,
169
+ name: i.name,
170
+ status: i.status,
171
+ timezone: i.timezone,
172
+ created_at: i.created_at,
173
+ cancel_url: i.cancel_url,
174
+ reschedule_url: i.reschedule_url,
175
+ })),
176
+ };
177
+ }
178
+ catch (err) {
179
+ return { error: err instanceof Error ? err.message : String(err) };
180
+ }
181
+ }
182
+ //# sourceMappingURL=calendly-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendly-tool.js","sourceRoot":"","sources":["../src/calendly-tool.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,gDAAgD;AAChD,yDAAyD;AACzD,iCAAiC;AAEjC,MAAM,aAAa,GAAG,0BAA0B,CAAC;AAEjD,SAAS,SAAS,CAAC,IAA6B;IAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9E,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IACpF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,MAAc,EACd,IAAY,EACZ,MAA+B;IAE/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,aAAa,GAAG,IAAI,EAAE,CAAC,CAAC;IAC/C,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;QACtC,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,EAAE;YACjC,cAAc,EAAE,kBAAkB;SACnC;KACF,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACrE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACvE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,GAAG,CAAC,CAAC;IACpF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACzE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAsB,CAAC;AACxC,CAAC;AAED,oBAAoB;AACpB,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAA6B;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,WAAW,CAA4B,CAAC;QAC/E,MAAM,CAAC,GAAG,IAAI,CAAC,QAA+C,CAAC;QAC/D,OAAO;YACL,GAAG,EAAE,CAAC,EAAE,GAAG;YACX,IAAI,EAAE,CAAC,EAAE,IAAI;YACb,KAAK,EAAE,CAAC,EAAE,KAAK;YACf,QAAQ,EAAE,CAAC,EAAE,QAAQ;YACrB,cAAc,EAAE,CAAC,EAAE,cAAc;YACjC,UAAU,EAAE,CAAC,EAAE,UAAU;YACzB,oBAAoB,EAAE,CAAC,EAAE,oBAAoB;SAC9C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,4BAA4B;AAC5B,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAA6B;IACxE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,yCAAyC;QACzC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,WAAW,CAA4B,CAAC;YAC7E,OAAO,GAAG,MAAM,CAAE,EAAE,CAAC,QAAoC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,MAAM,GAA2B,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACzD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAA4B,CAAC;QAC1F,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAmC,CAAC;QAC7E,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,MAAM;YACxB,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClC,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,cAAc,EAAE,CAAC,CAAC,cAAc;gBAChC,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;aACvC,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,uBAAuB;AACvB,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAA6B;IACpE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,WAAW,CAA4B,CAAC;YAC7E,OAAO,GAAG,MAAM,CAAE,EAAE,CAAC,QAAoC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,MAAM,GAA2B,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACzD,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,cAAc;YAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,cAAc;YAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAA4B,CAAC;QAC/F,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAmC,CAAC;QAC7E,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,MAAM;YACxB,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,UAAU,EAAE,CAAC,CAAC,UAAU;aACzB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,qBAAqB;AACrB,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAA6B;IAClE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,qBAAqB,SAAS,EAAE,CAA4B,CAAC;QACpG,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,yBAAyB;AACzB,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAA6B;IACtE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;QAC5D,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,qBAAqB,SAAS,WAAW,EAAE,MAAM,CAA4B,CAAC;QACrH,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAmC,CAAC;QAC7E,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,MAAM;YACxB,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/B,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,cAAc,EAAE,CAAC,CAAC,cAAc;aACjC,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function clickupAction(action: string, args: Record<string, unknown>): Promise<unknown>;
2
+ //# sourceMappingURL=clickup-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickup-tool.d.ts","sourceRoot":"","sources":["../src/clickup-tool.ts"],"names":[],"mappings":"AAiIA,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
@@ -0,0 +1,153 @@
1
+ // ── ClickUp API v2 tool ────────────────────────────────────────────────────
2
+ // Wraps the ClickUp API v2 (https://api.clickup.com/api/v2) via fetch.
3
+ // Auth: API key passed as api_key.
4
+ // No external dependencies.
5
+ const CLICKUP_API = "https://api.clickup.com/api/v2";
6
+ // ── Fetch helper ───────────────────────────────────────────────────────────────
7
+ async function clickupFetch(apiKey, method, path, body, query) {
8
+ const url = new URL(`${CLICKUP_API}${path}`);
9
+ if (query) {
10
+ for (const [k, v] of Object.entries(query)) {
11
+ if (v !== undefined && v !== "")
12
+ url.searchParams.set(k, String(v));
13
+ }
14
+ }
15
+ const headers = {
16
+ Authorization: apiKey,
17
+ "User-Agent": "UnClick-MCP/1.0",
18
+ };
19
+ if (body !== undefined)
20
+ headers["Content-Type"] = "application/json";
21
+ let response;
22
+ try {
23
+ response = await fetch(url.toString(), {
24
+ method,
25
+ headers,
26
+ body: body !== undefined ? JSON.stringify(body) : undefined,
27
+ });
28
+ }
29
+ catch (err) {
30
+ return { error: `Network error reaching ClickUp API: ${err instanceof Error ? err.message : String(err)}` };
31
+ }
32
+ const text = await response.text();
33
+ let data;
34
+ try {
35
+ data = JSON.parse(text);
36
+ }
37
+ catch {
38
+ data = { raw: text };
39
+ }
40
+ if (response.status === 401)
41
+ return { error: "ClickUp API key is invalid. Check your api_key.", status: 401 };
42
+ if (response.status === 403)
43
+ return { error: "Insufficient permissions for this ClickUp resource.", status: 403 };
44
+ if (response.status === 404)
45
+ return { error: "Resource not found. Check the ID provided.", status: 404 };
46
+ if (response.status === 429)
47
+ return { error: "ClickUp rate limit exceeded. Please wait and retry.", status: 429 };
48
+ if (!response.ok) {
49
+ const detail = data?.err ?? text;
50
+ return { error: `ClickUp API error ${response.status}: ${detail}`, status: response.status };
51
+ }
52
+ return data;
53
+ }
54
+ // ── Action implementations ─────────────────────────────────────────────────────
55
+ async function getWorkspaces(apiKey) {
56
+ return clickupFetch(apiKey, "GET", "/team");
57
+ }
58
+ async function getSpaces(apiKey, args) {
59
+ const teamId = String(args.team_id ?? "").trim();
60
+ if (!teamId)
61
+ return { error: "team_id is required." };
62
+ return clickupFetch(apiKey, "GET", `/team/${encodeURIComponent(teamId)}/space`, undefined, {
63
+ archived: args.archived ? String(args.archived) : "false",
64
+ });
65
+ }
66
+ async function getLists(apiKey, args) {
67
+ const folderId = String(args.folder_id ?? "").trim();
68
+ const spaceId = String(args.space_id ?? "").trim();
69
+ if (folderId) {
70
+ return clickupFetch(apiKey, "GET", `/folder/${encodeURIComponent(folderId)}/list`);
71
+ }
72
+ if (spaceId) {
73
+ return clickupFetch(apiKey, "GET", `/space/${encodeURIComponent(spaceId)}/list`);
74
+ }
75
+ return { error: "folder_id or space_id is required." };
76
+ }
77
+ async function getTasks(apiKey, args) {
78
+ const listId = String(args.list_id ?? "").trim();
79
+ if (!listId)
80
+ return { error: "list_id is required." };
81
+ return clickupFetch(apiKey, "GET", `/list/${encodeURIComponent(listId)}/task`, undefined, {
82
+ archived: args.archived ? "true" : undefined,
83
+ include_closed: args.include_closed ? "true" : undefined,
84
+ assignees: args.assignees ? String(args.assignees) : undefined,
85
+ statuses: args.statuses ? String(args.statuses) : undefined,
86
+ page: args.page ? Number(args.page) : undefined,
87
+ });
88
+ }
89
+ async function createTask(apiKey, args) {
90
+ const listId = String(args.list_id ?? "").trim();
91
+ const name = String(args.name ?? "").trim();
92
+ if (!listId)
93
+ return { error: "list_id is required." };
94
+ if (!name)
95
+ return { error: "name is required." };
96
+ const body = { name };
97
+ if (args.description)
98
+ body.description = String(args.description);
99
+ if (args.assignees)
100
+ body.assignees = args.assignees;
101
+ if (args.tags)
102
+ body.tags = args.tags;
103
+ if (args.status)
104
+ body.status = String(args.status);
105
+ if (args.priority)
106
+ body.priority = Number(args.priority);
107
+ if (args.due_date)
108
+ body.due_date = Number(args.due_date);
109
+ return clickupFetch(apiKey, "POST", `/list/${encodeURIComponent(listId)}/task`, body);
110
+ }
111
+ async function updateTask(apiKey, args) {
112
+ const taskId = String(args.task_id ?? "").trim();
113
+ if (!taskId)
114
+ return { error: "task_id is required." };
115
+ const body = {};
116
+ if (args.name)
117
+ body.name = String(args.name);
118
+ if (args.description)
119
+ body.description = String(args.description);
120
+ if (args.status)
121
+ body.status = String(args.status);
122
+ if (args.priority)
123
+ body.priority = Number(args.priority);
124
+ if (args.due_date)
125
+ body.due_date = Number(args.due_date);
126
+ if (args.assignees)
127
+ body.assignees = args.assignees;
128
+ return clickupFetch(apiKey, "PUT", `/task/${encodeURIComponent(taskId)}`, body);
129
+ }
130
+ // ── Public dispatcher ──────────────────────────────────────────────────────────
131
+ export async function clickupAction(action, args) {
132
+ const apiKey = String(args.api_key ?? "").trim();
133
+ if (!apiKey)
134
+ return { error: "api_key is required." };
135
+ try {
136
+ switch (action) {
137
+ case "get_workspaces": return getWorkspaces(apiKey);
138
+ case "get_spaces": return getSpaces(apiKey, args);
139
+ case "get_lists": return getLists(apiKey, args);
140
+ case "get_tasks": return getTasks(apiKey, args);
141
+ case "create_task": return createTask(apiKey, args);
142
+ case "update_task": return updateTask(apiKey, args);
143
+ default:
144
+ return {
145
+ error: `Unknown ClickUp action: "${action}". Valid actions: get_workspaces, get_spaces, get_lists, get_tasks, create_task, update_task.`,
146
+ };
147
+ }
148
+ }
149
+ catch (err) {
150
+ return { error: err instanceof Error ? err.message : String(err) };
151
+ }
152
+ }
153
+ //# sourceMappingURL=clickup-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickup-tool.js","sourceRoot":"","sources":["../src/clickup-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ConnectorConfig } from "./index.js";
2
+ export declare const figmaConnector: ConnectorConfig;
3
+ //# sourceMappingURL=figma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"figma.d.ts","sourceRoot":"","sources":["../../src/connectors/figma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,eAgB5B,CAAC"}
@@ -0,0 +1,18 @@
1
+ export const figmaConnector = {
2
+ name: "Figma",
3
+ slug: "figma",
4
+ authType: "api_key",
5
+ description: "Figma REST API. Read file structure, export node images, manage comments, and browse team projects and published components via a Personal Access Token.",
6
+ credentialFields: [
7
+ {
8
+ key: "personal_access_token",
9
+ label: "Personal Access Token",
10
+ description: "Generate a token in Figma under Account Settings → Personal access tokens. Give it read access to files and comments.",
11
+ secret: true,
12
+ placeholder: "figd_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
13
+ findGuideUrl: "https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens",
14
+ },
15
+ ],
16
+ docsUrl: "https://www.figma.com/developers/api",
17
+ };
18
+ //# sourceMappingURL=figma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"figma.js","sourceRoot":"","sources":["../../src/connectors/figma.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,0JAA0J;IACvK,gBAAgB,EAAE;QAChB;YACE,GAAG,EAAU,uBAAuB;YACpC,KAAK,EAAQ,uBAAuB;YACpC,WAAW,EAAE,uHAAuH;YACpI,MAAM,EAAO,IAAI;YACjB,WAAW,EAAE,2CAA2C;YACxD,YAAY,EAAE,sFAAsF;SACrG;KACF;IACD,OAAO,EAAE,sCAAsC;CAChD,CAAC"}