@unclick/mcp-server 0.2.3 → 0.2.5

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 (324) 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/algolia-tool.d.ts +5 -0
  7. package/dist/algolia-tool.d.ts.map +1 -0
  8. package/dist/algolia-tool.js +121 -0
  9. package/dist/algolia-tool.js.map +1 -0
  10. package/dist/anthropic-tool.d.ts +3 -0
  11. package/dist/anthropic-tool.d.ts.map +1 -0
  12. package/dist/anthropic-tool.js +123 -0
  13. package/dist/anthropic-tool.js.map +1 -0
  14. package/dist/asana-tool.d.ts +8 -0
  15. package/dist/asana-tool.d.ts.map +1 -0
  16. package/dist/asana-tool.js +218 -0
  17. package/dist/asana-tool.js.map +1 -0
  18. package/dist/assemblyai-tool.d.ts +7 -0
  19. package/dist/assemblyai-tool.d.ts.map +1 -0
  20. package/dist/assemblyai-tool.js +127 -0
  21. package/dist/assemblyai-tool.js.map +1 -0
  22. package/dist/calendly-tool.d.ts +6 -0
  23. package/dist/calendly-tool.d.ts.map +1 -0
  24. package/dist/calendly-tool.js +182 -0
  25. package/dist/calendly-tool.js.map +1 -0
  26. package/dist/circleci-tool.d.ts +7 -0
  27. package/dist/circleci-tool.d.ts.map +1 -0
  28. package/dist/circleci-tool.js +133 -0
  29. package/dist/circleci-tool.js.map +1 -0
  30. package/dist/clickup-tool.d.ts +2 -0
  31. package/dist/clickup-tool.d.ts.map +1 -0
  32. package/dist/clickup-tool.js +153 -0
  33. package/dist/clickup-tool.js.map +1 -0
  34. package/dist/cohere-tool.d.ts +7 -0
  35. package/dist/cohere-tool.d.ts.map +1 -0
  36. package/dist/cohere-tool.js +225 -0
  37. package/dist/cohere-tool.js.map +1 -0
  38. package/dist/connectors/figma.d.ts +3 -0
  39. package/dist/connectors/figma.d.ts.map +1 -0
  40. package/dist/connectors/figma.js +18 -0
  41. package/dist/connectors/figma.js.map +1 -0
  42. package/dist/connectors/index.d.ts +3 -1
  43. package/dist/connectors/index.d.ts.map +1 -1
  44. package/dist/connectors/index.js +5 -1
  45. package/dist/connectors/index.js.map +1 -1
  46. package/dist/connectors/line.d.ts +3 -0
  47. package/dist/connectors/line.d.ts.map +1 -0
  48. package/dist/connectors/line.js +18 -0
  49. package/dist/connectors/line.js.map +1 -0
  50. package/dist/convertkit-tool.d.ts +7 -0
  51. package/dist/convertkit-tool.d.ts.map +1 -0
  52. package/dist/convertkit-tool.js +213 -0
  53. package/dist/convertkit-tool.js.map +1 -0
  54. package/dist/datadog-tool.d.ts +7 -0
  55. package/dist/datadog-tool.d.ts.map +1 -0
  56. package/dist/datadog-tool.js +121 -0
  57. package/dist/datadog-tool.js.map +1 -0
  58. package/dist/deepl-tool.d.ts +5 -0
  59. package/dist/deepl-tool.d.ts.map +1 -0
  60. package/dist/deepl-tool.js +137 -0
  61. package/dist/deepl-tool.js.map +1 -0
  62. package/dist/ebay-tool.d.ts +5 -0
  63. package/dist/ebay-tool.d.ts.map +1 -0
  64. package/dist/ebay-tool.js +179 -0
  65. package/dist/ebay-tool.js.map +1 -0
  66. package/dist/elevenlabs-tool.d.ts +6 -0
  67. package/dist/elevenlabs-tool.d.ts.map +1 -0
  68. package/dist/elevenlabs-tool.js +166 -0
  69. package/dist/elevenlabs-tool.js.map +1 -0
  70. package/dist/etsy-tool.d.ts +6 -0
  71. package/dist/etsy-tool.d.ts.map +1 -0
  72. package/dist/etsy-tool.js +125 -0
  73. package/dist/etsy-tool.js.map +1 -0
  74. package/dist/exchangerate-tool.d.ts +5 -0
  75. package/dist/exchangerate-tool.d.ts.map +1 -0
  76. package/dist/exchangerate-tool.js +139 -0
  77. package/dist/exchangerate-tool.js.map +1 -0
  78. package/dist/figma-tool.d.ts +8 -0
  79. package/dist/figma-tool.d.ts.map +1 -0
  80. package/dist/figma-tool.js +231 -0
  81. package/dist/figma-tool.js.map +1 -0
  82. package/dist/flyio-tool.d.ts +6 -0
  83. package/dist/flyio-tool.d.ts.map +1 -0
  84. package/dist/flyio-tool.js +158 -0
  85. package/dist/flyio-tool.js.map +1 -0
  86. package/dist/gdelt-tool.d.ts +5 -0
  87. package/dist/gdelt-tool.d.ts.map +1 -0
  88. package/dist/gdelt-tool.js +177 -0
  89. package/dist/gdelt-tool.js.map +1 -0
  90. package/dist/github-tool.d.ts +2 -0
  91. package/dist/github-tool.d.ts.map +1 -0
  92. package/dist/github-tool.js +165 -0
  93. package/dist/github-tool.js.map +1 -0
  94. package/dist/gitlab-tool.d.ts +2 -0
  95. package/dist/gitlab-tool.d.ts.map +1 -0
  96. package/dist/gitlab-tool.js +127 -0
  97. package/dist/gitlab-tool.js.map +1 -0
  98. package/dist/groq-tool.d.ts +3 -0
  99. package/dist/groq-tool.d.ts.map +1 -0
  100. package/dist/groq-tool.js +109 -0
  101. package/dist/groq-tool.js.map +1 -0
  102. package/dist/gumroad-tool.d.ts +6 -0
  103. package/dist/gumroad-tool.d.ts.map +1 -0
  104. package/dist/gumroad-tool.js +90 -0
  105. package/dist/gumroad-tool.js.map +1 -0
  106. package/dist/heygen-tool.d.ts +5 -0
  107. package/dist/heygen-tool.d.ts.map +1 -0
  108. package/dist/heygen-tool.js +134 -0
  109. package/dist/heygen-tool.js.map +1 -0
  110. package/dist/higgsfield-tool.d.ts +5 -0
  111. package/dist/higgsfield-tool.d.ts.map +1 -0
  112. package/dist/higgsfield-tool.js +120 -0
  113. package/dist/higgsfield-tool.js.map +1 -0
  114. package/dist/igdb-tool.d.ts +6 -0
  115. package/dist/igdb-tool.d.ts.map +1 -0
  116. package/dist/igdb-tool.js +140 -0
  117. package/dist/igdb-tool.js.map +1 -0
  118. package/dist/keychain-crypto.d.ts +24 -0
  119. package/dist/keychain-crypto.d.ts.map +1 -0
  120. package/dist/keychain-crypto.js +60 -0
  121. package/dist/keychain-crypto.js.map +1 -0
  122. package/dist/keychain-secure-input.d.ts +17 -0
  123. package/dist/keychain-secure-input.d.ts.map +1 -0
  124. package/dist/keychain-secure-input.js +229 -0
  125. package/dist/keychain-secure-input.js.map +1 -0
  126. package/dist/keychain-tool.d.ts +3 -0
  127. package/dist/keychain-tool.d.ts.map +1 -0
  128. package/dist/keychain-tool.js +516 -0
  129. package/dist/keychain-tool.js.map +1 -0
  130. package/dist/kling-tool.d.ts +3 -0
  131. package/dist/kling-tool.d.ts.map +1 -0
  132. package/dist/kling-tool.js +102 -0
  133. package/dist/kling-tool.js.map +1 -0
  134. package/dist/lemonsqueezy-tool.d.ts +7 -0
  135. package/dist/lemonsqueezy-tool.d.ts.map +1 -0
  136. package/dist/lemonsqueezy-tool.js +220 -0
  137. package/dist/lemonsqueezy-tool.js.map +1 -0
  138. package/dist/line-tool.d.ts +7 -0
  139. package/dist/line-tool.d.ts.map +1 -0
  140. package/dist/line-tool.js +188 -0
  141. package/dist/line-tool.js.map +1 -0
  142. package/dist/linear-tool.d.ts +2 -0
  143. package/dist/linear-tool.d.ts.map +1 -0
  144. package/dist/linear-tool.js +186 -0
  145. package/dist/linear-tool.js.map +1 -0
  146. package/dist/local-catalog-handlers.d.ts +3 -0
  147. package/dist/local-catalog-handlers.d.ts.map +1 -0
  148. package/dist/local-catalog-handlers.js +1254 -0
  149. package/dist/local-catalog-handlers.js.map +1 -0
  150. package/dist/mailchimp-tool.d.ts +8 -0
  151. package/dist/mailchimp-tool.d.ts.map +1 -0
  152. package/dist/mailchimp-tool.js +138 -0
  153. package/dist/mailchimp-tool.js.map +1 -0
  154. package/dist/mapbox-tool.d.ts +6 -0
  155. package/dist/mapbox-tool.d.ts.map +1 -0
  156. package/dist/mapbox-tool.js +106 -0
  157. package/dist/mapbox-tool.js.map +1 -0
  158. package/dist/mistral-tool.d.ts +4 -0
  159. package/dist/mistral-tool.d.ts.map +1 -0
  160. package/dist/mistral-tool.js +145 -0
  161. package/dist/mistral-tool.js.map +1 -0
  162. package/dist/mixpanel-tool.d.ts +6 -0
  163. package/dist/mixpanel-tool.d.ts.map +1 -0
  164. package/dist/mixpanel-tool.js +162 -0
  165. package/dist/mixpanel-tool.js.map +1 -0
  166. package/dist/monday-tool.d.ts +7 -0
  167. package/dist/monday-tool.d.ts.map +1 -0
  168. package/dist/monday-tool.js +206 -0
  169. package/dist/monday-tool.js.map +1 -0
  170. package/dist/neon-tool.d.ts +7 -0
  171. package/dist/neon-tool.d.ts.map +1 -0
  172. package/dist/neon-tool.js +156 -0
  173. package/dist/neon-tool.js.map +1 -0
  174. package/dist/openai-tool.d.ts +6 -0
  175. package/dist/openai-tool.d.ts.map +1 -0
  176. package/dist/openai-tool.js +227 -0
  177. package/dist/openai-tool.js.map +1 -0
  178. package/dist/pagerduty-tool.d.ts +8 -0
  179. package/dist/pagerduty-tool.d.ts.map +1 -0
  180. package/dist/pagerduty-tool.js +185 -0
  181. package/dist/pagerduty-tool.js.map +1 -0
  182. package/dist/paypal-tool.d.ts +3 -0
  183. package/dist/paypal-tool.d.ts.map +1 -0
  184. package/dist/paypal-tool.js +157 -0
  185. package/dist/paypal-tool.js.map +1 -0
  186. package/dist/perplexity-tool.d.ts +2 -0
  187. package/dist/perplexity-tool.d.ts.map +1 -0
  188. package/dist/perplexity-tool.js +93 -0
  189. package/dist/perplexity-tool.js.map +1 -0
  190. package/dist/pika-tool.d.ts +4 -0
  191. package/dist/pika-tool.d.ts.map +1 -0
  192. package/dist/pika-tool.js +102 -0
  193. package/dist/pika-tool.js.map +1 -0
  194. package/dist/pinecone-tool.d.ts +6 -0
  195. package/dist/pinecone-tool.d.ts.map +1 -0
  196. package/dist/pinecone-tool.js +148 -0
  197. package/dist/pinecone-tool.js.map +1 -0
  198. package/dist/pinterest-tool.d.ts +7 -0
  199. package/dist/pinterest-tool.d.ts.map +1 -0
  200. package/dist/pinterest-tool.js +219 -0
  201. package/dist/pinterest-tool.js.map +1 -0
  202. package/dist/plaid-tool.d.ts +6 -0
  203. package/dist/plaid-tool.d.ts.map +1 -0
  204. package/dist/plaid-tool.js +149 -0
  205. package/dist/plaid-tool.js.map +1 -0
  206. package/dist/postman-tool.d.ts +2 -0
  207. package/dist/postman-tool.d.ts.map +1 -0
  208. package/dist/postman-tool.js +92 -0
  209. package/dist/postman-tool.js.map +1 -0
  210. package/dist/postmark-tool.d.ts +7 -0
  211. package/dist/postmark-tool.d.ts.map +1 -0
  212. package/dist/postmark-tool.js +148 -0
  213. package/dist/postmark-tool.js.map +1 -0
  214. package/dist/pushover-tool.d.ts +6 -0
  215. package/dist/pushover-tool.d.ts.map +1 -0
  216. package/dist/pushover-tool.js +146 -0
  217. package/dist/pushover-tool.js.map +1 -0
  218. package/dist/qc-tool.d.ts +4 -0
  219. package/dist/qc-tool.d.ts.map +1 -0
  220. package/dist/qc-tool.js +415 -0
  221. package/dist/qc-tool.js.map +1 -0
  222. package/dist/quickbooks-tool.d.ts +5 -0
  223. package/dist/quickbooks-tool.d.ts.map +1 -0
  224. package/dist/quickbooks-tool.js +160 -0
  225. package/dist/quickbooks-tool.js.map +1 -0
  226. package/dist/render-tool.d.ts +7 -0
  227. package/dist/render-tool.d.ts.map +1 -0
  228. package/dist/render-tool.js +158 -0
  229. package/dist/render-tool.js.map +1 -0
  230. package/dist/replicate-tool.d.ts +7 -0
  231. package/dist/replicate-tool.d.ts.map +1 -0
  232. package/dist/replicate-tool.js +172 -0
  233. package/dist/replicate-tool.js.map +1 -0
  234. package/dist/runway-tool.d.ts +4 -0
  235. package/dist/runway-tool.d.ts.map +1 -0
  236. package/dist/runway-tool.js +110 -0
  237. package/dist/runway-tool.js.map +1 -0
  238. package/dist/segment-tool.d.ts +6 -0
  239. package/dist/segment-tool.d.ts.map +1 -0
  240. package/dist/segment-tool.js +129 -0
  241. package/dist/segment-tool.js.map +1 -0
  242. package/dist/sendgrid-tool.d.ts +7 -0
  243. package/dist/sendgrid-tool.d.ts.map +1 -0
  244. package/dist/sendgrid-tool.js +124 -0
  245. package/dist/sendgrid-tool.js.map +1 -0
  246. package/dist/sentry-tool.d.ts +2 -0
  247. package/dist/sentry-tool.d.ts.map +1 -0
  248. package/dist/sentry-tool.js +123 -0
  249. package/dist/sentry-tool.js.map +1 -0
  250. package/dist/server.d.ts.map +1 -1
  251. package/dist/server.js +10 -0
  252. package/dist/server.js.map +1 -1
  253. package/dist/speedrun-tool.d.ts +6 -0
  254. package/dist/speedrun-tool.d.ts.map +1 -0
  255. package/dist/speedrun-tool.js +192 -0
  256. package/dist/speedrun-tool.js.map +1 -0
  257. package/dist/spotify-tool.d.ts +8 -0
  258. package/dist/spotify-tool.d.ts.map +1 -0
  259. package/dist/spotify-tool.js +274 -0
  260. package/dist/spotify-tool.js.map +1 -0
  261. package/dist/square-tool.d.ts +5 -0
  262. package/dist/square-tool.d.ts.map +1 -0
  263. package/dist/square-tool.js +133 -0
  264. package/dist/square-tool.js.map +1 -0
  265. package/dist/stability-tool.d.ts +5 -0
  266. package/dist/stability-tool.d.ts.map +1 -0
  267. package/dist/stability-tool.js +190 -0
  268. package/dist/stability-tool.js.map +1 -0
  269. package/dist/steam-tool.d.ts +6 -0
  270. package/dist/steam-tool.d.ts.map +1 -0
  271. package/dist/steam-tool.js +222 -0
  272. package/dist/steam-tool.js.map +1 -0
  273. package/dist/stripe-tool.d.ts +7 -0
  274. package/dist/stripe-tool.d.ts.map +1 -0
  275. package/dist/stripe-tool.js +181 -0
  276. package/dist/stripe-tool.js.map +1 -0
  277. package/dist/tiktok-tool.d.ts +4 -0
  278. package/dist/tiktok-tool.d.ts.map +1 -0
  279. package/dist/tiktok-tool.js +129 -0
  280. package/dist/tiktok-tool.js.map +1 -0
  281. package/dist/togetherai-tool.d.ts +5 -0
  282. package/dist/togetherai-tool.d.ts.map +1 -0
  283. package/dist/togetherai-tool.js +129 -0
  284. package/dist/togetherai-tool.js.map +1 -0
  285. package/dist/toilets-tool.js +2 -2
  286. package/dist/tool-wiring.d.ts +7982 -18
  287. package/dist/tool-wiring.d.ts.map +1 -1
  288. package/dist/tool-wiring.js +5084 -18
  289. package/dist/tool-wiring.js.map +1 -1
  290. package/dist/trello-tool.d.ts +2 -0
  291. package/dist/trello-tool.d.ts.map +1 -0
  292. package/dist/trello-tool.js +166 -0
  293. package/dist/trello-tool.js.map +1 -0
  294. package/dist/turso-tool.d.ts +6 -0
  295. package/dist/turso-tool.d.ts.map +1 -0
  296. package/dist/turso-tool.js +158 -0
  297. package/dist/turso-tool.js.map +1 -0
  298. package/dist/twilio-tool.d.ts +8 -0
  299. package/dist/twilio-tool.d.ts.map +1 -0
  300. package/dist/twilio-tool.js +243 -0
  301. package/dist/twilio-tool.js.map +1 -0
  302. package/dist/upstash-tool.d.ts +8 -0
  303. package/dist/upstash-tool.d.ts.map +1 -0
  304. package/dist/upstash-tool.js +191 -0
  305. package/dist/upstash-tool.js.map +1 -0
  306. package/dist/whatsapp-tool.d.ts +6 -0
  307. package/dist/whatsapp-tool.d.ts.map +1 -0
  308. package/dist/whatsapp-tool.js +200 -0
  309. package/dist/whatsapp-tool.js.map +1 -0
  310. package/dist/woocommerce-tool.d.ts +4 -0
  311. package/dist/woocommerce-tool.d.ts.map +1 -0
  312. package/dist/woocommerce-tool.js +140 -0
  313. package/dist/woocommerce-tool.js.map +1 -0
  314. package/dist/youtube-tool.d.ts +7 -0
  315. package/dist/youtube-tool.d.ts.map +1 -0
  316. package/dist/youtube-tool.js +196 -0
  317. package/dist/youtube-tool.js.map +1 -0
  318. package/package.json +1 -1
  319. package/server.json +37 -37
  320. package/LICENSE +0 -216
  321. package/dist/cloudflare-worker.d.ts +0 -12
  322. package/dist/cloudflare-worker.d.ts.map +0 -1
  323. package/dist/cloudflare-worker.js +0 -50
  324. package/dist/cloudflare-worker.js.map +0 -1
@@ -0,0 +1,123 @@
1
+ // Anthropic Messages API integration for the UnClick MCP server.
2
+ // Uses the Anthropic REST API via fetch - no external dependencies.
3
+ // Users must supply an API key from console.anthropic.com.
4
+ // This tool is useful for agents that need to call Claude (or other models)
5
+ // programmatically, compare model outputs, or chain model calls.
6
+ const ANTHROPIC_API_BASE = "https://api.anthropic.com/v1";
7
+ const ANTHROPIC_VERSION = "2023-06-01";
8
+ // ─── Auth validation ──────────────────────────────────────────────────────────
9
+ function requireKey(args) {
10
+ const key = String(args.api_key ?? "").trim();
11
+ if (!key)
12
+ throw new Error("api_key is required. Get one at console.anthropic.com/settings/keys.");
13
+ return key;
14
+ }
15
+ // ─── API helpers ──────────────────────────────────────────────────────────────
16
+ async function anthropicPost(apiKey, path, body) {
17
+ const res = await fetch(`${ANTHROPIC_API_BASE}${path}`, {
18
+ method: "POST",
19
+ headers: {
20
+ "x-api-key": apiKey,
21
+ "anthropic-version": ANTHROPIC_VERSION,
22
+ "Content-Type": "application/json",
23
+ },
24
+ body: JSON.stringify(body),
25
+ });
26
+ const data = await res.json();
27
+ if (!res.ok) {
28
+ const err = data.error;
29
+ const msg = err?.message ?? `HTTP ${res.status}`;
30
+ const type = err?.type ? ` [${err.type}]` : "";
31
+ throw new Error(`Anthropic API error${type}: ${msg}`);
32
+ }
33
+ return data;
34
+ }
35
+ async function anthropicGet(apiKey, path) {
36
+ const res = await fetch(`${ANTHROPIC_API_BASE}${path}`, {
37
+ headers: {
38
+ "x-api-key": apiKey,
39
+ "anthropic-version": ANTHROPIC_VERSION,
40
+ },
41
+ });
42
+ const data = await res.json();
43
+ if (!res.ok) {
44
+ const err = data.error;
45
+ const msg = err?.message ?? `HTTP ${res.status}`;
46
+ throw new Error(`Anthropic API error: ${msg}`);
47
+ }
48
+ return data;
49
+ }
50
+ // ─── Operations ───────────────────────────────────────────────────────────────
51
+ export async function anthropicCreateMessage(args) {
52
+ const apiKey = requireKey(args);
53
+ const model = String(args.model ?? "claude-sonnet-4-6");
54
+ const maxTokens = Math.min(8192, Math.max(1, Number(args.max_tokens ?? 1024)));
55
+ // Parse messages
56
+ let messages;
57
+ if (Array.isArray(args.messages)) {
58
+ messages = args.messages;
59
+ }
60
+ else if (typeof args.messages === "string") {
61
+ try {
62
+ messages = JSON.parse(args.messages);
63
+ }
64
+ catch {
65
+ throw new Error("messages must be a JSON array of {role, content} objects.");
66
+ }
67
+ }
68
+ else if (args.prompt) {
69
+ // Convenience: single user message via 'prompt'
70
+ messages = [{ role: "user", content: String(args.prompt) }];
71
+ }
72
+ else {
73
+ throw new Error("Either messages (array) or prompt (string) is required.");
74
+ }
75
+ if (messages.length === 0)
76
+ throw new Error("messages array must not be empty.");
77
+ const body = { model, max_tokens: maxTokens, messages };
78
+ if (args.system)
79
+ body.system = String(args.system);
80
+ if (args.temperature !== undefined)
81
+ body.temperature = Number(args.temperature);
82
+ if (args.top_p !== undefined)
83
+ body.top_p = Number(args.top_p);
84
+ if (args.top_k !== undefined)
85
+ body.top_k = Number(args.top_k);
86
+ if (args.stop_sequences)
87
+ body.stop_sequences = args.stop_sequences;
88
+ if (args.metadata)
89
+ body.metadata = args.metadata;
90
+ const result = await anthropicPost(apiKey, "/messages", body);
91
+ // Extract text content blocks
92
+ const textBlocks = result.content
93
+ .filter((b) => b.type === "text")
94
+ .map((b) => b.text ?? "");
95
+ return {
96
+ id: result.id,
97
+ model: result.model,
98
+ role: result.role,
99
+ content: textBlocks.join("\n"),
100
+ content_blocks: result.content.map((b) => ({
101
+ type: b.type,
102
+ text: b.text ?? null,
103
+ tool_name: b.name ?? null,
104
+ tool_input: b.input ?? null,
105
+ })),
106
+ stop_reason: result.stop_reason,
107
+ usage: result.usage,
108
+ };
109
+ }
110
+ export async function anthropicListModels(args) {
111
+ const apiKey = requireKey(args);
112
+ const data = await anthropicGet(apiKey, "/models");
113
+ return {
114
+ count: data.data.length,
115
+ has_more: data.has_more,
116
+ models: data.data.map((m) => ({
117
+ id: m.id,
118
+ display_name: m.display_name,
119
+ created_at: m.created_at,
120
+ })),
121
+ };
122
+ }
123
+ //# sourceMappingURL=anthropic-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-tool.js","sourceRoot":"","sources":["../src/anthropic-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function listAsanaWorkspaces(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function listAsanaProjects(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function listAsanaTasks(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function createAsanaTask(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function updateAsanaTask(args: Record<string, unknown>): Promise<unknown>;
6
+ export declare function getAsanaTask(args: Record<string, unknown>): Promise<unknown>;
7
+ export declare function searchAsanaTasks(args: Record<string, unknown>): Promise<unknown>;
8
+ //# sourceMappingURL=asana-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asana-tool.d.ts","sourceRoot":"","sources":["../src/asana-tool.ts"],"names":[],"mappings":"AAoEA,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAYzF;AAGD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBvF;AAGD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBpF;AAGD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBrF;AAGD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBrF;AAGD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAYlF;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBtF"}
@@ -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,7 @@
1
+ export declare function assemblyaiTranscribe(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function assemblyaiGetTranscript(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function assemblyaiListTranscripts(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function assemblyaiGetSentences(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function assemblyaiGetParagraphs(args: Record<string, unknown>): Promise<unknown>;
6
+ export declare function assemblyaiSummarize(args: Record<string, unknown>): Promise<unknown>;
7
+ //# sourceMappingURL=assemblyai-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assemblyai-tool.d.ts","sourceRoot":"","sources":["../src/assemblyai-tool.ts"],"names":[],"mappings":"AA4CA,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA0B1F;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAK7F;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ/F;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAM5F;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAM7F;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAQzF"}
@@ -0,0 +1,127 @@
1
+ // AssemblyAI Speech-to-Text API integration for the UnClick MCP server.
2
+ // Uses the AssemblyAI REST API via fetch - no external dependencies.
3
+ // Users must supply an API key from assemblyai.com.
4
+ const AAI_BASE = "https://api.assemblyai.com/v2";
5
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
6
+ function requireKey(args) {
7
+ const key = String(args.api_key ?? "").trim();
8
+ if (!key)
9
+ throw new Error("api_key is required. Get one at assemblyai.com/dashboard.");
10
+ return key;
11
+ }
12
+ async function aaiGet(apiKey, path, params) {
13
+ const url = new URL(`${AAI_BASE}${path}`);
14
+ if (params)
15
+ Object.entries(params).forEach(([k, v]) => url.searchParams.set(k, v));
16
+ const res = await fetch(url.toString(), {
17
+ headers: { Authorization: apiKey },
18
+ });
19
+ const data = await res.json();
20
+ if (!res.ok) {
21
+ const msg = data.error ?? `HTTP ${res.status}`;
22
+ throw new Error(`AssemblyAI error (${res.status}): ${msg}`);
23
+ }
24
+ return data;
25
+ }
26
+ async function aaiPost(apiKey, path, body) {
27
+ const res = await fetch(`${AAI_BASE}${path}`, {
28
+ method: "POST",
29
+ headers: { Authorization: apiKey, "Content-Type": "application/json" },
30
+ body: JSON.stringify(body),
31
+ });
32
+ const data = await res.json();
33
+ if (!res.ok) {
34
+ const msg = data.error ?? `HTTP ${res.status}`;
35
+ throw new Error(`AssemblyAI error (${res.status}): ${msg}`);
36
+ }
37
+ return data;
38
+ }
39
+ // ─── Operations ───────────────────────────────────────────────────────────────
40
+ export async function assemblyaiTranscribe(args) {
41
+ const apiKey = requireKey(args);
42
+ const audioUrl = String(args.audio_url ?? "").trim();
43
+ if (!audioUrl)
44
+ throw new Error("audio_url is required (publicly accessible URL of the audio/video file).");
45
+ const body = { audio_url: audioUrl };
46
+ if (args.language_code)
47
+ body.language_code = String(args.language_code);
48
+ if (args.language_detection !== undefined)
49
+ body.language_detection = Boolean(args.language_detection);
50
+ if (args.punctuate !== undefined)
51
+ body.punctuate = Boolean(args.punctuate);
52
+ if (args.format_text !== undefined)
53
+ body.format_text = Boolean(args.format_text);
54
+ if (args.dual_channel !== undefined)
55
+ body.dual_channel = Boolean(args.dual_channel);
56
+ if (args.speaker_labels !== undefined)
57
+ body.speaker_labels = Boolean(args.speaker_labels);
58
+ if (args.auto_chapters !== undefined)
59
+ body.auto_chapters = Boolean(args.auto_chapters);
60
+ if (args.entity_detection !== undefined)
61
+ body.entity_detection = Boolean(args.entity_detection);
62
+ if (args.sentiment_analysis !== undefined)
63
+ body.sentiment_analysis = Boolean(args.sentiment_analysis);
64
+ if (args.summarization !== undefined)
65
+ body.summarization = Boolean(args.summarization);
66
+ if (args.summary_model)
67
+ body.summary_model = String(args.summary_model);
68
+ if (args.summary_type)
69
+ body.summary_type = String(args.summary_type);
70
+ if (args.webhook_url)
71
+ body.webhook_url = String(args.webhook_url);
72
+ const data = await aaiPost(apiKey, "/transcript", body);
73
+ return {
74
+ transcript_id: data.id,
75
+ status: data.status,
76
+ note: "Use get_transcript with the transcript_id to poll for completion.",
77
+ };
78
+ }
79
+ export async function assemblyaiGetTranscript(args) {
80
+ const apiKey = requireKey(args);
81
+ const id = String(args.transcript_id ?? "").trim();
82
+ if (!id)
83
+ throw new Error("transcript_id is required.");
84
+ return aaiGet(apiKey, `/transcript/${encodeURIComponent(id)}`);
85
+ }
86
+ export async function assemblyaiListTranscripts(args) {
87
+ const apiKey = requireKey(args);
88
+ const params = {};
89
+ if (args.limit)
90
+ params.limit = String(Math.min(200, Math.max(1, Number(args.limit ?? 10))));
91
+ if (args.status)
92
+ params.status = String(args.status);
93
+ if (args.after_id)
94
+ params.after_id = String(args.after_id);
95
+ if (args.before_id)
96
+ params.before_id = String(args.before_id);
97
+ return aaiGet(apiKey, "/transcript", params);
98
+ }
99
+ export async function assemblyaiGetSentences(args) {
100
+ const apiKey = requireKey(args);
101
+ const id = String(args.transcript_id ?? "").trim();
102
+ if (!id)
103
+ throw new Error("transcript_id is required.");
104
+ const data = await aaiGet(apiKey, `/transcript/${encodeURIComponent(id)}/sentences`);
105
+ return { transcript_id: id, count: data.sentences?.length ?? 0, sentences: data.sentences ?? [] };
106
+ }
107
+ export async function assemblyaiGetParagraphs(args) {
108
+ const apiKey = requireKey(args);
109
+ const id = String(args.transcript_id ?? "").trim();
110
+ if (!id)
111
+ throw new Error("transcript_id is required.");
112
+ const data = await aaiGet(apiKey, `/transcript/${encodeURIComponent(id)}/paragraphs`);
113
+ return { transcript_id: id, count: data.paragraphs?.length ?? 0, paragraphs: data.paragraphs ?? [] };
114
+ }
115
+ export async function assemblyaiSummarize(args) {
116
+ const apiKey = requireKey(args);
117
+ const id = String(args.transcript_id ?? "").trim();
118
+ if (!id)
119
+ throw new Error("transcript_id is required (transcript must already be completed with summarization enabled).");
120
+ const data = await aaiGet(apiKey, `/transcript/${encodeURIComponent(id)}`);
121
+ if (data.error)
122
+ throw new Error(`Transcript error: ${data.error}`);
123
+ if (data.status !== "completed")
124
+ return { transcript_id: id, status: data.status, note: "Transcript not yet completed. Poll get_transcript until status is completed." };
125
+ return { transcript_id: id, status: data.status, summary: data.summary ?? null };
126
+ }
127
+ //# sourceMappingURL=assemblyai-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assemblyai-tool.js","sourceRoot":"","sources":["../src/assemblyai-tool.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,qEAAqE;AACrE,oDAAoD;AAEpD,MAAM,QAAQ,GAAG,+BAA+B,CAAC;AAEjD,iFAAiF;AAEjF,SAAS,UAAU,CAAC,IAA6B;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IACvF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,MAAM,CAAI,MAAc,EAAE,IAAY,EAAE,MAA+B;IACpF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC;IAC1C,IAAI,MAAM;QAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;QACtC,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;KACnC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;IACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAI,IAAI,CAAC,KAAgB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,IAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAa;IACnE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,EAAE;QAC5C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE;QACtE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;IACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAI,IAAI,CAAC,KAAgB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,IAAS,CAAC;AACnB,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAA6B;IACtE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAE3G,MAAM,IAAI,GAA4B,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC9D,IAAI,IAAI,CAAC,aAAa;QAAU,IAAI,CAAC,aAAa,GAAW,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxF,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;QAAE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACtG,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAW,IAAI,CAAC,SAAS,GAAY,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7F,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAS,IAAI,CAAC,WAAW,GAAU,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/F,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAQ,IAAI,CAAC,YAAY,GAAS,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChG,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;QAAM,IAAI,CAAC,cAAc,GAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClG,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAO,IAAI,CAAC,aAAa,GAAQ,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjG,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;QAAI,IAAI,CAAC,gBAAgB,GAAK,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpG,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;QAAE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACtG,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAO,IAAI,CAAC,aAAa,GAAQ,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjG,IAAI,IAAI,CAAC,aAAa;QAAU,IAAI,CAAC,aAAa,GAAW,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxF,IAAI,IAAI,CAAC,YAAY;QAAW,IAAI,CAAC,YAAY,GAAY,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvF,IAAI,IAAI,CAAC,WAAW;QAAY,IAAI,CAAC,WAAW,GAAa,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEtF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAiC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IACxF,OAAO;QACL,aAAa,EAAE,IAAI,CAAC,EAAE;QACtB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,mEAAmE;KAC1E,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAA6B;IACzE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC,MAAM,EAAE,eAAe,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAA6B;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,IAAI,CAAC,KAAK;QAAG,MAAM,CAAC,KAAK,GAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,QAAQ;QAAG,MAAM,CAAC,QAAQ,GAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAA6B;IACxE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,MAAM,CAA2B,MAAM,EAAE,eAAe,kBAAkB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAC/G,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;AACpG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAA6B;IACzE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,MAAM,CAA4B,MAAM,EAAE,eAAe,kBAAkB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IACjH,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;AACvG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA6B;IACrE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;IACzH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAuD,MAAM,EAAE,eAAe,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACjI,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,8EAA8E,EAAE,CAAC;IACzK,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;AACnF,CAAC"}
@@ -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"}