@unclick/mcp-server 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +139 -153
- package/dist/airtable-tool.d.ts +2 -0
- package/dist/airtable-tool.d.ts.map +1 -0
- package/dist/airtable-tool.js +154 -0
- package/dist/airtable-tool.js.map +1 -0
- package/dist/algolia-tool.d.ts +5 -0
- package/dist/algolia-tool.d.ts.map +1 -0
- package/dist/algolia-tool.js +121 -0
- package/dist/algolia-tool.js.map +1 -0
- package/dist/anthropic-tool.d.ts +3 -0
- package/dist/anthropic-tool.d.ts.map +1 -0
- package/dist/anthropic-tool.js +123 -0
- package/dist/anthropic-tool.js.map +1 -0
- package/dist/asana-tool.d.ts +8 -0
- package/dist/asana-tool.d.ts.map +1 -0
- package/dist/asana-tool.js +218 -0
- package/dist/asana-tool.js.map +1 -0
- package/dist/assemblyai-tool.d.ts +7 -0
- package/dist/assemblyai-tool.d.ts.map +1 -0
- package/dist/assemblyai-tool.js +127 -0
- package/dist/assemblyai-tool.js.map +1 -0
- package/dist/calendly-tool.d.ts +6 -0
- package/dist/calendly-tool.d.ts.map +1 -0
- package/dist/calendly-tool.js +182 -0
- package/dist/calendly-tool.js.map +1 -0
- package/dist/circleci-tool.d.ts +7 -0
- package/dist/circleci-tool.d.ts.map +1 -0
- package/dist/circleci-tool.js +133 -0
- package/dist/circleci-tool.js.map +1 -0
- package/dist/clickup-tool.d.ts +2 -0
- package/dist/clickup-tool.d.ts.map +1 -0
- package/dist/clickup-tool.js +153 -0
- package/dist/clickup-tool.js.map +1 -0
- package/dist/cohere-tool.d.ts +7 -0
- package/dist/cohere-tool.d.ts.map +1 -0
- package/dist/cohere-tool.js +225 -0
- package/dist/cohere-tool.js.map +1 -0
- package/dist/connectors/figma.d.ts +3 -0
- package/dist/connectors/figma.d.ts.map +1 -0
- package/dist/connectors/figma.js +18 -0
- package/dist/connectors/figma.js.map +1 -0
- package/dist/connectors/index.d.ts +3 -1
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +5 -1
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/line.d.ts +3 -0
- package/dist/connectors/line.d.ts.map +1 -0
- package/dist/connectors/line.js +18 -0
- package/dist/connectors/line.js.map +1 -0
- package/dist/convertkit-tool.d.ts +7 -0
- package/dist/convertkit-tool.d.ts.map +1 -0
- package/dist/convertkit-tool.js +213 -0
- package/dist/convertkit-tool.js.map +1 -0
- package/dist/datadog-tool.d.ts +7 -0
- package/dist/datadog-tool.d.ts.map +1 -0
- package/dist/datadog-tool.js +121 -0
- package/dist/datadog-tool.js.map +1 -0
- package/dist/deepl-tool.d.ts +5 -0
- package/dist/deepl-tool.d.ts.map +1 -0
- package/dist/deepl-tool.js +137 -0
- package/dist/deepl-tool.js.map +1 -0
- package/dist/ebay-tool.d.ts +5 -0
- package/dist/ebay-tool.d.ts.map +1 -0
- package/dist/ebay-tool.js +179 -0
- package/dist/ebay-tool.js.map +1 -0
- package/dist/elevenlabs-tool.d.ts +6 -0
- package/dist/elevenlabs-tool.d.ts.map +1 -0
- package/dist/elevenlabs-tool.js +166 -0
- package/dist/elevenlabs-tool.js.map +1 -0
- package/dist/etsy-tool.d.ts +6 -0
- package/dist/etsy-tool.d.ts.map +1 -0
- package/dist/etsy-tool.js +125 -0
- package/dist/etsy-tool.js.map +1 -0
- package/dist/exchangerate-tool.d.ts +5 -0
- package/dist/exchangerate-tool.d.ts.map +1 -0
- package/dist/exchangerate-tool.js +139 -0
- package/dist/exchangerate-tool.js.map +1 -0
- package/dist/figma-tool.d.ts +8 -0
- package/dist/figma-tool.d.ts.map +1 -0
- package/dist/figma-tool.js +231 -0
- package/dist/figma-tool.js.map +1 -0
- package/dist/flyio-tool.d.ts +6 -0
- package/dist/flyio-tool.d.ts.map +1 -0
- package/dist/flyio-tool.js +158 -0
- package/dist/flyio-tool.js.map +1 -0
- package/dist/gdelt-tool.d.ts +5 -0
- package/dist/gdelt-tool.d.ts.map +1 -0
- package/dist/gdelt-tool.js +177 -0
- package/dist/gdelt-tool.js.map +1 -0
- package/dist/github-tool.d.ts +2 -0
- package/dist/github-tool.d.ts.map +1 -0
- package/dist/github-tool.js +165 -0
- package/dist/github-tool.js.map +1 -0
- package/dist/gitlab-tool.d.ts +2 -0
- package/dist/gitlab-tool.d.ts.map +1 -0
- package/dist/gitlab-tool.js +127 -0
- package/dist/gitlab-tool.js.map +1 -0
- package/dist/groq-tool.d.ts +3 -0
- package/dist/groq-tool.d.ts.map +1 -0
- package/dist/groq-tool.js +109 -0
- package/dist/groq-tool.js.map +1 -0
- package/dist/gumroad-tool.d.ts +6 -0
- package/dist/gumroad-tool.d.ts.map +1 -0
- package/dist/gumroad-tool.js +90 -0
- package/dist/gumroad-tool.js.map +1 -0
- package/dist/heygen-tool.d.ts +5 -0
- package/dist/heygen-tool.d.ts.map +1 -0
- package/dist/heygen-tool.js +134 -0
- package/dist/heygen-tool.js.map +1 -0
- package/dist/higgsfield-tool.d.ts +5 -0
- package/dist/higgsfield-tool.d.ts.map +1 -0
- package/dist/higgsfield-tool.js +120 -0
- package/dist/higgsfield-tool.js.map +1 -0
- package/dist/igdb-tool.d.ts +6 -0
- package/dist/igdb-tool.d.ts.map +1 -0
- package/dist/igdb-tool.js +140 -0
- package/dist/igdb-tool.js.map +1 -0
- package/dist/keychain-crypto.d.ts +24 -0
- package/dist/keychain-crypto.d.ts.map +1 -0
- package/dist/keychain-crypto.js +60 -0
- package/dist/keychain-crypto.js.map +1 -0
- package/dist/keychain-secure-input.d.ts +17 -0
- package/dist/keychain-secure-input.d.ts.map +1 -0
- package/dist/keychain-secure-input.js +229 -0
- package/dist/keychain-secure-input.js.map +1 -0
- package/dist/keychain-tool.d.ts +3 -0
- package/dist/keychain-tool.d.ts.map +1 -0
- package/dist/keychain-tool.js +516 -0
- package/dist/keychain-tool.js.map +1 -0
- package/dist/kling-tool.d.ts +3 -0
- package/dist/kling-tool.d.ts.map +1 -0
- package/dist/kling-tool.js +102 -0
- package/dist/kling-tool.js.map +1 -0
- package/dist/lemonsqueezy-tool.d.ts +7 -0
- package/dist/lemonsqueezy-tool.d.ts.map +1 -0
- package/dist/lemonsqueezy-tool.js +220 -0
- package/dist/lemonsqueezy-tool.js.map +1 -0
- package/dist/line-tool.d.ts +7 -0
- package/dist/line-tool.d.ts.map +1 -0
- package/dist/line-tool.js +188 -0
- package/dist/line-tool.js.map +1 -0
- package/dist/linear-tool.d.ts +2 -0
- package/dist/linear-tool.d.ts.map +1 -0
- package/dist/linear-tool.js +186 -0
- package/dist/linear-tool.js.map +1 -0
- package/dist/local-catalog-handlers.d.ts +3 -0
- package/dist/local-catalog-handlers.d.ts.map +1 -0
- package/dist/local-catalog-handlers.js +1254 -0
- package/dist/local-catalog-handlers.js.map +1 -0
- package/dist/mailchimp-tool.d.ts +8 -0
- package/dist/mailchimp-tool.d.ts.map +1 -0
- package/dist/mailchimp-tool.js +138 -0
- package/dist/mailchimp-tool.js.map +1 -0
- package/dist/mapbox-tool.d.ts +6 -0
- package/dist/mapbox-tool.d.ts.map +1 -0
- package/dist/mapbox-tool.js +106 -0
- package/dist/mapbox-tool.js.map +1 -0
- package/dist/mistral-tool.d.ts +4 -0
- package/dist/mistral-tool.d.ts.map +1 -0
- package/dist/mistral-tool.js +145 -0
- package/dist/mistral-tool.js.map +1 -0
- package/dist/mixpanel-tool.d.ts +6 -0
- package/dist/mixpanel-tool.d.ts.map +1 -0
- package/dist/mixpanel-tool.js +162 -0
- package/dist/mixpanel-tool.js.map +1 -0
- package/dist/monday-tool.d.ts +7 -0
- package/dist/monday-tool.d.ts.map +1 -0
- package/dist/monday-tool.js +206 -0
- package/dist/monday-tool.js.map +1 -0
- package/dist/neon-tool.d.ts +7 -0
- package/dist/neon-tool.d.ts.map +1 -0
- package/dist/neon-tool.js +156 -0
- package/dist/neon-tool.js.map +1 -0
- package/dist/openai-tool.d.ts +6 -0
- package/dist/openai-tool.d.ts.map +1 -0
- package/dist/openai-tool.js +227 -0
- package/dist/openai-tool.js.map +1 -0
- package/dist/pagerduty-tool.d.ts +8 -0
- package/dist/pagerduty-tool.d.ts.map +1 -0
- package/dist/pagerduty-tool.js +185 -0
- package/dist/pagerduty-tool.js.map +1 -0
- package/dist/paypal-tool.d.ts +3 -0
- package/dist/paypal-tool.d.ts.map +1 -0
- package/dist/paypal-tool.js +157 -0
- package/dist/paypal-tool.js.map +1 -0
- package/dist/perplexity-tool.d.ts +2 -0
- package/dist/perplexity-tool.d.ts.map +1 -0
- package/dist/perplexity-tool.js +93 -0
- package/dist/perplexity-tool.js.map +1 -0
- package/dist/pika-tool.d.ts +4 -0
- package/dist/pika-tool.d.ts.map +1 -0
- package/dist/pika-tool.js +102 -0
- package/dist/pika-tool.js.map +1 -0
- package/dist/pinecone-tool.d.ts +6 -0
- package/dist/pinecone-tool.d.ts.map +1 -0
- package/dist/pinecone-tool.js +148 -0
- package/dist/pinecone-tool.js.map +1 -0
- package/dist/pinterest-tool.d.ts +7 -0
- package/dist/pinterest-tool.d.ts.map +1 -0
- package/dist/pinterest-tool.js +219 -0
- package/dist/pinterest-tool.js.map +1 -0
- package/dist/plaid-tool.d.ts +6 -0
- package/dist/plaid-tool.d.ts.map +1 -0
- package/dist/plaid-tool.js +149 -0
- package/dist/plaid-tool.js.map +1 -0
- package/dist/postman-tool.d.ts +2 -0
- package/dist/postman-tool.d.ts.map +1 -0
- package/dist/postman-tool.js +92 -0
- package/dist/postman-tool.js.map +1 -0
- package/dist/postmark-tool.d.ts +7 -0
- package/dist/postmark-tool.d.ts.map +1 -0
- package/dist/postmark-tool.js +148 -0
- package/dist/postmark-tool.js.map +1 -0
- package/dist/pushover-tool.d.ts +6 -0
- package/dist/pushover-tool.d.ts.map +1 -0
- package/dist/pushover-tool.js +146 -0
- package/dist/pushover-tool.js.map +1 -0
- package/dist/qc-tool.d.ts +4 -0
- package/dist/qc-tool.d.ts.map +1 -0
- package/dist/qc-tool.js +415 -0
- package/dist/qc-tool.js.map +1 -0
- package/dist/quickbooks-tool.d.ts +5 -0
- package/dist/quickbooks-tool.d.ts.map +1 -0
- package/dist/quickbooks-tool.js +160 -0
- package/dist/quickbooks-tool.js.map +1 -0
- package/dist/render-tool.d.ts +7 -0
- package/dist/render-tool.d.ts.map +1 -0
- package/dist/render-tool.js +158 -0
- package/dist/render-tool.js.map +1 -0
- package/dist/replicate-tool.d.ts +7 -0
- package/dist/replicate-tool.d.ts.map +1 -0
- package/dist/replicate-tool.js +172 -0
- package/dist/replicate-tool.js.map +1 -0
- package/dist/runway-tool.d.ts +4 -0
- package/dist/runway-tool.d.ts.map +1 -0
- package/dist/runway-tool.js +110 -0
- package/dist/runway-tool.js.map +1 -0
- package/dist/segment-tool.d.ts +6 -0
- package/dist/segment-tool.d.ts.map +1 -0
- package/dist/segment-tool.js +129 -0
- package/dist/segment-tool.js.map +1 -0
- package/dist/sendgrid-tool.d.ts +7 -0
- package/dist/sendgrid-tool.d.ts.map +1 -0
- package/dist/sendgrid-tool.js +124 -0
- package/dist/sendgrid-tool.js.map +1 -0
- package/dist/sentry-tool.d.ts +2 -0
- package/dist/sentry-tool.d.ts.map +1 -0
- package/dist/sentry-tool.js +123 -0
- package/dist/sentry-tool.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +10 -0
- package/dist/server.js.map +1 -1
- package/dist/speedrun-tool.d.ts +6 -0
- package/dist/speedrun-tool.d.ts.map +1 -0
- package/dist/speedrun-tool.js +192 -0
- package/dist/speedrun-tool.js.map +1 -0
- package/dist/spotify-tool.d.ts +8 -0
- package/dist/spotify-tool.d.ts.map +1 -0
- package/dist/spotify-tool.js +274 -0
- package/dist/spotify-tool.js.map +1 -0
- package/dist/square-tool.d.ts +5 -0
- package/dist/square-tool.d.ts.map +1 -0
- package/dist/square-tool.js +133 -0
- package/dist/square-tool.js.map +1 -0
- package/dist/stability-tool.d.ts +5 -0
- package/dist/stability-tool.d.ts.map +1 -0
- package/dist/stability-tool.js +190 -0
- package/dist/stability-tool.js.map +1 -0
- package/dist/steam-tool.d.ts +6 -0
- package/dist/steam-tool.d.ts.map +1 -0
- package/dist/steam-tool.js +222 -0
- package/dist/steam-tool.js.map +1 -0
- package/dist/stripe-tool.d.ts +7 -0
- package/dist/stripe-tool.d.ts.map +1 -0
- package/dist/stripe-tool.js +181 -0
- package/dist/stripe-tool.js.map +1 -0
- package/dist/tiktok-tool.d.ts +4 -0
- package/dist/tiktok-tool.d.ts.map +1 -0
- package/dist/tiktok-tool.js +129 -0
- package/dist/tiktok-tool.js.map +1 -0
- package/dist/togetherai-tool.d.ts +5 -0
- package/dist/togetherai-tool.d.ts.map +1 -0
- package/dist/togetherai-tool.js +129 -0
- package/dist/togetherai-tool.js.map +1 -0
- package/dist/toilets-tool.js +2 -2
- package/dist/tool-wiring.d.ts +7982 -18
- package/dist/tool-wiring.d.ts.map +1 -1
- package/dist/tool-wiring.js +5084 -18
- package/dist/tool-wiring.js.map +1 -1
- package/dist/trello-tool.d.ts +2 -0
- package/dist/trello-tool.d.ts.map +1 -0
- package/dist/trello-tool.js +166 -0
- package/dist/trello-tool.js.map +1 -0
- package/dist/turso-tool.d.ts +6 -0
- package/dist/turso-tool.d.ts.map +1 -0
- package/dist/turso-tool.js +158 -0
- package/dist/turso-tool.js.map +1 -0
- package/dist/twilio-tool.d.ts +8 -0
- package/dist/twilio-tool.d.ts.map +1 -0
- package/dist/twilio-tool.js +243 -0
- package/dist/twilio-tool.js.map +1 -0
- package/dist/upstash-tool.d.ts +8 -0
- package/dist/upstash-tool.d.ts.map +1 -0
- package/dist/upstash-tool.js +191 -0
- package/dist/upstash-tool.js.map +1 -0
- package/dist/whatsapp-tool.d.ts +6 -0
- package/dist/whatsapp-tool.d.ts.map +1 -0
- package/dist/whatsapp-tool.js +200 -0
- package/dist/whatsapp-tool.js.map +1 -0
- package/dist/woocommerce-tool.d.ts +4 -0
- package/dist/woocommerce-tool.d.ts.map +1 -0
- package/dist/woocommerce-tool.js +140 -0
- package/dist/woocommerce-tool.js.map +1 -0
- package/dist/youtube-tool.d.ts +7 -0
- package/dist/youtube-tool.d.ts.map +1 -0
- package/dist/youtube-tool.js +196 -0
- package/dist/youtube-tool.js.map +1 -0
- package/package.json +1 -1
- package/server.json +37 -37
- package/LICENSE +0 -216
- package/dist/cloudflare-worker.d.ts +0 -12
- package/dist/cloudflare-worker.d.ts.map +0 -1
- package/dist/cloudflare-worker.js +0 -50
- package/dist/cloudflare-worker.js.map +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function upstashRedisGet(args: Record<string, unknown>): Promise<unknown>;
|
|
2
|
+
export declare function upstashRedisSet(args: Record<string, unknown>): Promise<unknown>;
|
|
3
|
+
export declare function upstashRedisDel(args: Record<string, unknown>): Promise<unknown>;
|
|
4
|
+
export declare function upstashRedisListKeys(args: Record<string, unknown>): Promise<unknown>;
|
|
5
|
+
export declare function upstashRedisIncr(args: Record<string, unknown>): Promise<unknown>;
|
|
6
|
+
export declare function upstashKafkaProduce(args: Record<string, unknown>): Promise<unknown>;
|
|
7
|
+
export declare function upstashKafkaListTopics(args: Record<string, unknown>): Promise<unknown>;
|
|
8
|
+
//# sourceMappingURL=upstash-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstash-tool.d.ts","sourceRoot":"","sources":["../src/upstash-tool.ts"],"names":[],"mappings":"AAkEA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAarF;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBrF;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAarF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAY1F;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAatF;AAID,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBzF;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAW5F"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
// Upstash Redis/Kafka API integration for the UnClick MCP server.
|
|
2
|
+
// Uses the Upstash REST API via fetch - no external dependencies.
|
|
3
|
+
// Auth: Basic auth (email:api_key base64 encoded).
|
|
4
|
+
// Users must supply credentials from console.upstash.com.
|
|
5
|
+
const UPSTASH_API_BASE = "https://api.upstash.com/v2";
|
|
6
|
+
// ── Auth helper ───────────────────────────────────────────────────────────────
|
|
7
|
+
function buildBasicAuth(email, apiKey) {
|
|
8
|
+
const credentials = `${email}:${apiKey}`;
|
|
9
|
+
// btoa is available in Node 16+ and all modern runtimes
|
|
10
|
+
return `Basic ${Buffer.from(credentials).toString("base64")}`;
|
|
11
|
+
}
|
|
12
|
+
function requireAuth(args) {
|
|
13
|
+
const apiKey = String(args.api_key ?? process.env.UPSTASH_API_KEY ?? "").trim();
|
|
14
|
+
if (!apiKey)
|
|
15
|
+
throw new Error("api_key is required. Get one at console.upstash.com.");
|
|
16
|
+
const email = String(args.email ?? process.env.UPSTASH_EMAIL ?? "").trim();
|
|
17
|
+
if (!email)
|
|
18
|
+
throw new Error("email is required (your Upstash account email).");
|
|
19
|
+
return { email, apiKey };
|
|
20
|
+
}
|
|
21
|
+
// ── Fetch helper ──────────────────────────────────────────────────────────────
|
|
22
|
+
async function upstashFetch(auth, method, path, body) {
|
|
23
|
+
const headers = {
|
|
24
|
+
Authorization: auth,
|
|
25
|
+
Accept: "application/json",
|
|
26
|
+
};
|
|
27
|
+
if (body !== undefined)
|
|
28
|
+
headers["Content-Type"] = "application/json";
|
|
29
|
+
let response;
|
|
30
|
+
try {
|
|
31
|
+
response = await fetch(`${UPSTASH_API_BASE}${path}`, {
|
|
32
|
+
method,
|
|
33
|
+
headers,
|
|
34
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
return { error: `Network error reaching Upstash API: ${err instanceof Error ? err.message : String(err)}` };
|
|
39
|
+
}
|
|
40
|
+
const text = await response.text();
|
|
41
|
+
let data;
|
|
42
|
+
try {
|
|
43
|
+
data = JSON.parse(text);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
data = { raw: text };
|
|
47
|
+
}
|
|
48
|
+
if (response.status === 401)
|
|
49
|
+
return { error: "Upstash credentials invalid. Check your email and api_key.", status: 401 };
|
|
50
|
+
if (response.status === 403)
|
|
51
|
+
return { error: "Upstash API: insufficient permissions.", status: 403 };
|
|
52
|
+
if (response.status === 404)
|
|
53
|
+
return { error: "Resource not found. Check the db_id, cluster_id, or topic.", status: 404 };
|
|
54
|
+
if (!response.ok) {
|
|
55
|
+
const detail = data?.message ?? data?.error ?? text;
|
|
56
|
+
return { error: `Upstash API error ${response.status}: ${detail}`, status: response.status };
|
|
57
|
+
}
|
|
58
|
+
return data;
|
|
59
|
+
}
|
|
60
|
+
// ── Redis operations ──────────────────────────────────────────────────────────
|
|
61
|
+
export async function upstashRedisGet(args) {
|
|
62
|
+
try {
|
|
63
|
+
const { email, apiKey } = requireAuth(args);
|
|
64
|
+
const dbId = String(args.db_id ?? "").trim();
|
|
65
|
+
if (!dbId)
|
|
66
|
+
return { error: "db_id is required." };
|
|
67
|
+
const key = String(args.key ?? "").trim();
|
|
68
|
+
if (!key)
|
|
69
|
+
return { error: "key is required." };
|
|
70
|
+
const auth = buildBasicAuth(email, apiKey);
|
|
71
|
+
return upstashFetch(auth, "GET", `/redis/databases/${encodeURIComponent(dbId)}/get/${encodeURIComponent(key)}`);
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export async function upstashRedisSet(args) {
|
|
78
|
+
try {
|
|
79
|
+
const { email, apiKey } = requireAuth(args);
|
|
80
|
+
const dbId = String(args.db_id ?? "").trim();
|
|
81
|
+
if (!dbId)
|
|
82
|
+
return { error: "db_id is required." };
|
|
83
|
+
const key = String(args.key ?? "").trim();
|
|
84
|
+
if (!key)
|
|
85
|
+
return { error: "key is required." };
|
|
86
|
+
if (args.value === undefined || args.value === null)
|
|
87
|
+
return { error: "value is required." };
|
|
88
|
+
const value = String(args.value);
|
|
89
|
+
const auth = buildBasicAuth(email, apiKey);
|
|
90
|
+
const body = { key, value };
|
|
91
|
+
if (args.ex !== undefined)
|
|
92
|
+
body.ex = Number(args.ex);
|
|
93
|
+
return upstashFetch(auth, "POST", `/redis/databases/${encodeURIComponent(dbId)}/set`, body);
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export async function upstashRedisDel(args) {
|
|
100
|
+
try {
|
|
101
|
+
const { email, apiKey } = requireAuth(args);
|
|
102
|
+
const dbId = String(args.db_id ?? "").trim();
|
|
103
|
+
if (!dbId)
|
|
104
|
+
return { error: "db_id is required." };
|
|
105
|
+
const key = String(args.key ?? "").trim();
|
|
106
|
+
if (!key)
|
|
107
|
+
return { error: "key is required." };
|
|
108
|
+
const auth = buildBasicAuth(email, apiKey);
|
|
109
|
+
return upstashFetch(auth, "POST", `/redis/databases/${encodeURIComponent(dbId)}/del`, { key });
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export async function upstashRedisListKeys(args) {
|
|
116
|
+
try {
|
|
117
|
+
const { email, apiKey } = requireAuth(args);
|
|
118
|
+
const dbId = String(args.db_id ?? "").trim();
|
|
119
|
+
if (!dbId)
|
|
120
|
+
return { error: "db_id is required." };
|
|
121
|
+
const pattern = String(args.pattern ?? "*");
|
|
122
|
+
const auth = buildBasicAuth(email, apiKey);
|
|
123
|
+
return upstashFetch(auth, "POST", `/redis/databases/${encodeURIComponent(dbId)}/keys`, { pattern });
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
export async function upstashRedisIncr(args) {
|
|
130
|
+
try {
|
|
131
|
+
const { email, apiKey } = requireAuth(args);
|
|
132
|
+
const dbId = String(args.db_id ?? "").trim();
|
|
133
|
+
if (!dbId)
|
|
134
|
+
return { error: "db_id is required." };
|
|
135
|
+
const key = String(args.key ?? "").trim();
|
|
136
|
+
if (!key)
|
|
137
|
+
return { error: "key is required." };
|
|
138
|
+
const auth = buildBasicAuth(email, apiKey);
|
|
139
|
+
return upstashFetch(auth, "POST", `/redis/databases/${encodeURIComponent(dbId)}/incr`, { key });
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// ── Kafka operations ──────────────────────────────────────────────────────────
|
|
146
|
+
export async function upstashKafkaProduce(args) {
|
|
147
|
+
try {
|
|
148
|
+
const { email, apiKey } = requireAuth(args);
|
|
149
|
+
const clusterId = String(args.cluster_id ?? "").trim();
|
|
150
|
+
if (!clusterId)
|
|
151
|
+
return { error: "cluster_id is required." };
|
|
152
|
+
const topic = String(args.topic ?? "").trim();
|
|
153
|
+
if (!topic)
|
|
154
|
+
return { error: "topic is required." };
|
|
155
|
+
let messages;
|
|
156
|
+
if (Array.isArray(args.messages)) {
|
|
157
|
+
messages = args.messages;
|
|
158
|
+
}
|
|
159
|
+
else if (typeof args.messages === "string") {
|
|
160
|
+
try {
|
|
161
|
+
messages = JSON.parse(args.messages);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return { error: "messages must be a JSON array or a valid JSON string representing an array." };
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
return { error: "messages is required (array of message objects or a JSON string)." };
|
|
169
|
+
}
|
|
170
|
+
const auth = buildBasicAuth(email, apiKey);
|
|
171
|
+
const path = `/kafka/clusters/${encodeURIComponent(clusterId)}/topics/${encodeURIComponent(topic)}/produce`;
|
|
172
|
+
return upstashFetch(auth, "POST", path, { messages });
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
export async function upstashKafkaListTopics(args) {
|
|
179
|
+
try {
|
|
180
|
+
const { email, apiKey } = requireAuth(args);
|
|
181
|
+
const clusterId = String(args.cluster_id ?? "").trim();
|
|
182
|
+
if (!clusterId)
|
|
183
|
+
return { error: "cluster_id is required." };
|
|
184
|
+
const auth = buildBasicAuth(email, apiKey);
|
|
185
|
+
return upstashFetch(auth, "GET", `/kafka/clusters/${encodeURIComponent(clusterId)}/topics`);
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=upstash-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstash-tool.js","sourceRoot":"","sources":["../src/upstash-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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
// WhatsApp Business Cloud API integration for the UnClick MCP server.
|
|
2
|
+
// Uses the WhatsApp Cloud API via fetch - no external dependencies.
|
|
3
|
+
// Users must supply a Bearer token and phone number ID from Meta for Developers.
|
|
4
|
+
const WA_API_BASE = "https://graph.facebook.com/v19.0";
|
|
5
|
+
// ─── Auth validation ──────────────────────────────────────────────────────────
|
|
6
|
+
function requireAuth(args) {
|
|
7
|
+
const token = String(args.bearer_token ?? "").trim();
|
|
8
|
+
const phoneNumberId = String(args.phone_number_id ?? "").trim();
|
|
9
|
+
if (!token)
|
|
10
|
+
throw new Error("bearer_token is required. Get it from Meta for Developers.");
|
|
11
|
+
if (!phoneNumberId)
|
|
12
|
+
throw new Error("phone_number_id is required. Find it in your Meta Business account.");
|
|
13
|
+
return { token, phoneNumberId };
|
|
14
|
+
}
|
|
15
|
+
// ─── API helpers ──────────────────────────────────────────────────────────────
|
|
16
|
+
async function waPost(token, path, body) {
|
|
17
|
+
const res = await fetch(`${WA_API_BASE}${path}`, {
|
|
18
|
+
method: "POST",
|
|
19
|
+
headers: {
|
|
20
|
+
Authorization: `Bearer ${token}`,
|
|
21
|
+
"Content-Type": "application/json",
|
|
22
|
+
},
|
|
23
|
+
body: JSON.stringify(body),
|
|
24
|
+
});
|
|
25
|
+
const data = await res.json();
|
|
26
|
+
if (!res.ok) {
|
|
27
|
+
const err = data.error;
|
|
28
|
+
const msg = err?.message ?? `HTTP ${res.status}`;
|
|
29
|
+
const code = err?.code ? ` (code ${err.code})` : "";
|
|
30
|
+
throw new Error(`WhatsApp API error${code}: ${msg}`);
|
|
31
|
+
}
|
|
32
|
+
return data;
|
|
33
|
+
}
|
|
34
|
+
async function waGet(token, path) {
|
|
35
|
+
const res = await fetch(`${WA_API_BASE}${path}`, {
|
|
36
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
37
|
+
});
|
|
38
|
+
const data = await res.json();
|
|
39
|
+
if (!res.ok) {
|
|
40
|
+
const err = data.error;
|
|
41
|
+
const msg = err?.message ?? `HTTP ${res.status}`;
|
|
42
|
+
throw new Error(`WhatsApp API error: ${msg}`);
|
|
43
|
+
}
|
|
44
|
+
return data;
|
|
45
|
+
}
|
|
46
|
+
// ─── Operations ───────────────────────────────────────────────────────────────
|
|
47
|
+
export async function whatsappSendText(args) {
|
|
48
|
+
const { token, phoneNumberId } = requireAuth(args);
|
|
49
|
+
const to = String(args.to ?? "").trim();
|
|
50
|
+
const body = String(args.body ?? "").trim();
|
|
51
|
+
if (!to)
|
|
52
|
+
throw new Error("to is required (recipient phone number in E.164 format).");
|
|
53
|
+
if (!body)
|
|
54
|
+
throw new Error("body is required (message text).");
|
|
55
|
+
const payload = {
|
|
56
|
+
messaging_product: "whatsapp",
|
|
57
|
+
recipient_type: "individual",
|
|
58
|
+
to,
|
|
59
|
+
type: "text",
|
|
60
|
+
text: { body, preview_url: args.preview_url === true },
|
|
61
|
+
};
|
|
62
|
+
const result = await waPost(token, `/${phoneNumberId}/messages`, payload);
|
|
63
|
+
return {
|
|
64
|
+
success: true,
|
|
65
|
+
message_id: result.messages[0]?.id ?? null,
|
|
66
|
+
wa_id: result.contacts[0]?.wa_id ?? to,
|
|
67
|
+
to,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export async function whatsappSendTemplate(args) {
|
|
71
|
+
const { token, phoneNumberId } = requireAuth(args);
|
|
72
|
+
const to = String(args.to ?? "").trim();
|
|
73
|
+
const templateName = String(args.template_name ?? "").trim();
|
|
74
|
+
const language = String(args.language ?? "en_US").trim();
|
|
75
|
+
if (!to)
|
|
76
|
+
throw new Error("to is required.");
|
|
77
|
+
if (!templateName)
|
|
78
|
+
throw new Error("template_name is required.");
|
|
79
|
+
let components = [];
|
|
80
|
+
if (args.components) {
|
|
81
|
+
if (typeof args.components === "string") {
|
|
82
|
+
try {
|
|
83
|
+
components = JSON.parse(args.components);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
throw new Error("components must be valid JSON (array of template component objects).");
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else if (Array.isArray(args.components)) {
|
|
90
|
+
components = args.components;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const payload = {
|
|
94
|
+
messaging_product: "whatsapp",
|
|
95
|
+
to,
|
|
96
|
+
type: "template",
|
|
97
|
+
template: {
|
|
98
|
+
name: templateName,
|
|
99
|
+
language: { code: language },
|
|
100
|
+
components: components.length > 0 ? components : undefined,
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
const result = await waPost(token, `/${phoneNumberId}/messages`, payload);
|
|
104
|
+
return {
|
|
105
|
+
success: true,
|
|
106
|
+
message_id: result.messages[0]?.id ?? null,
|
|
107
|
+
wa_id: result.contacts[0]?.wa_id ?? to,
|
|
108
|
+
template_name: templateName,
|
|
109
|
+
to,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
export async function whatsappSendMedia(args) {
|
|
113
|
+
const { token, phoneNumberId } = requireAuth(args);
|
|
114
|
+
const to = String(args.to ?? "").trim();
|
|
115
|
+
const mediaType = String(args.media_type ?? "").toLowerCase().trim();
|
|
116
|
+
if (!to)
|
|
117
|
+
throw new Error("to is required.");
|
|
118
|
+
const validTypes = ["image", "video", "audio", "document", "sticker"];
|
|
119
|
+
if (!validTypes.includes(mediaType)) {
|
|
120
|
+
throw new Error(`media_type must be one of: ${validTypes.join(", ")}.`);
|
|
121
|
+
}
|
|
122
|
+
const mediaId = String(args.media_id ?? "").trim();
|
|
123
|
+
const mediaLink = String(args.media_link ?? "").trim();
|
|
124
|
+
if (!mediaId && !mediaLink)
|
|
125
|
+
throw new Error("Either media_id or media_link is required.");
|
|
126
|
+
const mediaObject = {};
|
|
127
|
+
if (mediaId)
|
|
128
|
+
mediaObject.id = mediaId;
|
|
129
|
+
if (mediaLink)
|
|
130
|
+
mediaObject.link = mediaLink;
|
|
131
|
+
if (args.caption && mediaType !== "audio" && mediaType !== "sticker") {
|
|
132
|
+
mediaObject.caption = String(args.caption);
|
|
133
|
+
}
|
|
134
|
+
if (args.filename && mediaType === "document") {
|
|
135
|
+
mediaObject.filename = String(args.filename);
|
|
136
|
+
}
|
|
137
|
+
const payload = {
|
|
138
|
+
messaging_product: "whatsapp",
|
|
139
|
+
to,
|
|
140
|
+
type: mediaType,
|
|
141
|
+
[mediaType]: mediaObject,
|
|
142
|
+
};
|
|
143
|
+
const result = await waPost(token, `/${phoneNumberId}/messages`, payload);
|
|
144
|
+
return {
|
|
145
|
+
success: true,
|
|
146
|
+
message_id: result.messages[0]?.id ?? null,
|
|
147
|
+
wa_id: result.contacts[0]?.wa_id ?? to,
|
|
148
|
+
media_type: mediaType,
|
|
149
|
+
to,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
export async function whatsappGetMedia(args) {
|
|
153
|
+
const token = String(args.bearer_token ?? "").trim();
|
|
154
|
+
if (!token)
|
|
155
|
+
throw new Error("bearer_token is required.");
|
|
156
|
+
const mediaId = String(args.media_id ?? "").trim();
|
|
157
|
+
if (!mediaId)
|
|
158
|
+
throw new Error("media_id is required.");
|
|
159
|
+
const result = await waGet(token, `/${mediaId}`);
|
|
160
|
+
return {
|
|
161
|
+
id: result.id,
|
|
162
|
+
url: result.url ?? null,
|
|
163
|
+
mime_type: result.mime_type ?? null,
|
|
164
|
+
file_size: result.file_size ?? null,
|
|
165
|
+
sha256: result.sha256 ?? null,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
export async function whatsappUploadMedia(args) {
|
|
169
|
+
const { token, phoneNumberId } = requireAuth(args);
|
|
170
|
+
const mediaUrl = String(args.media_url ?? "").trim();
|
|
171
|
+
const mimeType = String(args.mime_type ?? "").trim();
|
|
172
|
+
if (!mediaUrl)
|
|
173
|
+
throw new Error("media_url is required (URL to fetch the media from).");
|
|
174
|
+
if (!mimeType)
|
|
175
|
+
throw new Error("mime_type is required (e.g. image/jpeg, video/mp4).");
|
|
176
|
+
// Fetch the media and upload it as a blob
|
|
177
|
+
const mediaRes = await fetch(mediaUrl);
|
|
178
|
+
if (!mediaRes.ok)
|
|
179
|
+
throw new Error(`Failed to fetch media from URL: HTTP ${mediaRes.status}`);
|
|
180
|
+
const mediaBlob = await mediaRes.blob();
|
|
181
|
+
const form = new FormData();
|
|
182
|
+
form.append("messaging_product", "whatsapp");
|
|
183
|
+
form.append("type", mimeType);
|
|
184
|
+
form.append("file", mediaBlob, args.filename ? String(args.filename) : "upload");
|
|
185
|
+
const res = await fetch(`${WA_API_BASE}/${phoneNumberId}/media`, {
|
|
186
|
+
method: "POST",
|
|
187
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
188
|
+
body: form,
|
|
189
|
+
});
|
|
190
|
+
const data = await res.json();
|
|
191
|
+
if (!res.ok) {
|
|
192
|
+
const err = data.error;
|
|
193
|
+
throw new Error(`WhatsApp upload error: ${err?.message ?? `HTTP ${res.status}`}`);
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
success: true,
|
|
197
|
+
media_id: data.id,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=whatsapp-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whatsapp-tool.js","sourceRoot":"","sources":["../src/whatsapp-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function wooProducts(args: Record<string, unknown>): Promise<unknown>;
|
|
2
|
+
export declare function wooOrders(args: Record<string, unknown>): Promise<unknown>;
|
|
3
|
+
export declare function wooCustomers(args: Record<string, unknown>): Promise<unknown>;
|
|
4
|
+
//# sourceMappingURL=woocommerce-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"woocommerce-tool.d.ts","sourceRoot":"","sources":["../src/woocommerce-tool.ts"],"names":[],"mappings":"AAiFA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BjF;AAID,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA+B/E;AAID,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAalF"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// ─── WooCommerce REST API Tool ───────────────────────────────────────────────
|
|
2
|
+
// Covers products, orders, customers, and coupons.
|
|
3
|
+
// Auth: Consumer key + Consumer secret (HTTP Basic Auth).
|
|
4
|
+
// API: WooCommerce REST API v3 (wp-json/wc/v3).
|
|
5
|
+
// No external dependencies - native fetch only.
|
|
6
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
7
|
+
function requireConfig(args) {
|
|
8
|
+
const store_url = String(args.store_url ?? "").trim().replace(/\/$/, "");
|
|
9
|
+
const consumer_key = String(args.consumer_key ?? "").trim();
|
|
10
|
+
const consumer_secret = String(args.consumer_secret ?? "").trim();
|
|
11
|
+
if (!store_url)
|
|
12
|
+
return { error: "store_url is required (e.g. https://mystore.com)." };
|
|
13
|
+
if (!consumer_key)
|
|
14
|
+
return { error: "consumer_key is required (WooCommerce consumer key, starts with ck_)." };
|
|
15
|
+
if (!consumer_secret)
|
|
16
|
+
return { error: "consumer_secret is required (WooCommerce consumer secret, starts with cs_)." };
|
|
17
|
+
return { store_url, consumer_key, consumer_secret };
|
|
18
|
+
}
|
|
19
|
+
async function wooFetch(cfg, method, path, body, query) {
|
|
20
|
+
const base = `${cfg.store_url}/wp-json/wc/v3`;
|
|
21
|
+
const url = new URL(`${base}${path}`);
|
|
22
|
+
if (query) {
|
|
23
|
+
for (const [k, v] of Object.entries(query)) {
|
|
24
|
+
if (v !== undefined)
|
|
25
|
+
url.searchParams.set(k, String(v));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const credentials = Buffer.from(`${cfg.consumer_key}:${cfg.consumer_secret}`).toString("base64");
|
|
29
|
+
let response;
|
|
30
|
+
try {
|
|
31
|
+
response = await fetch(url.toString(), {
|
|
32
|
+
method,
|
|
33
|
+
headers: {
|
|
34
|
+
Authorization: `Basic ${credentials}`,
|
|
35
|
+
"Content-Type": "application/json",
|
|
36
|
+
"Accept": "application/json",
|
|
37
|
+
},
|
|
38
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
return { error: `Network error: ${err instanceof Error ? err.message : String(err)}` };
|
|
43
|
+
}
|
|
44
|
+
if (response.status === 429) {
|
|
45
|
+
const retryAfter = response.headers.get("Retry-After");
|
|
46
|
+
return { error: "WooCommerce rate limit reached.", retry_after: retryAfter ? Number(retryAfter) : 5, status: 429 };
|
|
47
|
+
}
|
|
48
|
+
if (response.status === 401 || response.status === 403) {
|
|
49
|
+
return { error: "WooCommerce auth failed: invalid consumer key or secret.", status: response.status };
|
|
50
|
+
}
|
|
51
|
+
let data;
|
|
52
|
+
try {
|
|
53
|
+
data = await response.json();
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return { error: `Non-JSON response (HTTP ${response.status})`, status: response.status };
|
|
57
|
+
}
|
|
58
|
+
if (!response.ok) {
|
|
59
|
+
const d = data;
|
|
60
|
+
return { error: d["message"] ?? d["code"] ?? "WooCommerce API error", status: response.status, code: d["code"] };
|
|
61
|
+
}
|
|
62
|
+
return data;
|
|
63
|
+
}
|
|
64
|
+
// ─── woo_products ─────────────────────────────────────────────────────────────
|
|
65
|
+
export async function wooProducts(args) {
|
|
66
|
+
const cfg = requireConfig(args);
|
|
67
|
+
if ("error" in cfg)
|
|
68
|
+
return cfg;
|
|
69
|
+
const action = String(args.action ?? "list");
|
|
70
|
+
switch (action) {
|
|
71
|
+
case "list": {
|
|
72
|
+
return wooFetch(cfg, "GET", "/products", undefined, {
|
|
73
|
+
per_page: args.per_page ? Number(args.per_page) : 20,
|
|
74
|
+
page: args.page ? Number(args.page) : 1,
|
|
75
|
+
status: args.status ? String(args.status) : undefined,
|
|
76
|
+
category: args.category ? String(args.category) : undefined,
|
|
77
|
+
search: args.search ? String(args.search) : undefined,
|
|
78
|
+
orderby: args.orderby ? String(args.orderby) : undefined,
|
|
79
|
+
order: args.order ? String(args.order) : undefined,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
case "get": {
|
|
83
|
+
const id = String(args.id ?? "").trim();
|
|
84
|
+
if (!id)
|
|
85
|
+
return { error: "id is required for action='get'." };
|
|
86
|
+
return wooFetch(cfg, "GET", `/products/${encodeURIComponent(id)}`);
|
|
87
|
+
}
|
|
88
|
+
default:
|
|
89
|
+
return { error: `Unknown action "${action}". Valid: list, get.` };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// ─── woo_orders ───────────────────────────────────────────────────────────────
|
|
93
|
+
export async function wooOrders(args) {
|
|
94
|
+
const cfg = requireConfig(args);
|
|
95
|
+
if ("error" in cfg)
|
|
96
|
+
return cfg;
|
|
97
|
+
const action = String(args.action ?? "list");
|
|
98
|
+
switch (action) {
|
|
99
|
+
case "list": {
|
|
100
|
+
return wooFetch(cfg, "GET", "/orders", undefined, {
|
|
101
|
+
per_page: args.per_page ? Number(args.per_page) : 20,
|
|
102
|
+
page: args.page ? Number(args.page) : 1,
|
|
103
|
+
status: args.status ? String(args.status) : undefined,
|
|
104
|
+
customer: args.customer ? Number(args.customer) : undefined,
|
|
105
|
+
after: args.after ? String(args.after) : undefined,
|
|
106
|
+
before: args.before ? String(args.before) : undefined,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
case "get": {
|
|
110
|
+
const id = String(args.id ?? "").trim();
|
|
111
|
+
if (!id)
|
|
112
|
+
return { error: "id is required for action='get'." };
|
|
113
|
+
return wooFetch(cfg, "GET", `/orders/${encodeURIComponent(id)}`);
|
|
114
|
+
}
|
|
115
|
+
case "create": {
|
|
116
|
+
if (!args.order || typeof args.order !== "object") {
|
|
117
|
+
return { error: "order object is required for action='create'." };
|
|
118
|
+
}
|
|
119
|
+
return wooFetch(cfg, "POST", "/orders", args.order);
|
|
120
|
+
}
|
|
121
|
+
default:
|
|
122
|
+
return { error: `Unknown action "${action}". Valid: list, get, create.` };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// ─── woo_customers ────────────────────────────────────────────────────────────
|
|
126
|
+
export async function wooCustomers(args) {
|
|
127
|
+
const cfg = requireConfig(args);
|
|
128
|
+
if ("error" in cfg)
|
|
129
|
+
return cfg;
|
|
130
|
+
return wooFetch(cfg, "GET", "/customers", undefined, {
|
|
131
|
+
per_page: args.per_page ? Number(args.per_page) : 20,
|
|
132
|
+
page: args.page ? Number(args.page) : 1,
|
|
133
|
+
search: args.search ? String(args.search) : undefined,
|
|
134
|
+
email: args.email ? String(args.email) : undefined,
|
|
135
|
+
role: args.role ? String(args.role) : undefined,
|
|
136
|
+
orderby: args.orderby ? String(args.orderby) : undefined,
|
|
137
|
+
order: args.order ? String(args.order) : undefined,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=woocommerce-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"woocommerce-tool.js","sourceRoot":"","sources":["../src/woocommerce-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function youtubeSearch(args: Record<string, unknown>): Promise<unknown>;
|
|
2
|
+
export declare function youtubeGetVideo(args: Record<string, unknown>): Promise<unknown>;
|
|
3
|
+
export declare function youtubeGetChannel(args: Record<string, unknown>): Promise<unknown>;
|
|
4
|
+
export declare function youtubeListPlaylists(args: Record<string, unknown>): Promise<unknown>;
|
|
5
|
+
export declare function youtubeListPlaylistItems(args: Record<string, unknown>): Promise<unknown>;
|
|
6
|
+
export declare function youtubeGetCaptions(args: Record<string, unknown>): Promise<unknown>;
|
|
7
|
+
//# sourceMappingURL=youtube-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"youtube-tool.d.ts","sourceRoot":"","sources":["../src/youtube-tool.ts"],"names":[],"mappings":"AAuIA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAsCnF;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BrF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBvF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA8B1F;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA4B9F;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBxF"}
|