@unclick/mcp-server 0.1.0

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 (70) hide show
  1. package/README.md +139 -0
  2. package/dist/amazon-tool.d.ts +5 -0
  3. package/dist/amazon-tool.d.ts.map +1 -0
  4. package/dist/amazon-tool.js +307 -0
  5. package/dist/amazon-tool.js.map +1 -0
  6. package/dist/bluesky-tool.d.ts +2 -0
  7. package/dist/bluesky-tool.d.ts.map +1 -0
  8. package/dist/bluesky-tool.js +368 -0
  9. package/dist/bluesky-tool.js.map +1 -0
  10. package/dist/catalog.d.ts +28 -0
  11. package/dist/catalog.d.ts.map +1 -0
  12. package/dist/catalog.js +1865 -0
  13. package/dist/catalog.js.map +1 -0
  14. package/dist/client.d.ts +12 -0
  15. package/dist/client.d.ts.map +1 -0
  16. package/dist/client.js +73 -0
  17. package/dist/client.js.map +1 -0
  18. package/dist/converter-tools.d.ts +50 -0
  19. package/dist/converter-tools.d.ts.map +1 -0
  20. package/dist/converter-tools.js +137 -0
  21. package/dist/converter-tools.js.map +1 -0
  22. package/dist/csuite-tool.d.ts +35 -0
  23. package/dist/csuite-tool.d.ts.map +1 -0
  24. package/dist/csuite-tool.js +791 -0
  25. package/dist/csuite-tool.js.map +1 -0
  26. package/dist/discord-tool.d.ts +8 -0
  27. package/dist/discord-tool.d.ts.map +1 -0
  28. package/dist/discord-tool.js +195 -0
  29. package/dist/discord-tool.js.map +1 -0
  30. package/dist/index.d.ts +3 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +7 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/local-tools.d.ts +72 -0
  35. package/dist/local-tools.d.ts.map +1 -0
  36. package/dist/local-tools.js +563 -0
  37. package/dist/local-tools.js.map +1 -0
  38. package/dist/mastodon-tool.d.ts +2 -0
  39. package/dist/mastodon-tool.d.ts.map +1 -0
  40. package/dist/mastodon-tool.js +372 -0
  41. package/dist/mastodon-tool.js.map +1 -0
  42. package/dist/reddit-tool.d.ts +59 -0
  43. package/dist/reddit-tool.d.ts.map +1 -0
  44. package/dist/reddit-tool.js +348 -0
  45. package/dist/reddit-tool.js.map +1 -0
  46. package/dist/server.d.ts +4 -0
  47. package/dist/server.d.ts.map +1 -0
  48. package/dist/server.js +2337 -0
  49. package/dist/server.js.map +1 -0
  50. package/dist/shopify-tool.d.ts +8 -0
  51. package/dist/shopify-tool.d.ts.map +1 -0
  52. package/dist/shopify-tool.js +305 -0
  53. package/dist/shopify-tool.js.map +1 -0
  54. package/dist/slack-tool.d.ts +2 -0
  55. package/dist/slack-tool.d.ts.map +1 -0
  56. package/dist/slack-tool.js +316 -0
  57. package/dist/slack-tool.js.map +1 -0
  58. package/dist/telegram-tool.d.ts +7 -0
  59. package/dist/telegram-tool.d.ts.map +1 -0
  60. package/dist/telegram-tool.js +297 -0
  61. package/dist/telegram-tool.js.map +1 -0
  62. package/dist/vault-tool.d.ts +2 -0
  63. package/dist/vault-tool.d.ts.map +1 -0
  64. package/dist/vault-tool.js +395 -0
  65. package/dist/vault-tool.js.map +1 -0
  66. package/dist/xero-tool.d.ts +9 -0
  67. package/dist/xero-tool.d.ts.map +1 -0
  68. package/dist/xero-tool.js +330 -0
  69. package/dist/xero-tool.js.map +1 -0
  70. package/package.json +57 -0
package/README.md ADDED
@@ -0,0 +1,139 @@
1
+ # @unclick/mcp-server
2
+
3
+ **MCP server for the [UnClick](https://unclick.world) tool marketplace.**
4
+
5
+ Lets any MCP-compatible AI agent (Claude, Cursor, etc.) discover and use every tool in the UnClick marketplace — URL shortening, QR codes, image processing, hashing, CSV/JSON, regex, cron, color utilities, key-value storage, and more.
6
+
7
+ ## Quick Start
8
+
9
+ ### Claude Desktop
10
+
11
+ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
12
+
13
+ ```json
14
+ {
15
+ "mcpServers": {
16
+ "unclick": {
17
+ "command": "npx",
18
+ "args": ["-y", "@unclick/mcp-server"],
19
+ "env": {
20
+ "UNCLICK_API_KEY": "your_api_key_here"
21
+ }
22
+ }
23
+ }
24
+ }
25
+ ```
26
+
27
+ Get your API key at [unclick.world](https://unclick.world).
28
+
29
+ ### Local / Development
30
+
31
+ ```bash
32
+ UNCLICK_API_KEY=unck_... npx @unclick/mcp-server
33
+ ```
34
+
35
+ ## Configuration
36
+
37
+ | Environment Variable | Default | Description |
38
+ |---|---|---|
39
+ | `UNCLICK_API_KEY` | *(required)* | Your UnClick API key |
40
+ | `UNCLICK_BASE_URL` | `https://api.unclick.world` | Override API base URL (for self-hosted) |
41
+
42
+ ## Tools Exposed
43
+
44
+ ### Discovery (Meta Tools)
45
+
46
+ These tools let agents explore the full marketplace dynamically.
47
+
48
+ | Tool | Description |
49
+ |---|---|
50
+ | `unclick_search` | Search for tools by keyword. "I need to resize an image" → returns the image tool with endpoints and schemas. |
51
+ | `unclick_browse` | Browse all tools, optionally filtered by category (text, data, media, time, network, generation, storage). |
52
+ | `unclick_tool_info` | Get full details on a specific tool: all endpoints, required params, and response shapes. |
53
+ | `unclick_call` | Universal caller — specify any `endpoint_id` and `params`, the server routes the call. |
54
+
55
+ **Discovery flow for an agent:**
56
+ 1. `unclick_search` → "what tool handles X?"
57
+ 2. `unclick_tool_info` → "what are the exact params for that tool?"
58
+ 3. `unclick_call` → call it
59
+
60
+ ### Direct Tools (Zero Friction)
61
+
62
+ The most-used tools are exposed as first-class MCP tools for immediate use without discovery:
63
+
64
+ | Tool | What it does |
65
+ |---|---|
66
+ | `unclick_shorten_url` | Shorten a URL |
67
+ | `unclick_generate_qr` | Generate a QR code (PNG/SVG) |
68
+ | `unclick_hash` | Hash text with MD5/SHA1/SHA256/SHA512 |
69
+ | `unclick_transform_text` | Change text case (camel, snake, kebab, title, etc.) |
70
+ | `unclick_validate_email` | Validate an email address |
71
+ | `unclick_validate_url` | Validate a URL (+ optional reachability check) |
72
+ | `unclick_resize_image` | Resize a base64-encoded image |
73
+ | `unclick_parse_csv` | Parse CSV to JSON |
74
+ | `unclick_json_format` | Pretty-print JSON |
75
+ | `unclick_encode` | Encode/decode base64, URL, HTML, or hex |
76
+ | `unclick_generate_uuid` | Generate UUIDs |
77
+ | `unclick_random_password` | Generate a secure password |
78
+ | `unclick_cron_parse` | Parse a cron expression + show next occurrences |
79
+ | `unclick_ip_parse` | Parse an IP address |
80
+ | `unclick_color_convert` | Convert color between hex/RGB/HSL/HSV |
81
+ | `unclick_regex_test` | Test a regex and get all matches |
82
+ | `unclick_timestamp_convert` | Convert timestamps between formats |
83
+ | `unclick_diff_text` | Line-by-line diff of two strings |
84
+ | `unclick_kv_set` | Store a value in the key-value store |
85
+ | `unclick_kv_get` | Retrieve a value from the key-value store |
86
+
87
+ ## Full Tool Catalog
88
+
89
+ The marketplace currently includes 23 tool groups spanning:
90
+
91
+ - **Text** — transform (case, slug, count), encode/decode (base64, URL, HTML, hex), hash/HMAC, regex, markdown, diff
92
+ - **Data** — JSON utilities, CSV processing, input validation (email, URL, phone, credit card, IP, color)
93
+ - **Media** — image processing (resize, convert, crop, rotate, compress, grayscale), QR code generation, color utilities
94
+ - **Time** — timestamp conversion, cron parsing/building
95
+ - **Network** — URL shortening, IP utilities (parse, subnet, CIDR)
96
+ - **Generation** — UUID v4, random (numbers, strings, passwords, picks, shuffles, colors)
97
+ - **Storage** — key-value store (with TTL), webhook bins
98
+
99
+ All tools are accessible via `unclick_call` with the appropriate `endpoint_id`.
100
+
101
+ ## Example Usage
102
+
103
+ **Agent discovers and uses a tool:**
104
+ ```
105
+ Agent: I need to hash a password before storing it.
106
+
107
+ 1. unclick_search({ query: "hash password" })
108
+ → Returns: hash tool (slug: hash, endpoints: hash.compute, hash.verify, hash.hmac)
109
+
110
+ 2. unclick_call({ endpoint_id: "hash.compute", params: { text: "my-secret", algorithm: "sha256" } })
111
+ → { algorithm: "sha256", hash: "abc123...", length: 64 }
112
+ ```
113
+
114
+ **Direct tool usage:**
115
+ ```
116
+ Agent: unclick_generate_qr({ text: "https://example.com", format: "png", size: 400 })
117
+ → { binary: true, content_type: "image/png", data: "<base64>" }
118
+ ```
119
+
120
+ ## Development
121
+
122
+ ```bash
123
+ # Run locally with tsx (no build step)
124
+ UNCLICK_API_KEY=unck_... npm run dev
125
+
126
+ # Build
127
+ npm run build
128
+
129
+ # Run built output
130
+ npm start
131
+ ```
132
+
133
+ ## MCP Registry
134
+
135
+ This server is published to npm as `@unclick/mcp-server` and can be added to any MCP registry that supports npx-based servers.
136
+
137
+ ## License
138
+
139
+ MIT
@@ -0,0 +1,5 @@
1
+ export declare function amazonSearch(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function amazonProduct(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function amazonBrowse(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function amazonVariations(args: Record<string, unknown>): Promise<unknown>;
5
+ //# sourceMappingURL=amazon-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amazon-tool.d.ts","sourceRoot":"","sources":["../src/amazon-tool.ts"],"names":[],"mappings":"AAqPA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BlF;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBnF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkClF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiCtF"}
@@ -0,0 +1,307 @@
1
+ import { createHmac, createHash } from "crypto";
2
+ // ─── Marketplace configurations ─────────────────────────────────────────────
3
+ const MARKETPLACES = {
4
+ US: { host: "webservices.amazon.com", region: "us-east-1", marketplace: "www.amazon.com" },
5
+ CA: { host: "webservices.amazon.ca", region: "us-east-1", marketplace: "www.amazon.ca" },
6
+ MX: { host: "webservices.amazon.com.mx", region: "us-east-1", marketplace: "www.amazon.com.mx" },
7
+ BR: { host: "webservices.amazon.com.br", region: "us-east-1", marketplace: "www.amazon.com.br" },
8
+ UK: { host: "webservices.amazon.co.uk", region: "eu-west-1", marketplace: "www.amazon.co.uk" },
9
+ DE: { host: "webservices.amazon.de", region: "eu-west-1", marketplace: "www.amazon.de" },
10
+ FR: { host: "webservices.amazon.fr", region: "eu-west-1", marketplace: "www.amazon.fr" },
11
+ IT: { host: "webservices.amazon.it", region: "eu-west-1", marketplace: "www.amazon.it" },
12
+ ES: { host: "webservices.amazon.es", region: "eu-west-1", marketplace: "www.amazon.es" },
13
+ NL: { host: "webservices.amazon.nl", region: "eu-west-1", marketplace: "www.amazon.nl" },
14
+ SE: { host: "webservices.amazon.se", region: "eu-west-1", marketplace: "www.amazon.se" },
15
+ PL: { host: "webservices.amazon.pl", region: "eu-west-1", marketplace: "www.amazon.pl" },
16
+ BE: { host: "webservices.amazon.com.be", region: "eu-west-1", marketplace: "www.amazon.com.be" },
17
+ IN: { host: "webservices.amazon.in", region: "eu-west-1", marketplace: "www.amazon.in" },
18
+ JP: { host: "webservices.amazon.co.jp", region: "us-west-2", marketplace: "www.amazon.co.jp" },
19
+ AU: { host: "webservices.amazon.com.au", region: "us-east-1", marketplace: "www.amazon.com.au" },
20
+ SG: { host: "webservices.amazon.sg", region: "us-east-1", marketplace: "www.amazon.sg" },
21
+ AE: { host: "webservices.amazon.ae", region: "eu-west-1", marketplace: "www.amazon.ae" },
22
+ SA: { host: "webservices.amazon.sa", region: "eu-west-1", marketplace: "www.amazon.sa" },
23
+ TR: { host: "webservices.amazon.com.tr", region: "eu-west-1", marketplace: "www.amazon.com.tr" },
24
+ };
25
+ // ─── AWS Signature v4 ────────────────────────────────────────────────────────
26
+ function hmacSha256(key, data) {
27
+ return createHmac("sha256", key).update(data, "utf8").digest();
28
+ }
29
+ function sha256Hex(data) {
30
+ return createHash("sha256").update(data, "utf8").digest("hex");
31
+ }
32
+ function getSigningKey(secretKey, dateStamp, region, service) {
33
+ const kDate = hmacSha256(`AWS4${secretKey}`, dateStamp);
34
+ const kRegion = hmacSha256(kDate, region);
35
+ const kService = hmacSha256(kRegion, service);
36
+ return hmacSha256(kService, "aws4_request");
37
+ }
38
+ function buildSignedHeaders(operation, bodyStr, creds, host, region) {
39
+ const service = "ProductAdvertisingAPI";
40
+ const path = `/paapi5/${operation.toLowerCase()}`;
41
+ const now = new Date();
42
+ // Format: 20240115T123045Z
43
+ const amzDate = now.toISOString().replace(/[-:]/g, "").replace(/\.\d{3}/, "");
44
+ const dateStamp = amzDate.slice(0, 8);
45
+ const payloadHash = sha256Hex(bodyStr);
46
+ const target = `com.amazon.paapi5.v1.ProductAdvertisingAPIv1.${operation}`;
47
+ // Headers must be sorted for canonical form
48
+ const rawHeaders = {
49
+ "content-encoding": "amz-1.0",
50
+ "content-type": "application/json; charset=utf-8",
51
+ "host": host,
52
+ "x-amz-date": amzDate,
53
+ "x-amz-target": target,
54
+ };
55
+ const sortedKeys = Object.keys(rawHeaders).sort();
56
+ const canonicalHeaders = sortedKeys.map((k) => `${k}:${rawHeaders[k]}`).join("\n") + "\n";
57
+ const signedHeaders = sortedKeys.join(";");
58
+ const canonicalRequest = [
59
+ "POST",
60
+ path,
61
+ "", // no query string
62
+ canonicalHeaders,
63
+ signedHeaders,
64
+ payloadHash,
65
+ ].join("\n");
66
+ const credentialScope = `${dateStamp}/${region}/${service}/aws4_request`;
67
+ const stringToSign = [
68
+ "AWS4-HMAC-SHA256",
69
+ amzDate,
70
+ credentialScope,
71
+ sha256Hex(canonicalRequest),
72
+ ].join("\n");
73
+ const signingKey = getSigningKey(creds.secretKey, dateStamp, region, service);
74
+ const signature = hmacSha256(signingKey, stringToSign).toString("hex");
75
+ const authorization = `AWS4-HMAC-SHA256 Credential=${creds.accessKey}/${credentialScope}, ` +
76
+ `SignedHeaders=${signedHeaders}, Signature=${signature}`;
77
+ return { ...rawHeaders, Authorization: authorization };
78
+ }
79
+ // ─── PA-API HTTP call ────────────────────────────────────────────────────────
80
+ async function paApiCall(operation, requestBody, creds) {
81
+ const code = creds.marketplace.toUpperCase();
82
+ const config = MARKETPLACES[code] ?? MARKETPLACES["US"];
83
+ const { host, region } = config;
84
+ const bodyStr = JSON.stringify(requestBody);
85
+ const headers = buildSignedHeaders(operation, bodyStr, creds, host, region);
86
+ const url = `https://${host}/paapi5/${operation.toLowerCase()}`;
87
+ const response = await fetch(url, { method: "POST", headers, body: bodyStr });
88
+ const data = await response.json();
89
+ if (!response.ok) {
90
+ const err = data;
91
+ const type = err.__type ?? `HTTP ${response.status}`;
92
+ const detail = err.message ?? JSON.stringify(data);
93
+ throw new Error(`PA-API error (${type}): ${detail}`);
94
+ }
95
+ return data;
96
+ }
97
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
98
+ // Standard resources for item lookups
99
+ const ITEM_RESOURCES = [
100
+ "ItemInfo.Title",
101
+ "ItemInfo.Features",
102
+ "ItemInfo.ProductInfo",
103
+ "ItemInfo.ByLineInfo",
104
+ "Offers.Listings.Price",
105
+ "Offers.Listings.Availability.Message",
106
+ "Images.Primary.Large",
107
+ "Images.Primary.Medium",
108
+ "CustomerReviews.StarRating",
109
+ "CustomerReviews.Count",
110
+ ];
111
+ function cleanItem(item) {
112
+ const out = {
113
+ asin: item.ASIN ?? null,
114
+ url: item.DetailPageURL ?? null,
115
+ title: null,
116
+ };
117
+ const info = item.ItemInfo;
118
+ if (info) {
119
+ const titleObj = info.Title;
120
+ out.title = titleObj?.DisplayValue ?? null;
121
+ const features = info.Features;
122
+ if (Array.isArray(features?.DisplayValues)) {
123
+ out.features = features.DisplayValues;
124
+ }
125
+ const byLine = info.ByLineInfo;
126
+ if (byLine) {
127
+ const brand = byLine.Brand;
128
+ if (brand?.DisplayValue)
129
+ out.brand = brand.DisplayValue;
130
+ const mfr = byLine.Manufacturer;
131
+ if (mfr?.DisplayValue)
132
+ out.manufacturer = mfr.DisplayValue;
133
+ }
134
+ const productInfo = info.ProductInfo;
135
+ if (productInfo?.ItemDimensions)
136
+ out.dimensions = productInfo.ItemDimensions;
137
+ }
138
+ const offers = item.Offers;
139
+ const listings = offers?.Listings;
140
+ if (listings && listings.length > 0) {
141
+ const listing = listings[0];
142
+ const price = listing.Price;
143
+ if (price) {
144
+ out.price = {
145
+ amount: price.Amount,
146
+ currency: price.Currency,
147
+ display: price.DisplayAmount,
148
+ };
149
+ }
150
+ const avail = listing.Availability;
151
+ if (avail?.Message)
152
+ out.availability = avail.Message;
153
+ }
154
+ const images = item.Images;
155
+ const primary = images?.Primary;
156
+ if (primary) {
157
+ const large = primary.Large;
158
+ const medium = primary.Medium;
159
+ out.image = (large?.URL ?? medium?.URL) ?? null;
160
+ }
161
+ const reviews = item.CustomerReviews;
162
+ if (reviews) {
163
+ out.ratings = {
164
+ stars: reviews.StarRating,
165
+ count: reviews.Count,
166
+ };
167
+ }
168
+ return out;
169
+ }
170
+ function extractCreds(args) {
171
+ const accessKey = String(args.access_key ?? "").trim();
172
+ const secretKey = String(args.secret_key ?? "").trim();
173
+ const partnerTag = String(args.partner_tag ?? "").trim();
174
+ const marketplace = String(args.marketplace ?? "US").trim().toUpperCase();
175
+ if (!accessKey || !secretKey || !partnerTag) {
176
+ return { error: "access_key, secret_key, and partner_tag are all required." };
177
+ }
178
+ return { accessKey, secretKey, partnerTag, marketplace };
179
+ }
180
+ function marketplaceBody(creds, extra) {
181
+ const code = creds.marketplace.toUpperCase();
182
+ const config = MARKETPLACES[code] ?? MARKETPLACES["US"];
183
+ return {
184
+ PartnerTag: creds.partnerTag,
185
+ PartnerType: "Associates",
186
+ Marketplace: config.marketplace,
187
+ ...extra,
188
+ };
189
+ }
190
+ // ─── Operations ──────────────────────────────────────────────────────────────
191
+ export async function amazonSearch(args) {
192
+ const creds = extractCreds(args);
193
+ if ("error" in creds)
194
+ return creds;
195
+ if (!args.keywords && !args.browse_node_id) {
196
+ return { error: "Either keywords or browse_node_id is required." };
197
+ }
198
+ const body = marketplaceBody(creds, { Resources: ITEM_RESOURCES });
199
+ if (args.keywords)
200
+ body.Keywords = String(args.keywords);
201
+ if (args.search_index)
202
+ body.SearchIndex = String(args.search_index);
203
+ if (args.browse_node_id)
204
+ body.BrowseNodeId = String(args.browse_node_id);
205
+ if (args.sort_by)
206
+ body.SortBy = String(args.sort_by);
207
+ if (args.min_price)
208
+ body.MinPrice = Number(args.min_price);
209
+ if (args.max_price)
210
+ body.MaxPrice = Number(args.max_price);
211
+ if (args.item_count)
212
+ body.ItemCount = Math.min(10, Math.max(1, Number(args.item_count)));
213
+ if (args.item_page)
214
+ body.ItemPage = Math.min(10, Math.max(1, Number(args.item_page)));
215
+ const data = await paApiCall("SearchItems", body, creds);
216
+ const searchResult = data.SearchResult;
217
+ if (!searchResult)
218
+ return { items: [], total_result_count: 0 };
219
+ const items = searchResult.Items ?? [];
220
+ return {
221
+ total_result_count: searchResult.TotalResultCount ?? items.length,
222
+ items: items.map(cleanItem),
223
+ };
224
+ }
225
+ export async function amazonProduct(args) {
226
+ const creds = extractCreds(args);
227
+ if ("error" in creds)
228
+ return creds;
229
+ const raw = args.asins ?? args.asin;
230
+ const asins = Array.isArray(raw) ? raw.map(String) : [String(raw ?? "")];
231
+ if (!asins[0])
232
+ return { error: "At least one ASIN is required (use asin or asins)." };
233
+ const body = marketplaceBody(creds, { ItemIds: asins, Resources: ITEM_RESOURCES });
234
+ const data = await paApiCall("GetItems", body, creds);
235
+ const itemsResult = data.ItemsResult;
236
+ const items = itemsResult?.Items ?? [];
237
+ const errors = data.Errors;
238
+ return {
239
+ items: items.map(cleanItem),
240
+ ...(errors && errors.length > 0 ? { errors: errors.map((e) => ({ asin: e.ItemId, message: e.Message })) } : {}),
241
+ };
242
+ }
243
+ export async function amazonBrowse(args) {
244
+ const creds = extractCreds(args);
245
+ if ("error" in creds)
246
+ return creds;
247
+ const raw = args.browse_node_ids ?? args.browse_node_id;
248
+ const nodeIds = Array.isArray(raw) ? raw.map(String) : [String(raw ?? "")];
249
+ if (!nodeIds[0])
250
+ return { error: "At least one browse_node_id is required." };
251
+ const body = marketplaceBody(creds, {
252
+ BrowseNodeIds: nodeIds,
253
+ Resources: ["BrowseNodes.Ancestor", "BrowseNodes.Children"],
254
+ });
255
+ const data = await paApiCall("GetBrowseNodes", body, creds);
256
+ const result = data.BrowseNodesResult;
257
+ const nodes = result?.BrowseNodes ?? [];
258
+ const cleanNode = (node) => {
259
+ const ancestor = node.Ancestor;
260
+ const children = node.Children;
261
+ return {
262
+ id: node.Id,
263
+ name: node.DisplayName,
264
+ context_free_name: node.ContextFreeName,
265
+ is_root: node.IsRoot ?? false,
266
+ ancestor: ancestor
267
+ ? { id: ancestor.Id, name: ancestor.DisplayName }
268
+ : null,
269
+ children: (children ?? []).map((c) => ({ id: c.Id, name: c.DisplayName })),
270
+ };
271
+ };
272
+ return { browse_nodes: nodes.map(cleanNode) };
273
+ }
274
+ export async function amazonVariations(args) {
275
+ const creds = extractCreds(args);
276
+ if ("error" in creds)
277
+ return creds;
278
+ const asin = String(args.asin ?? "").trim();
279
+ if (!asin)
280
+ return { error: "asin is required." };
281
+ const variationResources = [
282
+ ...ITEM_RESOURCES,
283
+ "VariationSummary.Price.HighestPrice",
284
+ "VariationSummary.Price.LowestPrice",
285
+ "VariationSummary.VariationDimension",
286
+ ];
287
+ const body = marketplaceBody(creds, { ASIN: asin, Resources: variationResources });
288
+ if (args.variation_count)
289
+ body.VariationCount = Math.min(10, Math.max(1, Number(args.variation_count)));
290
+ if (args.variation_page)
291
+ body.VariationPage = Math.min(10, Math.max(1, Number(args.variation_page)));
292
+ const data = await paApiCall("GetVariations", body, creds);
293
+ const result = data.VariationsResult;
294
+ if (!result)
295
+ return { asin, variations: [], variation_dimensions: [] };
296
+ const items = result.Items ?? [];
297
+ const summary = result.VariationSummary;
298
+ return {
299
+ asin,
300
+ variation_dimensions: summary?.VariationDimension ?? [],
301
+ price_range: summary
302
+ ? { lowest: summary.LowestPrice, highest: summary.HighestPrice }
303
+ : null,
304
+ variations: items.map(cleanItem),
305
+ };
306
+ }
307
+ //# sourceMappingURL=amazon-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amazon-tool.js","sourceRoot":"","sources":["../src/amazon-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function blueskyAction(action: string, args: Record<string, unknown>): Promise<unknown>;
2
+ //# sourceMappingURL=bluesky-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bluesky-tool.d.ts","sourceRoot":"","sources":["../src/bluesky-tool.ts"],"names":[],"mappings":"AAyZA,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC,CAuElB"}