@unclick/mcp-server 0.2.2 → 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 (175) hide show
  1. package/dist/airtable-tool.d.ts +2 -0
  2. package/dist/airtable-tool.d.ts.map +1 -0
  3. package/dist/airtable-tool.js +154 -0
  4. package/dist/airtable-tool.js.map +1 -0
  5. package/dist/anthropic-tool.d.ts +3 -0
  6. package/dist/anthropic-tool.d.ts.map +1 -0
  7. package/dist/anthropic-tool.js +123 -0
  8. package/dist/anthropic-tool.js.map +1 -0
  9. package/dist/asana-tool.d.ts +8 -0
  10. package/dist/asana-tool.d.ts.map +1 -0
  11. package/dist/asana-tool.js +218 -0
  12. package/dist/asana-tool.js.map +1 -0
  13. package/dist/calendly-tool.d.ts +6 -0
  14. package/dist/calendly-tool.d.ts.map +1 -0
  15. package/dist/calendly-tool.js +182 -0
  16. package/dist/calendly-tool.js.map +1 -0
  17. package/dist/clickup-tool.d.ts +2 -0
  18. package/dist/clickup-tool.d.ts.map +1 -0
  19. package/dist/clickup-tool.js +153 -0
  20. package/dist/clickup-tool.js.map +1 -0
  21. package/dist/connectors/figma.d.ts +3 -0
  22. package/dist/connectors/figma.d.ts.map +1 -0
  23. package/dist/connectors/figma.js +18 -0
  24. package/dist/connectors/figma.js.map +1 -0
  25. package/dist/connectors/index.d.ts +3 -1
  26. package/dist/connectors/index.d.ts.map +1 -1
  27. package/dist/connectors/index.js +5 -1
  28. package/dist/connectors/index.js.map +1 -1
  29. package/dist/connectors/line.d.ts +3 -0
  30. package/dist/connectors/line.d.ts.map +1 -0
  31. package/dist/connectors/line.js +18 -0
  32. package/dist/connectors/line.js.map +1 -0
  33. package/dist/ebay-tool.d.ts +5 -0
  34. package/dist/ebay-tool.d.ts.map +1 -0
  35. package/dist/ebay-tool.js +179 -0
  36. package/dist/ebay-tool.js.map +1 -0
  37. package/dist/elevenlabs-tool.d.ts +6 -0
  38. package/dist/elevenlabs-tool.d.ts.map +1 -0
  39. package/dist/elevenlabs-tool.js +166 -0
  40. package/dist/elevenlabs-tool.js.map +1 -0
  41. package/dist/etsy-tool.d.ts +6 -0
  42. package/dist/etsy-tool.d.ts.map +1 -0
  43. package/dist/etsy-tool.js +125 -0
  44. package/dist/etsy-tool.js.map +1 -0
  45. package/dist/exchangerate-tool.d.ts +5 -0
  46. package/dist/exchangerate-tool.d.ts.map +1 -0
  47. package/dist/exchangerate-tool.js +139 -0
  48. package/dist/exchangerate-tool.js.map +1 -0
  49. package/dist/figma-tool.d.ts +8 -0
  50. package/dist/figma-tool.d.ts.map +1 -0
  51. package/dist/figma-tool.js +231 -0
  52. package/dist/figma-tool.js.map +1 -0
  53. package/dist/gdelt-tool.d.ts +5 -0
  54. package/dist/gdelt-tool.d.ts.map +1 -0
  55. package/dist/gdelt-tool.js +177 -0
  56. package/dist/gdelt-tool.js.map +1 -0
  57. package/dist/github-tool.d.ts +2 -0
  58. package/dist/github-tool.d.ts.map +1 -0
  59. package/dist/github-tool.js +165 -0
  60. package/dist/github-tool.js.map +1 -0
  61. package/dist/gitlab-tool.d.ts +2 -0
  62. package/dist/gitlab-tool.d.ts.map +1 -0
  63. package/dist/gitlab-tool.js +127 -0
  64. package/dist/gitlab-tool.js.map +1 -0
  65. package/dist/igdb-tool.d.ts +6 -0
  66. package/dist/igdb-tool.d.ts.map +1 -0
  67. package/dist/igdb-tool.js +140 -0
  68. package/dist/igdb-tool.js.map +1 -0
  69. package/dist/line-tool.d.ts +7 -0
  70. package/dist/line-tool.d.ts.map +1 -0
  71. package/dist/line-tool.js +188 -0
  72. package/dist/line-tool.js.map +1 -0
  73. package/dist/linear-tool.d.ts +2 -0
  74. package/dist/linear-tool.d.ts.map +1 -0
  75. package/dist/linear-tool.js +186 -0
  76. package/dist/linear-tool.js.map +1 -0
  77. package/dist/monday-tool.d.ts +7 -0
  78. package/dist/monday-tool.d.ts.map +1 -0
  79. package/dist/monday-tool.js +206 -0
  80. package/dist/monday-tool.js.map +1 -0
  81. package/dist/openai-tool.d.ts +6 -0
  82. package/dist/openai-tool.d.ts.map +1 -0
  83. package/dist/openai-tool.js +227 -0
  84. package/dist/openai-tool.js.map +1 -0
  85. package/dist/paypal-tool.d.ts +3 -0
  86. package/dist/paypal-tool.d.ts.map +1 -0
  87. package/dist/paypal-tool.js +157 -0
  88. package/dist/paypal-tool.js.map +1 -0
  89. package/dist/pinterest-tool.d.ts +7 -0
  90. package/dist/pinterest-tool.d.ts.map +1 -0
  91. package/dist/pinterest-tool.js +219 -0
  92. package/dist/pinterest-tool.js.map +1 -0
  93. package/dist/plaid-tool.d.ts +6 -0
  94. package/dist/plaid-tool.d.ts.map +1 -0
  95. package/dist/plaid-tool.js +149 -0
  96. package/dist/plaid-tool.js.map +1 -0
  97. package/dist/postman-tool.d.ts +2 -0
  98. package/dist/postman-tool.d.ts.map +1 -0
  99. package/dist/postman-tool.js +92 -0
  100. package/dist/postman-tool.js.map +1 -0
  101. package/dist/pushover-tool.d.ts +6 -0
  102. package/dist/pushover-tool.d.ts.map +1 -0
  103. package/dist/pushover-tool.js +146 -0
  104. package/dist/pushover-tool.js.map +1 -0
  105. package/dist/quickbooks-tool.d.ts +5 -0
  106. package/dist/quickbooks-tool.d.ts.map +1 -0
  107. package/dist/quickbooks-tool.js +160 -0
  108. package/dist/quickbooks-tool.js.map +1 -0
  109. package/dist/replicate-tool.d.ts +7 -0
  110. package/dist/replicate-tool.d.ts.map +1 -0
  111. package/dist/replicate-tool.js +172 -0
  112. package/dist/replicate-tool.js.map +1 -0
  113. package/dist/sentry-tool.d.ts +2 -0
  114. package/dist/sentry-tool.d.ts.map +1 -0
  115. package/dist/sentry-tool.js +123 -0
  116. package/dist/sentry-tool.js.map +1 -0
  117. package/dist/speedrun-tool.d.ts +6 -0
  118. package/dist/speedrun-tool.d.ts.map +1 -0
  119. package/dist/speedrun-tool.js +192 -0
  120. package/dist/speedrun-tool.js.map +1 -0
  121. package/dist/spotify-tool.d.ts +8 -0
  122. package/dist/spotify-tool.d.ts.map +1 -0
  123. package/dist/spotify-tool.js +274 -0
  124. package/dist/spotify-tool.js.map +1 -0
  125. package/dist/square-tool.d.ts +5 -0
  126. package/dist/square-tool.d.ts.map +1 -0
  127. package/dist/square-tool.js +133 -0
  128. package/dist/square-tool.js.map +1 -0
  129. package/dist/stability-tool.d.ts +5 -0
  130. package/dist/stability-tool.d.ts.map +1 -0
  131. package/dist/stability-tool.js +190 -0
  132. package/dist/stability-tool.js.map +1 -0
  133. package/dist/steam-tool.d.ts +6 -0
  134. package/dist/steam-tool.d.ts.map +1 -0
  135. package/dist/steam-tool.js +222 -0
  136. package/dist/steam-tool.js.map +1 -0
  137. package/dist/stripe-tool.d.ts +7 -0
  138. package/dist/stripe-tool.d.ts.map +1 -0
  139. package/dist/stripe-tool.js +181 -0
  140. package/dist/stripe-tool.js.map +1 -0
  141. package/dist/tiktok-tool.d.ts +4 -0
  142. package/dist/tiktok-tool.d.ts.map +1 -0
  143. package/dist/tiktok-tool.js +129 -0
  144. package/dist/tiktok-tool.js.map +1 -0
  145. package/dist/toilets-tool.js +2 -2
  146. package/dist/tool-wiring.d.ts +4066 -18
  147. package/dist/tool-wiring.d.ts.map +1 -1
  148. package/dist/tool-wiring.js +2601 -18
  149. package/dist/tool-wiring.js.map +1 -1
  150. package/dist/trello-tool.d.ts +2 -0
  151. package/dist/trello-tool.d.ts.map +1 -0
  152. package/dist/trello-tool.js +166 -0
  153. package/dist/trello-tool.js.map +1 -0
  154. package/dist/twilio-tool.d.ts +8 -0
  155. package/dist/twilio-tool.d.ts.map +1 -0
  156. package/dist/twilio-tool.js +243 -0
  157. package/dist/twilio-tool.js.map +1 -0
  158. package/dist/whatsapp-tool.d.ts +6 -0
  159. package/dist/whatsapp-tool.d.ts.map +1 -0
  160. package/dist/whatsapp-tool.js +200 -0
  161. package/dist/whatsapp-tool.js.map +1 -0
  162. package/dist/woocommerce-tool.d.ts +4 -0
  163. package/dist/woocommerce-tool.d.ts.map +1 -0
  164. package/dist/woocommerce-tool.js +140 -0
  165. package/dist/woocommerce-tool.js.map +1 -0
  166. package/dist/youtube-tool.d.ts +7 -0
  167. package/dist/youtube-tool.d.ts.map +1 -0
  168. package/dist/youtube-tool.js +196 -0
  169. package/dist/youtube-tool.js.map +1 -0
  170. package/package.json +2 -2
  171. package/server.json +24 -5
  172. package/dist/cloudflare-worker.d.ts +0 -12
  173. package/dist/cloudflare-worker.d.ts.map +0 -1
  174. package/dist/cloudflare-worker.js +0 -50
  175. package/dist/cloudflare-worker.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ export declare function trelloAction(action: string, args: Record<string, unknown>): Promise<unknown>;
2
+ //# sourceMappingURL=trello-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trello-tool.d.ts","sourceRoot":"","sources":["../src/trello-tool.ts"],"names":[],"mappings":"AA8IA,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC,CAsBlB"}
@@ -0,0 +1,166 @@
1
+ // ── Trello REST API tool ───────────────────────────────────────────────────
2
+ // Wraps the Trello REST API (https://api.trello.com/1) via fetch.
3
+ // Auth: api_key + token (both required for write operations).
4
+ // No external dependencies.
5
+ const TRELLO_API = "https://api.trello.com/1";
6
+ // ── Fetch helper ───────────────────────────────────────────────────────────────
7
+ async function trelloFetch(apiKey, token, method, path, body, query) {
8
+ const url = new URL(`${TRELLO_API}${path}`);
9
+ url.searchParams.set("key", apiKey);
10
+ url.searchParams.set("token", token);
11
+ if (query) {
12
+ for (const [k, v] of Object.entries(query)) {
13
+ if (v !== undefined && v !== "")
14
+ url.searchParams.set(k, String(v));
15
+ }
16
+ }
17
+ const headers = {
18
+ Accept: "application/json",
19
+ "User-Agent": "UnClick-MCP/1.0",
20
+ };
21
+ if (body !== undefined) {
22
+ headers["Content-Type"] = "application/json";
23
+ }
24
+ let response;
25
+ try {
26
+ response = await fetch(url.toString(), {
27
+ method,
28
+ headers,
29
+ body: body !== undefined ? JSON.stringify(body) : undefined,
30
+ });
31
+ }
32
+ catch (err) {
33
+ return { error: `Network error reaching Trello API: ${err instanceof Error ? err.message : String(err)}` };
34
+ }
35
+ const text = await response.text();
36
+ let data;
37
+ try {
38
+ data = JSON.parse(text);
39
+ }
40
+ catch {
41
+ data = text;
42
+ }
43
+ if (response.status === 401)
44
+ return { error: "Trello API key or token is invalid. Check api_key and token.", status: 401 };
45
+ if (response.status === 403)
46
+ return { error: "Insufficient permissions for this Trello resource.", status: 403 };
47
+ if (response.status === 404)
48
+ return { error: "Board, list, or card not found.", status: 404 };
49
+ if (response.status === 429)
50
+ return { error: "Trello rate limit exceeded. Please wait and retry.", status: 429 };
51
+ if (!response.ok) {
52
+ return { error: `Trello API error ${response.status}: ${typeof data === "string" ? data : JSON.stringify(data)}`, status: response.status };
53
+ }
54
+ return data;
55
+ }
56
+ // ── Action implementations ─────────────────────────────────────────────────────
57
+ async function getBoards(apiKey, token, args) {
58
+ const memberId = String(args.member_id ?? "me").trim();
59
+ return trelloFetch(apiKey, token, "GET", `/members/${encodeURIComponent(memberId)}/boards`, undefined, {
60
+ fields: "id,name,desc,url,closed,idOrganization",
61
+ filter: args.filter ? String(args.filter) : "open",
62
+ });
63
+ }
64
+ async function getLists(apiKey, token, args) {
65
+ const boardId = String(args.board_id ?? "").trim();
66
+ if (!boardId)
67
+ return { error: "board_id is required." };
68
+ return trelloFetch(apiKey, token, "GET", `/boards/${encodeURIComponent(boardId)}/lists`, undefined, {
69
+ filter: args.filter ? String(args.filter) : "open",
70
+ });
71
+ }
72
+ async function getCards(apiKey, token, args) {
73
+ const listId = String(args.list_id ?? "").trim();
74
+ const boardId = String(args.board_id ?? "").trim();
75
+ if (listId) {
76
+ return trelloFetch(apiKey, token, "GET", `/lists/${encodeURIComponent(listId)}/cards`, undefined, {
77
+ fields: "id,name,desc,due,dueComplete,idList,idBoard,labels,url",
78
+ });
79
+ }
80
+ if (boardId) {
81
+ return trelloFetch(apiKey, token, "GET", `/boards/${encodeURIComponent(boardId)}/cards`, undefined, {
82
+ fields: "id,name,desc,due,dueComplete,idList,idBoard,labels,url",
83
+ filter: args.filter ? String(args.filter) : "open",
84
+ });
85
+ }
86
+ return { error: "list_id or board_id is required." };
87
+ }
88
+ async function createCard(apiKey, token, args) {
89
+ const listId = String(args.list_id ?? "").trim();
90
+ const name = String(args.name ?? "").trim();
91
+ if (!listId)
92
+ return { error: "list_id is required." };
93
+ if (!name)
94
+ return { error: "name is required." };
95
+ const body = { idList: listId, name };
96
+ if (args.desc)
97
+ body.desc = String(args.desc);
98
+ if (args.due)
99
+ body.due = String(args.due);
100
+ if (args.pos)
101
+ body.pos = String(args.pos);
102
+ if (args.id_labels)
103
+ body.idLabels = args.id_labels;
104
+ return trelloFetch(apiKey, token, "POST", "/cards", body);
105
+ }
106
+ async function updateCard(apiKey, token, args) {
107
+ const cardId = String(args.card_id ?? "").trim();
108
+ if (!cardId)
109
+ return { error: "card_id is required." };
110
+ const body = {};
111
+ if (args.name !== undefined)
112
+ body.name = String(args.name);
113
+ if (args.desc !== undefined)
114
+ body.desc = String(args.desc);
115
+ if (args.due !== undefined)
116
+ body.due = String(args.due);
117
+ if (args.due_complete !== undefined)
118
+ body.dueComplete = Boolean(args.due_complete);
119
+ if (args.id_list !== undefined)
120
+ body.idList = String(args.id_list);
121
+ if (args.closed !== undefined)
122
+ body.closed = Boolean(args.closed);
123
+ if (args.pos !== undefined)
124
+ body.pos = String(args.pos);
125
+ return trelloFetch(apiKey, token, "PUT", `/cards/${encodeURIComponent(cardId)}`, body);
126
+ }
127
+ async function searchCards(apiKey, token, args) {
128
+ const query = String(args.query ?? "").trim();
129
+ if (!query)
130
+ return { error: "query is required." };
131
+ return trelloFetch(apiKey, token, "GET", "/search", undefined, {
132
+ query,
133
+ modelTypes: "cards",
134
+ card_fields: "id,name,desc,due,dueComplete,idList,idBoard,url",
135
+ cards_limit: args.limit ? Number(args.limit) : 20,
136
+ card_board: "true",
137
+ card_list: "true",
138
+ });
139
+ }
140
+ // ── Public dispatcher ──────────────────────────────────────────────────────────
141
+ export async function trelloAction(action, args) {
142
+ const apiKey = String(args.api_key ?? "").trim();
143
+ const token = String(args.token ?? "").trim();
144
+ if (!apiKey)
145
+ return { error: "api_key is required." };
146
+ if (!token)
147
+ return { error: "token is required." };
148
+ try {
149
+ switch (action) {
150
+ case "get_boards": return getBoards(apiKey, token, args);
151
+ case "get_lists": return getLists(apiKey, token, args);
152
+ case "get_cards": return getCards(apiKey, token, args);
153
+ case "create_card": return createCard(apiKey, token, args);
154
+ case "update_card": return updateCard(apiKey, token, args);
155
+ case "search_cards": return searchCards(apiKey, token, args);
156
+ default:
157
+ return {
158
+ error: `Unknown Trello action: "${action}". Valid actions: get_boards, get_lists, get_cards, create_card, update_card, search_cards.`,
159
+ };
160
+ }
161
+ }
162
+ catch (err) {
163
+ return { error: err instanceof Error ? err.message : String(err) };
164
+ }
165
+ }
166
+ //# sourceMappingURL=trello-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trello-tool.js","sourceRoot":"","sources":["../src/trello-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function twilioSendSms(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function twilioListMessages(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function twilioGetMessage(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function twilioMakeCall(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function twilioListCalls(args: Record<string, unknown>): Promise<unknown>;
6
+ export declare function twilioSendVerify(args: Record<string, unknown>): Promise<unknown>;
7
+ export declare function twilioCheckVerify(args: Record<string, unknown>): Promise<unknown>;
8
+ //# sourceMappingURL=twilio-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twilio-tool.d.ts","sourceRoot":"","sources":["../src/twilio-tool.ts"],"names":[],"mappings":"AAqJA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBnF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BxF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBtF;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBpF;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BrF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAyBtF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBvF"}
@@ -0,0 +1,243 @@
1
+ // Twilio REST API integration for the UnClick MCP server.
2
+ // Uses the Twilio REST API via fetch - no external dependencies.
3
+ // Users must supply their Account SID and Auth Token from the Twilio Console.
4
+ const TWILIO_API_BASE = "https://api.twilio.com/2010-04-01";
5
+ // ─── Auth helper ──────────────────────────────────────────────────────────────
6
+ function requireAuth(args) {
7
+ const accountSid = String(args.account_sid ?? "").trim();
8
+ const authToken = String(args.auth_token ?? "").trim();
9
+ if (!accountSid)
10
+ throw new Error("account_sid is required. Find it at console.twilio.com.");
11
+ if (!authToken)
12
+ throw new Error("auth_token is required. Find it at console.twilio.com.");
13
+ return { accountSid, authToken };
14
+ }
15
+ function basicAuth(accountSid, authToken) {
16
+ return "Basic " + Buffer.from(`${accountSid}:${authToken}`).toString("base64");
17
+ }
18
+ // ─── API helpers ──────────────────────────────────────────────────────────────
19
+ async function twilioPost(accountSid, authToken, path, params) {
20
+ const url = `${TWILIO_API_BASE}/Accounts/${accountSid}${path}.json`;
21
+ const body = new URLSearchParams(params).toString();
22
+ const res = await fetch(url, {
23
+ method: "POST",
24
+ headers: {
25
+ Authorization: basicAuth(accountSid, authToken),
26
+ "Content-Type": "application/x-www-form-urlencoded",
27
+ },
28
+ body,
29
+ });
30
+ const data = await res.json();
31
+ if (!res.ok) {
32
+ const code = data.code ? ` (code ${data.code})` : "";
33
+ throw new Error(`Twilio error${code}: ${data.message ?? `HTTP ${res.status}`}`);
34
+ }
35
+ return data;
36
+ }
37
+ async function twilioGet(accountSid, authToken, path, query = {}) {
38
+ const qs = new URLSearchParams(query).toString();
39
+ const url = `${TWILIO_API_BASE}/Accounts/${accountSid}${path}.json${qs ? `?${qs}` : ""}`;
40
+ const res = await fetch(url, {
41
+ headers: { Authorization: basicAuth(accountSid, authToken) },
42
+ });
43
+ const data = await res.json();
44
+ if (!res.ok) {
45
+ const code = data.code ? ` (code ${data.code})` : "";
46
+ throw new Error(`Twilio error${code}: ${data.message ?? `HTTP ${res.status}`}`);
47
+ }
48
+ return data;
49
+ }
50
+ async function twilioVerifyPost(accountSid, authToken, path, params) {
51
+ const url = `https://verify.twilio.com/v2${path}`;
52
+ const body = new URLSearchParams(params).toString();
53
+ const res = await fetch(url, {
54
+ method: "POST",
55
+ headers: {
56
+ Authorization: basicAuth(accountSid, authToken),
57
+ "Content-Type": "application/x-www-form-urlencoded",
58
+ },
59
+ body,
60
+ });
61
+ const data = await res.json();
62
+ if (!res.ok) {
63
+ const code = data.code ? ` (code ${data.code})` : "";
64
+ throw new Error(`Twilio Verify error${code}: ${data.message ?? `HTTP ${res.status}`}`);
65
+ }
66
+ return data;
67
+ }
68
+ // ─── Operations ───────────────────────────────────────────────────────────────
69
+ export async function twilioSendSms(args) {
70
+ const { accountSid, authToken } = requireAuth(args);
71
+ const to = String(args.to ?? "").trim();
72
+ const from = String(args.from ?? "").trim();
73
+ const body = String(args.body ?? "").trim();
74
+ if (!to)
75
+ throw new Error("to is required (E.164 phone number, e.g. +61400000000).");
76
+ if (!from)
77
+ throw new Error("from is required (your Twilio phone number or messaging service SID).");
78
+ if (!body)
79
+ throw new Error("body is required (message text).");
80
+ const params = { To: to, From: from, Body: body };
81
+ if (args.status_callback)
82
+ params.StatusCallback = String(args.status_callback);
83
+ const msg = await twilioPost(accountSid, authToken, "/Messages", params);
84
+ return {
85
+ success: true,
86
+ sid: msg.sid,
87
+ status: msg.status,
88
+ to: msg.to,
89
+ from: msg.from,
90
+ body: msg.body,
91
+ date_created: msg.date_created,
92
+ };
93
+ }
94
+ export async function twilioListMessages(args) {
95
+ const { accountSid, authToken } = requireAuth(args);
96
+ const query = {};
97
+ if (args.to)
98
+ query.To = String(args.to);
99
+ if (args.from)
100
+ query.From = String(args.from);
101
+ if (args.date_sent)
102
+ query.DateSent = String(args.date_sent);
103
+ const pageSize = Math.min(100, Math.max(1, Number(args.page_size ?? 20)));
104
+ query.PageSize = String(pageSize);
105
+ const data = await twilioGet(accountSid, authToken, "/Messages", query);
106
+ const messages = data.messages ?? [];
107
+ return {
108
+ count: messages.length,
109
+ messages: messages.map((m) => ({
110
+ sid: m.sid,
111
+ status: m.status,
112
+ from: m.from,
113
+ to: m.to,
114
+ body: m.body,
115
+ direction: m.direction,
116
+ date_created: m.date_created,
117
+ date_sent: m.date_sent,
118
+ error_code: m.error_code,
119
+ })),
120
+ next_page_uri: data.next_page_uri ?? null,
121
+ };
122
+ }
123
+ export async function twilioGetMessage(args) {
124
+ const { accountSid, authToken } = requireAuth(args);
125
+ const messageSid = String(args.message_sid ?? "").trim();
126
+ if (!messageSid)
127
+ throw new Error("message_sid is required.");
128
+ const msg = await twilioGet(accountSid, authToken, `/Messages/${encodeURIComponent(messageSid)}`);
129
+ return {
130
+ sid: msg.sid,
131
+ status: msg.status,
132
+ from: msg.from,
133
+ to: msg.to,
134
+ body: msg.body,
135
+ direction: msg.direction,
136
+ date_created: msg.date_created,
137
+ date_sent: msg.date_sent,
138
+ error_code: msg.error_code,
139
+ error_message: msg.error_message,
140
+ price: msg.price,
141
+ price_unit: msg.price_unit,
142
+ };
143
+ }
144
+ export async function twilioMakeCall(args) {
145
+ const { accountSid, authToken } = requireAuth(args);
146
+ const to = String(args.to ?? "").trim();
147
+ const from = String(args.from ?? "").trim();
148
+ const twiml = String(args.twiml ?? "").trim();
149
+ const url = String(args.url ?? "").trim();
150
+ if (!to)
151
+ throw new Error("to is required (E.164 phone number).");
152
+ if (!from)
153
+ throw new Error("from is required (your Twilio phone number).");
154
+ if (!twiml && !url)
155
+ throw new Error("Either twiml or url is required to specify call instructions.");
156
+ const params = { To: to, From: from };
157
+ if (twiml)
158
+ params.Twiml = twiml;
159
+ if (url)
160
+ params.Url = url;
161
+ if (args.status_callback)
162
+ params.StatusCallback = String(args.status_callback);
163
+ const call = await twilioPost(accountSid, authToken, "/Calls", params);
164
+ return {
165
+ success: true,
166
+ sid: call.sid,
167
+ status: call.status,
168
+ to: call.to,
169
+ from: call.from,
170
+ direction: call.direction,
171
+ };
172
+ }
173
+ export async function twilioListCalls(args) {
174
+ const { accountSid, authToken } = requireAuth(args);
175
+ const query = {};
176
+ if (args.to)
177
+ query.To = String(args.to);
178
+ if (args.from)
179
+ query.From = String(args.from);
180
+ if (args.status)
181
+ query.Status = String(args.status);
182
+ const pageSize = Math.min(100, Math.max(1, Number(args.page_size ?? 20)));
183
+ query.PageSize = String(pageSize);
184
+ const data = await twilioGet(accountSid, authToken, "/Calls", query);
185
+ const calls = data.calls ?? [];
186
+ return {
187
+ count: calls.length,
188
+ calls: calls.map((c) => ({
189
+ sid: c.sid,
190
+ status: c.status,
191
+ from: c.from,
192
+ to: c.to,
193
+ direction: c.direction,
194
+ duration: c.duration,
195
+ start_time: c.start_time,
196
+ end_time: c.end_time,
197
+ price: c.price,
198
+ })),
199
+ next_page_uri: data.next_page_uri ?? null,
200
+ };
201
+ }
202
+ export async function twilioSendVerify(args) {
203
+ const { accountSid, authToken } = requireAuth(args);
204
+ const serviceSid = String(args.service_sid ?? "").trim();
205
+ const to = String(args.to ?? "").trim();
206
+ const channel = String(args.channel ?? "sms").toLowerCase();
207
+ if (!serviceSid)
208
+ throw new Error("service_sid is required (Twilio Verify Service SID).");
209
+ if (!to)
210
+ throw new Error("to is required (E.164 phone number).");
211
+ const validChannels = ["sms", "call", "email", "whatsapp"];
212
+ if (!validChannels.includes(channel)) {
213
+ throw new Error(`Invalid channel "${channel}". Valid: ${validChannels.join(", ")}.`);
214
+ }
215
+ const result = await twilioVerifyPost(accountSid, authToken, `/Services/${encodeURIComponent(serviceSid)}/Verifications`, { To: to, Channel: channel });
216
+ return {
217
+ success: true,
218
+ sid: result.sid,
219
+ to: result.to,
220
+ channel: result.channel,
221
+ status: result.status,
222
+ };
223
+ }
224
+ export async function twilioCheckVerify(args) {
225
+ const { accountSid, authToken } = requireAuth(args);
226
+ const serviceSid = String(args.service_sid ?? "").trim();
227
+ const to = String(args.to ?? "").trim();
228
+ const code = String(args.code ?? "").trim();
229
+ if (!serviceSid)
230
+ throw new Error("service_sid is required.");
231
+ if (!to)
232
+ throw new Error("to is required (E.164 phone number).");
233
+ if (!code)
234
+ throw new Error("code is required (the OTP entered by the user).");
235
+ const result = await twilioVerifyPost(accountSid, authToken, `/Services/${encodeURIComponent(serviceSid)}/VerificationCheck`, { To: to, Code: code });
236
+ return {
237
+ valid: result.valid,
238
+ status: result.status,
239
+ to: result.to,
240
+ channel: result.channel,
241
+ };
242
+ }
243
+ //# sourceMappingURL=twilio-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twilio-tool.js","sourceRoot":"","sources":["../src/twilio-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function whatsappSendText(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function whatsappSendTemplate(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function whatsappSendMedia(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function whatsappGetMedia(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function whatsappUploadMedia(args: Record<string, unknown>): Promise<unknown>;
6
+ //# sourceMappingURL=whatsapp-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-tool.d.ts","sourceRoot":"","sources":["../src/whatsapp-tool.ts"],"names":[],"mappings":"AAuEA,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBtF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAqC1F;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwCvF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CActF;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAgCzF"}