@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.
- package/README.md +139 -0
- package/dist/amazon-tool.d.ts +5 -0
- package/dist/amazon-tool.d.ts.map +1 -0
- package/dist/amazon-tool.js +307 -0
- package/dist/amazon-tool.js.map +1 -0
- package/dist/bluesky-tool.d.ts +2 -0
- package/dist/bluesky-tool.d.ts.map +1 -0
- package/dist/bluesky-tool.js +368 -0
- package/dist/bluesky-tool.js.map +1 -0
- package/dist/catalog.d.ts +28 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +1865 -0
- package/dist/catalog.js.map +1 -0
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +73 -0
- package/dist/client.js.map +1 -0
- package/dist/converter-tools.d.ts +50 -0
- package/dist/converter-tools.d.ts.map +1 -0
- package/dist/converter-tools.js +137 -0
- package/dist/converter-tools.js.map +1 -0
- package/dist/csuite-tool.d.ts +35 -0
- package/dist/csuite-tool.d.ts.map +1 -0
- package/dist/csuite-tool.js +791 -0
- package/dist/csuite-tool.js.map +1 -0
- package/dist/discord-tool.d.ts +8 -0
- package/dist/discord-tool.d.ts.map +1 -0
- package/dist/discord-tool.js +195 -0
- package/dist/discord-tool.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/local-tools.d.ts +72 -0
- package/dist/local-tools.d.ts.map +1 -0
- package/dist/local-tools.js +563 -0
- package/dist/local-tools.js.map +1 -0
- package/dist/mastodon-tool.d.ts +2 -0
- package/dist/mastodon-tool.d.ts.map +1 -0
- package/dist/mastodon-tool.js +372 -0
- package/dist/mastodon-tool.js.map +1 -0
- package/dist/reddit-tool.d.ts +59 -0
- package/dist/reddit-tool.d.ts.map +1 -0
- package/dist/reddit-tool.js +348 -0
- package/dist/reddit-tool.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +2337 -0
- package/dist/server.js.map +1 -0
- package/dist/shopify-tool.d.ts +8 -0
- package/dist/shopify-tool.d.ts.map +1 -0
- package/dist/shopify-tool.js +305 -0
- package/dist/shopify-tool.js.map +1 -0
- package/dist/slack-tool.d.ts +2 -0
- package/dist/slack-tool.d.ts.map +1 -0
- package/dist/slack-tool.js +316 -0
- package/dist/slack-tool.js.map +1 -0
- package/dist/telegram-tool.d.ts +7 -0
- package/dist/telegram-tool.d.ts.map +1 -0
- package/dist/telegram-tool.js +297 -0
- package/dist/telegram-tool.js.map +1 -0
- package/dist/vault-tool.d.ts +2 -0
- package/dist/vault-tool.d.ts.map +1 -0
- package/dist/vault-tool.js +395 -0
- package/dist/vault-tool.js.map +1 -0
- package/dist/xero-tool.d.ts +9 -0
- package/dist/xero-tool.d.ts.map +1 -0
- package/dist/xero-tool.js +330 -0
- package/dist/xero-tool.js.map +1 -0
- 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 @@
|
|
|
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"}
|