@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,179 @@
1
+ // ─── eBay Browse API Tool ────────────────────────────────────────────────────
2
+ // Covers item search, item details, categories, and legacy item lookup.
3
+ // Auth: OAuth 2.0 client credentials (client_id + client_secret).
4
+ // Token is fetched automatically and cached for the request lifetime.
5
+ // API: https://api.ebay.com/buy/browse/v1
6
+ // No external dependencies - native fetch only.
7
+ const EBAY_TOKEN_URL = "https://api.ebay.com/identity/v1/oauth2/token";
8
+ const EBAY_BROWSE_URL = "https://api.ebay.com/buy/browse/v1";
9
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
10
+ function requireConfig(args) {
11
+ const client_id = String(args.client_id ?? "").trim();
12
+ const client_secret = String(args.client_secret ?? "").trim();
13
+ if (!client_id)
14
+ return { error: "client_id is required (eBay application Client ID)." };
15
+ if (!client_secret)
16
+ return { error: "client_secret is required (eBay application Client Secret)." };
17
+ return {
18
+ client_id,
19
+ client_secret,
20
+ marketplace: args.marketplace ? String(args.marketplace) : "EBAY_US",
21
+ };
22
+ }
23
+ async function getEbayToken(cfg) {
24
+ const credentials = Buffer.from(`${cfg.client_id}:${cfg.client_secret}`).toString("base64");
25
+ let response;
26
+ try {
27
+ response = await fetch(EBAY_TOKEN_URL, {
28
+ method: "POST",
29
+ headers: {
30
+ Authorization: `Basic ${credentials}`,
31
+ "Content-Type": "application/x-www-form-urlencoded",
32
+ },
33
+ body: "grant_type=client_credentials&scope=https%3A%2F%2Fapi.ebay.com%2Foauth%2Fapi_scope",
34
+ });
35
+ }
36
+ catch (err) {
37
+ return { error: `Network error fetching eBay token: ${err instanceof Error ? err.message : String(err)}` };
38
+ }
39
+ let data;
40
+ try {
41
+ data = await response.json();
42
+ }
43
+ catch {
44
+ return { error: "Non-JSON response from eBay token endpoint." };
45
+ }
46
+ if (!response.ok) {
47
+ const d = data;
48
+ return { error: `eBay auth failed (${response.status}): ${d["error_description"] ?? d["error"] ?? "unknown"}` };
49
+ }
50
+ return String(data["access_token"] ?? "");
51
+ }
52
+ async function ebayFetch(cfg, path, query) {
53
+ const tokenResult = await getEbayToken(cfg);
54
+ if (typeof tokenResult === "object" && "error" in tokenResult)
55
+ return tokenResult;
56
+ const url = new URL(`${EBAY_BROWSE_URL}${path}`);
57
+ if (query) {
58
+ for (const [k, v] of Object.entries(query)) {
59
+ if (v !== undefined)
60
+ url.searchParams.set(k, String(v));
61
+ }
62
+ }
63
+ let response;
64
+ try {
65
+ response = await fetch(url.toString(), {
66
+ headers: {
67
+ Authorization: `Bearer ${tokenResult}`,
68
+ "X-EBAY-C-MARKETPLACE-ID": cfg.marketplace ?? "EBAY_US",
69
+ "Content-Type": "application/json",
70
+ },
71
+ });
72
+ }
73
+ catch (err) {
74
+ return { error: `Network error: ${err instanceof Error ? err.message : String(err)}` };
75
+ }
76
+ // eBay rate limit
77
+ if (response.status === 429) {
78
+ return { error: "eBay rate limit reached. Wait before retrying.", status: 429 };
79
+ }
80
+ let data;
81
+ try {
82
+ data = await response.json();
83
+ }
84
+ catch {
85
+ return { error: `Non-JSON response (HTTP ${response.status})`, status: response.status };
86
+ }
87
+ if (!response.ok) {
88
+ const d = data;
89
+ return { error: d["errors"] ?? d["message"] ?? "eBay API error", status: response.status };
90
+ }
91
+ return data;
92
+ }
93
+ // ─── ebay_search ──────────────────────────────────────────────────────────────
94
+ export async function ebaySearch(args) {
95
+ const cfg = requireConfig(args);
96
+ if ("error" in cfg)
97
+ return cfg;
98
+ const q = String(args.q ?? "").trim();
99
+ if (!q)
100
+ return { error: "q (search query) is required." };
101
+ const query = {
102
+ q,
103
+ limit: args.limit ? Number(args.limit) : 20,
104
+ offset: args.offset ? Number(args.offset) : undefined,
105
+ filter: args.filter ? String(args.filter) : undefined,
106
+ sort: args.sort ? String(args.sort) : undefined,
107
+ category_ids: args.category_ids ? String(args.category_ids) : undefined,
108
+ fieldgroups: args.fieldgroups ? String(args.fieldgroups) : undefined,
109
+ };
110
+ return ebayFetch(cfg, "/item_summary/search", query);
111
+ }
112
+ // ─── ebay_get_item ────────────────────────────────────────────────────────────
113
+ export async function ebayGetItem(args) {
114
+ const cfg = requireConfig(args);
115
+ if ("error" in cfg)
116
+ return cfg;
117
+ const item_id = String(args.item_id ?? "").trim();
118
+ if (!item_id)
119
+ return { error: "item_id is required." };
120
+ const query = {
121
+ fieldgroups: args.fieldgroups ? String(args.fieldgroups) : undefined,
122
+ };
123
+ return ebayFetch(cfg, `/item/${encodeURIComponent(item_id)}`, query);
124
+ }
125
+ // ─── ebay_get_item_by_legacy_id ───────────────────────────────────────────────
126
+ export async function ebayGetItemByLegacyId(args) {
127
+ const cfg = requireConfig(args);
128
+ if ("error" in cfg)
129
+ return cfg;
130
+ const legacy_item_id = String(args.legacy_item_id ?? "").trim();
131
+ if (!legacy_item_id)
132
+ return { error: "legacy_item_id is required." };
133
+ const query = {
134
+ legacy_item_id,
135
+ legacy_variation_id: args.legacy_variation_id ? String(args.legacy_variation_id) : undefined,
136
+ legacy_variation_sku: args.legacy_variation_sku ? String(args.legacy_variation_sku) : undefined,
137
+ fieldgroups: args.fieldgroups ? String(args.fieldgroups) : undefined,
138
+ };
139
+ return ebayFetch(cfg, "/item/get_item_by_legacy_id", query);
140
+ }
141
+ // ─── ebay_get_categories ──────────────────────────────────────────────────────
142
+ export async function ebayGetCategories(args) {
143
+ const cfg = requireConfig(args);
144
+ if ("error" in cfg)
145
+ return cfg;
146
+ const category_tree_id = String(args.category_tree_id ?? "0");
147
+ const tokenResult = await getEbayToken(cfg);
148
+ if (typeof tokenResult === "object" && "error" in tokenResult)
149
+ return tokenResult;
150
+ const url = `https://api.ebay.com/commerce/taxonomy/v1/category_tree/${encodeURIComponent(category_tree_id)}`;
151
+ let response;
152
+ try {
153
+ response = await fetch(url, {
154
+ headers: {
155
+ Authorization: `Bearer ${tokenResult}`,
156
+ "X-EBAY-C-MARKETPLACE-ID": cfg.marketplace ?? "EBAY_US",
157
+ },
158
+ });
159
+ }
160
+ catch (err) {
161
+ return { error: `Network error: ${err instanceof Error ? err.message : String(err)}` };
162
+ }
163
+ if (response.status === 429) {
164
+ return { error: "eBay rate limit reached. Wait before retrying.", status: 429 };
165
+ }
166
+ let data;
167
+ try {
168
+ data = await response.json();
169
+ }
170
+ catch {
171
+ return { error: `Non-JSON response (HTTP ${response.status})`, status: response.status };
172
+ }
173
+ if (!response.ok) {
174
+ const d = data;
175
+ return { error: d["errors"] ?? d["message"] ?? "eBay API error", status: response.status };
176
+ }
177
+ return data;
178
+ }
179
+ //# sourceMappingURL=ebay-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ebay-tool.js","sourceRoot":"","sources":["../src/ebay-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function elevenlabsListVoices(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function elevenlabsGetVoice(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function elevenlabsTextToSpeech(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function elevenlabsGetModels(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function elevenlabsGetHistory(args: Record<string, unknown>): Promise<unknown>;
6
+ //# sourceMappingURL=elevenlabs-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-tool.d.ts","sourceRoot":"","sources":["../src/elevenlabs-tool.ts"],"names":[],"mappings":"AAqGA,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAe1F;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBxF;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwC5F;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAezF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA6B1F"}
@@ -0,0 +1,166 @@
1
+ // ElevenLabs API integration for the UnClick MCP server.
2
+ // Uses the ElevenLabs REST API via fetch - no external dependencies.
3
+ // Users must supply an API key from elevenlabs.io.
4
+ const EL_API_BASE = "https://api.elevenlabs.io/v1";
5
+ // ─── Auth validation ──────────────────────────────────────────────────────────
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 elevenlabs.io.");
10
+ return key;
11
+ }
12
+ // ─── API helpers ──────────────────────────────────────────────────────────────
13
+ async function elGet(apiKey, path) {
14
+ const res = await fetch(`${EL_API_BASE}${path}`, {
15
+ headers: {
16
+ "xi-api-key": apiKey,
17
+ "Content-Type": "application/json",
18
+ },
19
+ });
20
+ const data = await res.json();
21
+ if (!res.ok) {
22
+ const detail = data.detail;
23
+ const msg = typeof detail === "object" ? (detail?.message ?? JSON.stringify(detail)) : detail;
24
+ throw new Error(`ElevenLabs error (${res.status}): ${msg ?? `HTTP ${res.status}`}`);
25
+ }
26
+ return data;
27
+ }
28
+ async function elPost(apiKey, path, body) {
29
+ const res = await fetch(`${EL_API_BASE}${path}`, {
30
+ method: "POST",
31
+ headers: {
32
+ "xi-api-key": apiKey,
33
+ "Content-Type": "application/json",
34
+ },
35
+ body: JSON.stringify(body),
36
+ });
37
+ if (!res.ok) {
38
+ let msg = `HTTP ${res.status}`;
39
+ try {
40
+ const data = await res.json();
41
+ const detail = data.detail;
42
+ msg = typeof detail === "object" ? String(detail?.message ?? JSON.stringify(detail)) : (detail ?? msg);
43
+ }
44
+ catch { /* ignore parse errors */ }
45
+ throw new Error(`ElevenLabs error (${res.status}): ${msg}`);
46
+ }
47
+ // text-to-speech returns audio binary
48
+ return res;
49
+ }
50
+ // ─── Operations ───────────────────────────────────────────────────────────────
51
+ export async function elevenlabsListVoices(args) {
52
+ const apiKey = requireKey(args);
53
+ const data = await elGet(apiKey, "/voices");
54
+ return {
55
+ count: data.voices.length,
56
+ voices: data.voices.map((v) => ({
57
+ voice_id: v.voice_id,
58
+ name: v.name,
59
+ category: v.category,
60
+ description: v.description ?? null,
61
+ labels: v.labels ?? {},
62
+ preview_url: v.preview_url ?? null,
63
+ })),
64
+ };
65
+ }
66
+ export async function elevenlabsGetVoice(args) {
67
+ const apiKey = requireKey(args);
68
+ const voiceId = String(args.voice_id ?? "").trim();
69
+ if (!voiceId)
70
+ throw new Error("voice_id is required.");
71
+ const withSettings = args.with_settings === true;
72
+ const path = `/voices/${encodeURIComponent(voiceId)}${withSettings ? "?with_settings=true" : ""}`;
73
+ const voice = await elGet(apiKey, path);
74
+ return {
75
+ voice_id: voice.voice_id,
76
+ name: voice.name,
77
+ category: voice.category,
78
+ description: voice.description ?? null,
79
+ labels: voice.labels ?? {},
80
+ preview_url: voice.preview_url ?? null,
81
+ settings: voice.settings ?? null,
82
+ };
83
+ }
84
+ export async function elevenlabsTextToSpeech(args) {
85
+ const apiKey = requireKey(args);
86
+ const voiceId = String(args.voice_id ?? "").trim();
87
+ const text = String(args.text ?? "").trim();
88
+ if (!voiceId)
89
+ throw new Error("voice_id is required.");
90
+ if (!text)
91
+ throw new Error("text is required.");
92
+ if (text.length > 5000)
93
+ throw new Error("text must be 5000 characters or fewer.");
94
+ const modelId = String(args.model_id ?? "eleven_monolingual_v1");
95
+ const outputFormat = String(args.output_format ?? "mp3_44100_128");
96
+ const voiceSettings = {
97
+ stability: Math.min(1, Math.max(0, Number(args.stability ?? 0.5))),
98
+ similarity_boost: Math.min(1, Math.max(0, Number(args.similarity_boost ?? 0.75))),
99
+ };
100
+ if (args.style !== undefined)
101
+ voiceSettings.style = Math.min(1, Math.max(0, Number(args.style)));
102
+ if (args.use_speaker_boost !== undefined)
103
+ voiceSettings.use_speaker_boost = Boolean(args.use_speaker_boost);
104
+ const path = `/text-to-speech/${encodeURIComponent(voiceId)}?output_format=${encodeURIComponent(outputFormat)}`;
105
+ const res = await elPost(apiKey, path, {
106
+ text,
107
+ model_id: modelId,
108
+ voice_settings: voiceSettings,
109
+ });
110
+ // Return audio as base64 for transport over JSON
111
+ const audioBuffer = await res.arrayBuffer();
112
+ const base64 = Buffer.from(audioBuffer).toString("base64");
113
+ const contentType = res.headers?.get("content-type") ?? "audio/mpeg";
114
+ return {
115
+ success: true,
116
+ voice_id: voiceId,
117
+ model_id: modelId,
118
+ output_format: outputFormat,
119
+ character_count: text.length,
120
+ content_type: contentType,
121
+ audio_base64: base64,
122
+ note: "Decode audio_base64 and write as binary to play the audio file.",
123
+ };
124
+ }
125
+ export async function elevenlabsGetModels(args) {
126
+ const apiKey = requireKey(args);
127
+ const models = await elGet(apiKey, "/models");
128
+ return {
129
+ count: models.length,
130
+ models: models.map((m) => ({
131
+ model_id: m.model_id,
132
+ name: m.name,
133
+ description: m.description ?? null,
134
+ can_do_text_to_speech: m.can_do_text_to_speech,
135
+ can_do_voice_conversion: m.can_do_voice_conversion,
136
+ languages: m.languages.map((l) => ({ id: l.language_id, name: l.name })),
137
+ })),
138
+ };
139
+ }
140
+ export async function elevenlabsGetHistory(args) {
141
+ const apiKey = requireKey(args);
142
+ const pageSize = Math.min(1000, Math.max(1, Number(args.page_size ?? 30)));
143
+ const params = new URLSearchParams({ page_size: String(pageSize) });
144
+ if (args.start_after_history_item_id) {
145
+ params.set("start_after_history_item_id", String(args.start_after_history_item_id));
146
+ }
147
+ if (args.voice_id) {
148
+ params.set("voice_id", String(args.voice_id));
149
+ }
150
+ const data = await elGet(apiKey, `/history?${params.toString()}`);
151
+ return {
152
+ count: data.history.length,
153
+ has_more: data.has_more,
154
+ last_history_item_id: data.last_history_item_id ?? null,
155
+ items: data.history.map((h) => ({
156
+ history_item_id: h.history_item_id,
157
+ voice_id: h.voice_id,
158
+ voice_name: h.voice_name,
159
+ text: h.text,
160
+ date: new Date(h.date_unix * 1000).toISOString(),
161
+ character_count: h.character_count_change_to - h.character_count_change_from,
162
+ state: h.state,
163
+ })),
164
+ };
165
+ }
166
+ //# sourceMappingURL=elevenlabs-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-tool.js","sourceRoot":"","sources":["../src/elevenlabs-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function etsySearchListings(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function etsyGetListing(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function etsyGetShop(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function etsyGetShopListings(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function etsySearchShops(args: Record<string, unknown>): Promise<unknown>;
6
+ //# sourceMappingURL=etsy-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"etsy-tool.d.ts","sourceRoot":"","sources":["../src/etsy-tool.ts"],"names":[],"mappings":"AAoEA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBxF;AAID,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAUpF;AAID,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAQjF;AAID,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAazF;AAID,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAYrF"}
@@ -0,0 +1,125 @@
1
+ // ─── Etsy Open API v3 Tool ───────────────────────────────────────────────────
2
+ // Covers listings, shops, and reviews via the Etsy Open API v3.
3
+ // Auth: API key (x-api-key header).
4
+ // Base URL: https://openapi.etsy.com/v3
5
+ // No external dependencies - native fetch only.
6
+ const ETSY_BASE = "https://openapi.etsy.com/v3";
7
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
8
+ function requireConfig(args) {
9
+ const api_key = String(args.api_key ?? "").trim();
10
+ if (!api_key)
11
+ return { error: "api_key is required (Etsy API key)." };
12
+ return { api_key };
13
+ }
14
+ async function etsyFetch(cfg, path, query) {
15
+ const url = new URL(`${ETSY_BASE}${path}`);
16
+ if (query) {
17
+ for (const [k, v] of Object.entries(query)) {
18
+ if (v !== undefined)
19
+ url.searchParams.set(k, String(v));
20
+ }
21
+ }
22
+ let response;
23
+ try {
24
+ response = await fetch(url.toString(), {
25
+ headers: {
26
+ "x-api-key": cfg.api_key,
27
+ "Accept": "application/json",
28
+ },
29
+ });
30
+ }
31
+ catch (err) {
32
+ return { error: `Network error: ${err instanceof Error ? err.message : String(err)}` };
33
+ }
34
+ if (response.status === 429) {
35
+ const retryAfter = response.headers.get("Retry-After");
36
+ return { error: "Etsy rate limit reached.", retry_after: retryAfter ? Number(retryAfter) : 10, status: 429 };
37
+ }
38
+ if (response.status === 403) {
39
+ return { error: "Etsy auth failed: invalid or missing API key.", status: 403 };
40
+ }
41
+ let data;
42
+ try {
43
+ data = await response.json();
44
+ }
45
+ catch {
46
+ return { error: `Non-JSON response (HTTP ${response.status})`, status: response.status };
47
+ }
48
+ if (!response.ok) {
49
+ const d = data;
50
+ return { error: d["error"] ?? d["message"] ?? "Etsy API error", status: response.status };
51
+ }
52
+ return data;
53
+ }
54
+ // ─── etsy_search_listings ─────────────────────────────────────────────────────
55
+ export async function etsySearchListings(args) {
56
+ const cfg = requireConfig(args);
57
+ if ("error" in cfg)
58
+ return cfg;
59
+ const keywords = String(args.keywords ?? "").trim();
60
+ if (!keywords)
61
+ return { error: "keywords is required for searching listings." };
62
+ return etsyFetch(cfg, "/application/listings/active", {
63
+ keywords,
64
+ limit: args.limit ? Number(args.limit) : 25,
65
+ offset: args.offset ? Number(args.offset) : undefined,
66
+ sort_on: args.sort_on ? String(args.sort_on) : undefined,
67
+ sort_order: args.sort_order ? String(args.sort_order) : undefined,
68
+ min_price: args.min_price ? Number(args.min_price) : undefined,
69
+ max_price: args.max_price ? Number(args.max_price) : undefined,
70
+ taxonomy_id: args.taxonomy_id ? Number(args.taxonomy_id) : undefined,
71
+ location: args.location ? String(args.location) : undefined,
72
+ });
73
+ }
74
+ // ─── etsy_get_listing ─────────────────────────────────────────────────────────
75
+ export async function etsyGetListing(args) {
76
+ const cfg = requireConfig(args);
77
+ if ("error" in cfg)
78
+ return cfg;
79
+ const listing_id = String(args.listing_id ?? "").trim();
80
+ if (!listing_id)
81
+ return { error: "listing_id is required." };
82
+ return etsyFetch(cfg, `/application/listings/${encodeURIComponent(listing_id)}`, {
83
+ includes: args.includes ? String(args.includes) : undefined,
84
+ });
85
+ }
86
+ // ─── etsy_get_shop ────────────────────────────────────────────────────────────
87
+ export async function etsyGetShop(args) {
88
+ const cfg = requireConfig(args);
89
+ if ("error" in cfg)
90
+ return cfg;
91
+ const shop_id = String(args.shop_id ?? "").trim();
92
+ if (!shop_id)
93
+ return { error: "shop_id is required." };
94
+ return etsyFetch(cfg, `/application/shops/${encodeURIComponent(shop_id)}`);
95
+ }
96
+ // ─── etsy_get_shop_listings ───────────────────────────────────────────────────
97
+ export async function etsyGetShopListings(args) {
98
+ const cfg = requireConfig(args);
99
+ if ("error" in cfg)
100
+ return cfg;
101
+ const shop_id = String(args.shop_id ?? "").trim();
102
+ if (!shop_id)
103
+ return { error: "shop_id is required." };
104
+ return etsyFetch(cfg, `/application/shops/${encodeURIComponent(shop_id)}/listings/active`, {
105
+ limit: args.limit ? Number(args.limit) : 25,
106
+ offset: args.offset ? Number(args.offset) : undefined,
107
+ sort_on: args.sort_on ? String(args.sort_on) : undefined,
108
+ sort_order: args.sort_order ? String(args.sort_order) : undefined,
109
+ });
110
+ }
111
+ // ─── etsy_search_shops ────────────────────────────────────────────────────────
112
+ export async function etsySearchShops(args) {
113
+ const cfg = requireConfig(args);
114
+ if ("error" in cfg)
115
+ return cfg;
116
+ const shop_name = String(args.shop_name ?? "").trim();
117
+ if (!shop_name)
118
+ return { error: "shop_name is required." };
119
+ return etsyFetch(cfg, "/application/shops", {
120
+ shop_name,
121
+ limit: args.limit ? Number(args.limit) : 25,
122
+ offset: args.offset ? Number(args.offset) : undefined,
123
+ });
124
+ }
125
+ //# sourceMappingURL=etsy-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"etsy-tool.js","sourceRoot":"","sources":["../src/etsy-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function exchangerateLatest(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function exchangerateConvert(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function exchangerateHistorical(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function exchangerateCodes(args: Record<string, unknown>): Promise<unknown>;
5
+ //# sourceMappingURL=exchangerate-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchangerate-tool.d.ts","sourceRoot":"","sources":["../src/exchangerate-tool.ts"],"names":[],"mappings":"AAgCA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBxF;AAGD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAsCzF;AAGD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAsB5F;AAGD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAevF"}