neuron-mcp-server 1.0.0 → 1.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/.env +13 -0
- package/AI_PERSONALITY_DESIGN_RESEARCH.md +1020 -0
- package/Dockerfile +18 -0
- package/README.md +146 -131
- package/dist/client.d.ts +6 -0
- package/dist/client.js +50 -12
- package/dist/client.js.map +1 -1
- package/dist/index.js +51 -7
- package/dist/index.js.map +1 -1
- package/dist/tools/ai.js +9 -3
- package/dist/tools/ai.js.map +1 -1
- package/dist/tools/approvals.d.ts +2 -0
- package/dist/tools/approvals.js +181 -0
- package/dist/tools/approvals.js.map +1 -0
- package/dist/tools/audit.js +7 -4
- package/dist/tools/audit.js.map +1 -1
- package/dist/tools/auth.js +119 -19
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/billing.js +22 -6
- package/dist/tools/billing.js.map +1 -1
- package/dist/tools/blog.js +98 -34
- package/dist/tools/blog.js.map +1 -1
- package/dist/tools/bot-api-keys.js +27 -12
- package/dist/tools/bot-api-keys.js.map +1 -1
- package/dist/tools/bot-api.js +53 -27
- package/dist/tools/bot-api.js.map +1 -1
- package/dist/tools/bots.js +116 -68
- package/dist/tools/bots.js.map +1 -1
- package/dist/tools/broadcasts.js +78 -38
- package/dist/tools/broadcasts.js.map +1 -1
- package/dist/tools/builtin-tools.js +19 -12
- package/dist/tools/builtin-tools.js.map +1 -1
- package/dist/tools/campaigns.js +149 -61
- package/dist/tools/campaigns.js.map +1 -1
- package/dist/tools/channels.js +163 -53
- package/dist/tools/channels.js.map +1 -1
- package/dist/tools/contact-lists.js +111 -51
- package/dist/tools/contact-lists.js.map +1 -1
- package/dist/tools/contacts.js +117 -44
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/conversations.js +95 -50
- package/dist/tools/conversations.js.map +1 -1
- package/dist/tools/flows.d.ts +2 -0
- package/dist/tools/flows.js +242 -0
- package/dist/tools/flows.js.map +1 -0
- package/dist/tools/group-management.d.ts +2 -0
- package/dist/tools/group-management.js +239 -0
- package/dist/tools/group-management.js.map +1 -0
- package/dist/tools/leads.d.ts +2 -0
- package/dist/tools/leads.js +100 -0
- package/dist/tools/leads.js.map +1 -0
- package/dist/tools/list-campaigns.d.ts +2 -0
- package/dist/tools/list-campaigns.js +152 -0
- package/dist/tools/list-campaigns.js.map +1 -0
- package/dist/tools/list-pool.js +250 -33
- package/dist/tools/list-pool.js.map +1 -1
- package/dist/tools/media.js +12 -7
- package/dist/tools/media.js.map +1 -1
- package/dist/tools/newsletters.js +106 -26
- package/dist/tools/newsletters.js.map +1 -1
- package/dist/tools/organizations.js +76 -35
- package/dist/tools/organizations.js.map +1 -1
- package/dist/tools/outbound-webhooks.js +32 -20
- package/dist/tools/outbound-webhooks.js.map +1 -1
- package/dist/tools/payouts.js +44 -17
- package/dist/tools/payouts.js.map +1 -1
- package/dist/tools/personas.d.ts +2 -0
- package/dist/tools/personas.js +141 -0
- package/dist/tools/personas.js.map +1 -0
- package/dist/tools/polls.d.ts +2 -0
- package/dist/tools/polls.js +30 -0
- package/dist/tools/polls.js.map +1 -0
- package/dist/tools/pool.js +101 -43
- package/dist/tools/pool.js.map +1 -1
- package/dist/tools/products.d.ts +2 -0
- package/dist/tools/products.js +277 -0
- package/dist/tools/products.js.map +1 -0
- package/dist/tools/profile-privacy.d.ts +2 -0
- package/dist/tools/profile-privacy.js +195 -0
- package/dist/tools/profile-privacy.js.map +1 -0
- package/dist/tools/reflections.js +25 -13
- package/dist/tools/reflections.js.map +1 -1
- package/dist/tools/scheduled-messages.d.ts +2 -0
- package/dist/tools/scheduled-messages.js +124 -0
- package/dist/tools/scheduled-messages.js.map +1 -0
- package/dist/tools/social-channels.d.ts +2 -0
- package/dist/tools/social-channels.js +318 -0
- package/dist/tools/social-channels.js.map +1 -0
- package/dist/tools/tasks.d.ts +2 -0
- package/dist/tools/tasks.js +155 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/tools.js +86 -40
- package/dist/tools/tools.js.map +1 -1
- package/dist/tools/wallets.js +34 -12
- package/dist/tools/wallets.js.map +1 -1
- package/dist/tools/webhooks.js +35 -20
- package/dist/tools/webhooks.js.map +1 -1
- package/dist/tools/whatsapp-actions.d.ts +2 -0
- package/dist/tools/whatsapp-actions.js +186 -0
- package/dist/tools/whatsapp-actions.js.map +1 -0
- package/package.json +4 -31
- package/scripts/setup-delivahere-bot.ts +804 -0
- package/scripts/test-delivahere-bot.ts +128 -0
- package/scripts/update-letschop-prompt.ts +194 -0
- package/server.json +26 -0
- package/smithery.yaml +19 -0
- package/src/client.ts +169 -0
- package/src/index.ts +256 -0
- package/src/tools/ai.ts +35 -0
- package/src/tools/approvals.ts +231 -0
- package/src/tools/audit.ts +49 -0
- package/src/tools/auth.ts +536 -0
- package/src/tools/billing.ts +79 -0
- package/src/tools/blog.ts +264 -0
- package/src/tools/bot-api-keys.ts +87 -0
- package/src/tools/bot-api.ts +193 -0
- package/src/tools/bots.ts +320 -0
- package/src/tools/broadcasts.ts +224 -0
- package/src/tools/builtin-tools.ts +108 -0
- package/src/tools/campaigns.ts +429 -0
- package/src/tools/channels.ts +520 -0
- package/src/tools/contact-lists.ts +320 -0
- package/src/tools/contacts.ts +395 -0
- package/src/tools/conversations.ts +349 -0
- package/src/tools/flows.ts +298 -0
- package/src/tools/group-management.ts +265 -0
- package/src/tools/knowledge-bases.ts +451 -0
- package/src/tools/leads.ts +104 -0
- package/src/tools/list-campaigns.ts +190 -0
- package/src/tools/list-pool.ts +389 -0
- package/src/tools/media.ts +50 -0
- package/src/tools/newsletters.ts +271 -0
- package/src/tools/organizations.ts +287 -0
- package/src/tools/outbound-webhooks.ts +181 -0
- package/src/tools/payouts.ts +133 -0
- package/src/tools/personas.ts +145 -0
- package/src/tools/polls.ts +32 -0
- package/src/tools/pool.ts +293 -0
- package/src/tools/products.ts +280 -0
- package/src/tools/profile-privacy.ts +215 -0
- package/src/tools/reflections.ts +124 -0
- package/src/tools/scheduled-messages.ts +144 -0
- package/src/tools/social-channels.ts +396 -0
- package/src/tools/tasks.ts +198 -0
- package/src/tools/tools.ts +255 -0
- package/src/tools/wallets.ts +107 -0
- package/src/tools/webhooks.ts +166 -0
- package/src/tools/whatsapp-actions.ts +203 -0
- package/tsconfig.json +20 -0
- package/LICENSE +0 -21
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { api, jsonResult, errorResult } from "../client.js";
|
|
3
|
+
const PRICE_NOTE = "Amount in kobo (minor units): ₦1 = 100. Minimum ₦500 = 50000.";
|
|
4
|
+
const deliveryEnum = z.enum(["file", "link", "code"]);
|
|
5
|
+
const feePayerEnum = z.enum(["buyer", "seller"]);
|
|
6
|
+
const productFields = {
|
|
7
|
+
title: z.string().describe("Product title shown to buyers"),
|
|
8
|
+
description: z.string().optional().describe("Rich description / what the buyer gets"),
|
|
9
|
+
priceMinor: z.number().int().describe(`Current price (charged). ${PRICE_NOTE} Set 0 for a free product (no payment).`),
|
|
10
|
+
originalPriceMinor: z.number().int().nullable().optional().describe("Optional compare-at / 'was' price (kobo), shown struck through. Must be ≥ current price."),
|
|
11
|
+
currency: z.string().optional().describe("ISO currency (default NGN)"),
|
|
12
|
+
channelId: z.string().uuid().nullable().optional().describe("WhatsApp session UUID used to deliver the product (defaults to the org default channel)"),
|
|
13
|
+
deliveryType: deliveryEnum.describe("How the product is delivered: 'file' (uploaded file), 'link' (URL), or 'code' (text/code)"),
|
|
14
|
+
deliveryFileUrl: z.string().url().nullable().optional().describe("For deliveryType 'file': the uploaded file URL (upload first with neuron_upload_media)"),
|
|
15
|
+
deliveryFileName: z.string().nullable().optional().describe("Filename shown in the WhatsApp document"),
|
|
16
|
+
deliveryText: z.string().nullable().optional().describe("For 'link'/'code': the link or code the buyer receives. Optional note for 'file'."),
|
|
17
|
+
coverImageUrl: z.string().url().nullable().optional().describe("Cover image URL"),
|
|
18
|
+
coverEmoji: z.string().nullable().optional().describe("Emoji used as a cover fallback (e.g. 📓)"),
|
|
19
|
+
coverType: z.enum(["none", "emoji", "image", "color", "gradient"]).optional().describe("How the cover renders"),
|
|
20
|
+
coverColor: z.string().nullable().optional().describe("Cover colour (hex) for 'color'/'gradient' cover types"),
|
|
21
|
+
coverColor2: z.string().nullable().optional().describe("Second colour (hex) for 'gradient' cover"),
|
|
22
|
+
content: z.array(z.any()).optional().describe("Rich product-page content blocks. Ordered array of {type, ...}: heading {text,level}, text {markdown}, image {url,caption}, video {url}, callout {emoji,text}, collapsible {title,blocks[]}, divider {}, button {label,url}, embed {url}, spacer {}"),
|
|
23
|
+
theme: z.record(z.string()).optional().describe("Per-product theme: { bg, accent, text (hex), mode: 'light'|'dark', layout: 'hero'|'side', coverAspect: '16/10'|'3/2'|'1/1'|'4/5', cta: buy-button label e.g. 'Reserve your hour' }"),
|
|
24
|
+
checkoutFields: z.array(z.object({ key: z.string(), label: z.string(), type: z.enum(["text", "textarea", "number", "email", "phone", "select"]), required: z.boolean().optional(), placeholder: z.string().optional(), options: z.array(z.string()).optional() })).optional().describe("Custom checkout questions the buyer answers (name, address, specs/customisations…). Their answers are attached to the order and sent to the seller."),
|
|
25
|
+
kind: z.string().nullable().optional().describe("Short label e.g. 'E-book', 'Presets', 'Service'"),
|
|
26
|
+
category: z.string().nullable().optional().describe("Category label e.g. 'Productivity'"),
|
|
27
|
+
codeMode: z.enum(["shared", "pool", "generated"]).optional().describe("For deliveryType 'code': 'shared' (same text to every buyer), 'pool' (a unique code per sale from codes you upload — sells out when empty), or 'generated' (auto-mint a unique license key per sale)"),
|
|
28
|
+
codes: z.array(z.string()).optional().describe("For codeMode 'pool': the unique codes/keys to add (one gets sent per buyer). Appended to any existing pool."),
|
|
29
|
+
feePayer: feePayerEnum.optional().describe("'buyer' (fee added on top, seller gets full price — default) or 'seller' (fee deducted)"),
|
|
30
|
+
enabled: z.boolean().optional().describe("Whether the product is live"),
|
|
31
|
+
membership: z.boolean().optional().describe("Make this a recurring subscription/membership: it tracks a paid period per buyer, renews from their Neuron wallet when possible (else emails a reminder — no card auto-charge), and marks them lapsed when the period + grace passes. React to membership.started/renewed/lapsed in Flows to deliver whatever the membership grants."),
|
|
32
|
+
membershipInterval: z.enum(["daily", "weekly", "monthly"]).nullable().optional().describe("Billing period. Required when membership is true."),
|
|
33
|
+
membershipGraceDays: z.number().int().min(0).optional().describe("Days after the period ends before an unpaid member lapses (and, if a group is attached, is removed from it). Default 1."),
|
|
34
|
+
membershipGroupSlug: z.string().nullable().optional().describe("OPTIONAL: attach a WhatsApp group as a membership perk. Org-unique handle (lowercase letters, numbers, hyphens); the group is created on the first sale, buyers are added on renewal and removed on lapse. Your connected number must be a group admin. Omit for a membership that isn't group-based."),
|
|
35
|
+
membershipGroupName: z.string().nullable().optional().describe("Group subject used when the attached group is auto-created (defaults to the product title). Only relevant with membershipGroupSlug."),
|
|
36
|
+
};
|
|
37
|
+
export function registerProductsTools(server) {
|
|
38
|
+
const ro = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
|
|
39
|
+
const write = { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false };
|
|
40
|
+
server.registerTool("neuron_seller_status", {
|
|
41
|
+
title: "Seller Status",
|
|
42
|
+
description: "Check whether this account can sell (Pro plan + admin-granted access) and any pending application.",
|
|
43
|
+
inputSchema: z.object({}),
|
|
44
|
+
annotations: ro,
|
|
45
|
+
}, async () => {
|
|
46
|
+
try {
|
|
47
|
+
return jsonResult(await api("GET", "/sell/status"));
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
return errorResult(e);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
server.registerTool("neuron_apply_to_sell", {
|
|
54
|
+
title: "Apply to Sell",
|
|
55
|
+
description: "Apply for seller access (digital products). Requires a Pro plan or higher; a platform admin then grants access.",
|
|
56
|
+
inputSchema: z.object({ pitch: z.string().optional().describe("Short note on what you plan to sell") }),
|
|
57
|
+
annotations: write,
|
|
58
|
+
}, async (p) => {
|
|
59
|
+
try {
|
|
60
|
+
return jsonResult(await api("POST", "/sell/apply", p));
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
return errorResult(e);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
server.registerTool("neuron_get_storefront", {
|
|
67
|
+
title: "Get Storefront",
|
|
68
|
+
description: "Get this seller's storefront profile (handle, display name, bio, branding) and its public URL.",
|
|
69
|
+
inputSchema: z.object({}),
|
|
70
|
+
annotations: ro,
|
|
71
|
+
}, async () => {
|
|
72
|
+
try {
|
|
73
|
+
return jsonResult(await api("GET", "/sell/store"));
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
return errorResult(e);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
server.registerTool("neuron_update_storefront", {
|
|
80
|
+
title: "Update Storefront",
|
|
81
|
+
description: "Create or update the seller storefront (nestuge-style page). Handle is auto-generated from the display name if omitted.",
|
|
82
|
+
inputSchema: z.object({
|
|
83
|
+
handle: z.string().optional().describe("URL handle (a-z, 0-9, hyphens). Becomes /s/<handle>."),
|
|
84
|
+
displayName: z.string().optional().describe("Store display name"),
|
|
85
|
+
bio: z.string().nullable().optional().describe("Short store bio"),
|
|
86
|
+
avatarUrl: z.string().url().nullable().optional(),
|
|
87
|
+
brandColor: z.string().nullable().optional().describe("Hex brand colour e.g. #188A56"),
|
|
88
|
+
socials: z.record(z.string()).optional().describe("Map of social links e.g. { instagram: 'https://...' }"),
|
|
89
|
+
enabled: z.boolean().optional().describe("Whether the storefront is public"),
|
|
90
|
+
}),
|
|
91
|
+
annotations: write,
|
|
92
|
+
}, async (p) => {
|
|
93
|
+
try {
|
|
94
|
+
return jsonResult(await api("PUT", "/sell/store", p));
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
return errorResult(e);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
server.registerTool("neuron_list_products", {
|
|
101
|
+
title: "List Products",
|
|
102
|
+
description: "List all products for this seller, each with its public checkout URL and price breakdown.",
|
|
103
|
+
inputSchema: z.object({}),
|
|
104
|
+
annotations: ro,
|
|
105
|
+
}, async () => {
|
|
106
|
+
try {
|
|
107
|
+
return jsonResult(await api("GET", "/sell/products"));
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
return errorResult(e);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
server.registerTool("neuron_get_product", {
|
|
114
|
+
title: "Get Product",
|
|
115
|
+
description: "Get a single product by id, with its public URL and fee breakdown.",
|
|
116
|
+
inputSchema: z.object({ id: z.string().uuid().describe("Product UUID") }),
|
|
117
|
+
annotations: ro,
|
|
118
|
+
}, async (p) => {
|
|
119
|
+
try {
|
|
120
|
+
return jsonResult(await api("GET", `/sell/products/${p.id}`));
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
return errorResult(e);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
server.registerTool("neuron_create_product", {
|
|
127
|
+
title: "Create Product",
|
|
128
|
+
description: `Create a digital product/service with a public checkout link. ${PRICE_NOTE} For 'file' delivery, upload the file first (neuron_upload_media) and pass its URL as deliveryFileUrl. On payment, Neuron confirms it and delivers the product to the buyer's WhatsApp automatically.`,
|
|
129
|
+
inputSchema: z.object(productFields),
|
|
130
|
+
annotations: write,
|
|
131
|
+
}, async (p) => {
|
|
132
|
+
try {
|
|
133
|
+
return jsonResult(await api("POST", "/sell/products", p));
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
return errorResult(e);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
server.registerTool("neuron_update_product", {
|
|
140
|
+
title: "Update Product",
|
|
141
|
+
description: "Update any field of a product (price, delivery, cover, enabled, fee payer, …).",
|
|
142
|
+
inputSchema: z.object({ id: z.string().uuid().describe("Product UUID"), ...Object.fromEntries(Object.entries(productFields).map(([k, v]) => [k, v.optional()])) }),
|
|
143
|
+
annotations: write,
|
|
144
|
+
}, async (p) => {
|
|
145
|
+
try {
|
|
146
|
+
const { id, ...body } = p;
|
|
147
|
+
return jsonResult(await api("PUT", `/sell/products/${id}`, body));
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
return errorResult(e);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
server.registerTool("neuron_product_members", {
|
|
154
|
+
title: "Product Members",
|
|
155
|
+
description: "List the members of a membership product: current (paid-up) or all. Returns each buyer's status (active / lapsed / cancelled), when their period renews, whether they're in the attached WhatsApp group (if one is attached), plus totals.",
|
|
156
|
+
inputSchema: z.object({
|
|
157
|
+
id: z.string().uuid().describe("Product UUID (must be a membership product)"),
|
|
158
|
+
status: z.enum(["active", "all"]).optional().describe("'active' (current members, default) or 'all' (every member ever)"),
|
|
159
|
+
}),
|
|
160
|
+
annotations: ro,
|
|
161
|
+
}, async (p) => {
|
|
162
|
+
try {
|
|
163
|
+
return jsonResult(await api("GET", `/sell/products/${p.id}/members`, undefined, { status: p.status ?? "active" }));
|
|
164
|
+
}
|
|
165
|
+
catch (e) {
|
|
166
|
+
return errorResult(e);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
server.registerTool("neuron_add_product_codes", {
|
|
170
|
+
title: "Add Product Codes",
|
|
171
|
+
description: "Add more unique codes/keys to a 'pool' code product's stock. Each buyer receives one. Returns the product with the new remaining count.",
|
|
172
|
+
inputSchema: z.object({
|
|
173
|
+
id: z.string().uuid().describe("Product UUID"),
|
|
174
|
+
codes: z.array(z.string()).min(1).describe("Unique codes/keys to append to the pool"),
|
|
175
|
+
}),
|
|
176
|
+
annotations: write,
|
|
177
|
+
}, async (p) => {
|
|
178
|
+
try {
|
|
179
|
+
return jsonResult(await api("PUT", `/sell/products/${p.id}`, { codes: p.codes }));
|
|
180
|
+
}
|
|
181
|
+
catch (e) {
|
|
182
|
+
return errorResult(e);
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
server.registerTool("neuron_duplicate_product", {
|
|
186
|
+
title: "Duplicate Product",
|
|
187
|
+
description: "Clone an existing product into a hidden draft copy (new checkout link, '(copy)' title, reset counters). A 'pool' code product is cloned with an empty pool — restock codes before enabling. Edit the copy with neuron_update_product, then set enabled: true to publish.",
|
|
188
|
+
inputSchema: z.object({ id: z.string().uuid().describe("Product UUID to clone") }),
|
|
189
|
+
annotations: write,
|
|
190
|
+
}, async (p) => {
|
|
191
|
+
try {
|
|
192
|
+
return jsonResult(await api("POST", `/sell/products/${p.id}/duplicate`, {}));
|
|
193
|
+
}
|
|
194
|
+
catch (e) {
|
|
195
|
+
return errorResult(e);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
server.registerTool("neuron_delete_product", {
|
|
199
|
+
title: "Delete Product",
|
|
200
|
+
description: "Permanently delete a product. Existing orders are retained.",
|
|
201
|
+
inputSchema: z.object({ id: z.string().uuid().describe("Product UUID") }),
|
|
202
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
203
|
+
}, async (p) => {
|
|
204
|
+
try {
|
|
205
|
+
return jsonResult(await api("DELETE", `/sell/products/${p.id}`));
|
|
206
|
+
}
|
|
207
|
+
catch (e) {
|
|
208
|
+
return errorResult(e);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
server.registerTool("neuron_list_orders", {
|
|
212
|
+
title: "List Orders",
|
|
213
|
+
description: "List recent product orders (sales) for this seller, with buyer, amount, fee breakdown, and status.",
|
|
214
|
+
inputSchema: z.object({}),
|
|
215
|
+
annotations: ro,
|
|
216
|
+
}, async () => {
|
|
217
|
+
try {
|
|
218
|
+
return jsonResult(await api("GET", "/sell/orders"));
|
|
219
|
+
}
|
|
220
|
+
catch (e) {
|
|
221
|
+
return errorResult(e);
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
server.registerTool("neuron_refund_order", {
|
|
225
|
+
title: "Refund Order",
|
|
226
|
+
description: "Refund a paid order via Paystack. The buyer is refunded and the sale amount is reversed from your wallet.",
|
|
227
|
+
inputSchema: z.object({ id: z.string().uuid().describe("Order UUID") }),
|
|
228
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
229
|
+
}, async (p) => {
|
|
230
|
+
try {
|
|
231
|
+
return jsonResult(await api("POST", `/sell/orders/${p.id}/refund`));
|
|
232
|
+
}
|
|
233
|
+
catch (e) {
|
|
234
|
+
return errorResult(e);
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
server.registerTool("neuron_deliver_order", {
|
|
238
|
+
title: "Deliver Order",
|
|
239
|
+
description: "Re-send a paid-but-undelivered order to the buyer over WhatsApp/email. Use when a sale settled while no WhatsApp session was connected; connect one first, then deliver.",
|
|
240
|
+
inputSchema: z.object({ id: z.string().uuid().describe("Order UUID") }),
|
|
241
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
242
|
+
}, async (p) => {
|
|
243
|
+
try {
|
|
244
|
+
return jsonResult(await api("POST", `/sell/orders/${p.id}/deliver`));
|
|
245
|
+
}
|
|
246
|
+
catch (e) {
|
|
247
|
+
return errorResult(e);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
server.registerTool("neuron_list_reviews", {
|
|
251
|
+
title: "List Reviews",
|
|
252
|
+
description: "List verified-purchase reviews across this seller's products (rating, text, buyer, status).",
|
|
253
|
+
inputSchema: z.object({}),
|
|
254
|
+
annotations: ro,
|
|
255
|
+
}, async () => {
|
|
256
|
+
try {
|
|
257
|
+
return jsonResult(await api("GET", "/sell/reviews"));
|
|
258
|
+
}
|
|
259
|
+
catch (e) {
|
|
260
|
+
return errorResult(e);
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
server.registerTool("neuron_sales_stats", {
|
|
264
|
+
title: "Sales Stats",
|
|
265
|
+
description: "Total paid sales count and net revenue (kobo) for this seller.",
|
|
266
|
+
inputSchema: z.object({}),
|
|
267
|
+
annotations: ro,
|
|
268
|
+
}, async () => {
|
|
269
|
+
try {
|
|
270
|
+
return jsonResult(await api("GET", "/sell/stats"));
|
|
271
|
+
}
|
|
272
|
+
catch (e) {
|
|
273
|
+
return errorResult(e);
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=products.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/tools/products.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { api, jsonResult, errorResult } from "../client.js";
|
|
3
|
+
export function registerProfilePrivacyTools(server) {
|
|
4
|
+
// 1. Update Profile Name
|
|
5
|
+
server.registerTool("neuron_update_profile_name", {
|
|
6
|
+
title: "Update Profile Name",
|
|
7
|
+
description: "Update the bot's WhatsApp display name on the given channel.",
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
channelId: z.string().describe("WhatsApp channel identifier (UUID)"),
|
|
10
|
+
name: z.string().min(1).describe("New display name"),
|
|
11
|
+
}),
|
|
12
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
13
|
+
}, async (args) => {
|
|
14
|
+
try {
|
|
15
|
+
const res = await api("PUT", `/whatsapp-actions/${args.channelId}/profile/name`, {
|
|
16
|
+
name: args.name,
|
|
17
|
+
});
|
|
18
|
+
return jsonResult(res);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
return errorResult(error);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
// 2. Update Profile Picture
|
|
25
|
+
server.registerTool("neuron_update_profile_picture", {
|
|
26
|
+
title: "Update Profile Picture",
|
|
27
|
+
description: "Update the bot's WhatsApp profile picture from an image URL.",
|
|
28
|
+
inputSchema: z.object({
|
|
29
|
+
channelId: z.string().describe("WhatsApp channel identifier (UUID)"),
|
|
30
|
+
imageUrl: z.string().url().describe("URL of the image to set as profile picture"),
|
|
31
|
+
}),
|
|
32
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
33
|
+
}, async (args) => {
|
|
34
|
+
try {
|
|
35
|
+
const res = await api("PUT", `/whatsapp-actions/${args.channelId}/profile/picture`, {
|
|
36
|
+
imageUrl: args.imageUrl,
|
|
37
|
+
});
|
|
38
|
+
return jsonResult(res);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
return errorResult(error);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
// 3. Remove Profile Picture
|
|
45
|
+
server.registerTool("neuron_remove_profile_picture", {
|
|
46
|
+
title: "Remove Profile Picture",
|
|
47
|
+
description: "Remove the bot's WhatsApp profile picture, reverting to the default.",
|
|
48
|
+
inputSchema: z.object({
|
|
49
|
+
channelId: z.string().describe("WhatsApp channel identifier (UUID)"),
|
|
50
|
+
}),
|
|
51
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
52
|
+
}, async (args) => {
|
|
53
|
+
try {
|
|
54
|
+
const res = await api("DELETE", `/whatsapp-actions/${args.channelId}/profile/picture`);
|
|
55
|
+
return jsonResult(res);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
return errorResult(error);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
// 4. Update Profile Status
|
|
62
|
+
server.registerTool("neuron_update_profile_status", {
|
|
63
|
+
title: "Update Profile Status",
|
|
64
|
+
description: "Update the bot's WhatsApp status/bio text.",
|
|
65
|
+
inputSchema: z.object({
|
|
66
|
+
channelId: z.string().describe("WhatsApp channel identifier (UUID)"),
|
|
67
|
+
status: z.string().min(1).describe("New status/bio text"),
|
|
68
|
+
}),
|
|
69
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
70
|
+
}, async (args) => {
|
|
71
|
+
try {
|
|
72
|
+
const res = await api("PUT", `/whatsapp-actions/${args.channelId}/profile/status`, {
|
|
73
|
+
status: args.status,
|
|
74
|
+
});
|
|
75
|
+
return jsonResult(res);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
return errorResult(error);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// 5. Get Privacy Settings
|
|
82
|
+
server.registerTool("neuron_get_privacy_settings", {
|
|
83
|
+
title: "Get Privacy Settings",
|
|
84
|
+
description: "Fetch the bot's current WhatsApp privacy settings (last seen, online, profile picture, status, read receipts, groups add).",
|
|
85
|
+
inputSchema: z.object({
|
|
86
|
+
channelId: z.string().describe("WhatsApp channel identifier (UUID)"),
|
|
87
|
+
}),
|
|
88
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
89
|
+
}, async (args) => {
|
|
90
|
+
try {
|
|
91
|
+
const res = await api("GET", `/whatsapp-actions/${args.channelId}/privacy`);
|
|
92
|
+
return jsonResult(res);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
return errorResult(error);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
// 6. Update Privacy Setting
|
|
99
|
+
server.registerTool("neuron_update_privacy_setting", {
|
|
100
|
+
title: "Update Privacy Setting",
|
|
101
|
+
description: "Update a specific WhatsApp privacy setting. Settings: lastSeen (all/contacts/contact_blacklist/none), online (all/match_last_seen), profilePicture (all/contacts/contact_blacklist/none), status (all/contacts/contact_blacklist/none), readReceipts (all/none), groupsAdd (all/contacts/contact_blacklist).",
|
|
102
|
+
inputSchema: z.object({
|
|
103
|
+
channelId: z.string().describe("WhatsApp channel identifier (UUID)"),
|
|
104
|
+
setting: z.enum(["lastSeen", "online", "profilePicture", "status", "readReceipts", "groupsAdd"]).describe("Privacy setting to update"),
|
|
105
|
+
value: z.string().min(1).describe("New value for the setting (see description for allowed values per setting)"),
|
|
106
|
+
}),
|
|
107
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
108
|
+
}, async (args) => {
|
|
109
|
+
try {
|
|
110
|
+
const res = await api("PUT", `/whatsapp-actions/${args.channelId}/privacy/${args.setting}`, {
|
|
111
|
+
value: args.value,
|
|
112
|
+
});
|
|
113
|
+
return jsonResult(res);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
return errorResult(error);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
// 7. Block Contact
|
|
120
|
+
server.registerTool("neuron_block_contact", {
|
|
121
|
+
title: "Block Contact",
|
|
122
|
+
description: "Block a WhatsApp contact. Blocked contacts cannot message the bot or see its profile.",
|
|
123
|
+
inputSchema: z.object({
|
|
124
|
+
channelId: z.string().describe("WhatsApp channel identifier (UUID)"),
|
|
125
|
+
jid: z.string().describe("Contact JID or phone number to block (e.g. '2348012345678' or '2348012345678@s.whatsapp.net')"),
|
|
126
|
+
}),
|
|
127
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
128
|
+
}, async (args) => {
|
|
129
|
+
try {
|
|
130
|
+
const res = await api("POST", `/whatsapp-actions/${args.channelId}/block`, {
|
|
131
|
+
jid: args.jid,
|
|
132
|
+
});
|
|
133
|
+
return jsonResult(res);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
return errorResult(error);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
// 8. Unblock Contact
|
|
140
|
+
server.registerTool("neuron_unblock_contact", {
|
|
141
|
+
title: "Unblock Contact",
|
|
142
|
+
description: "Unblock a previously blocked WhatsApp contact.",
|
|
143
|
+
inputSchema: z.object({
|
|
144
|
+
channelId: z.string().describe("WhatsApp channel identifier (UUID)"),
|
|
145
|
+
jid: z.string().describe("Contact JID or phone number to unblock"),
|
|
146
|
+
}),
|
|
147
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
148
|
+
}, async (args) => {
|
|
149
|
+
try {
|
|
150
|
+
const res = await api("POST", `/whatsapp-actions/${args.channelId}/unblock`, {
|
|
151
|
+
jid: args.jid,
|
|
152
|
+
});
|
|
153
|
+
return jsonResult(res);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
return errorResult(error);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
// 9. Get Blocklist
|
|
160
|
+
server.registerTool("neuron_get_blocklist", {
|
|
161
|
+
title: "Get Blocklist",
|
|
162
|
+
description: "Fetch the list of all blocked WhatsApp contacts for the bot on the given channel.",
|
|
163
|
+
inputSchema: z.object({
|
|
164
|
+
channelId: z.string().describe("WhatsApp channel identifier (UUID)"),
|
|
165
|
+
}),
|
|
166
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
167
|
+
}, async (args) => {
|
|
168
|
+
try {
|
|
169
|
+
const res = await api("GET", `/whatsapp-actions/${args.channelId}/blocklist`);
|
|
170
|
+
return jsonResult(res);
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
return errorResult(error);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
// 10. Get Business Profile
|
|
177
|
+
server.registerTool("neuron_get_business_profile", {
|
|
178
|
+
title: "Get Business Profile",
|
|
179
|
+
description: "Fetch the WhatsApp Business profile of an external contact, including description, website, category, and business hours.",
|
|
180
|
+
inputSchema: z.object({
|
|
181
|
+
channelId: z.string().describe("WhatsApp channel identifier (UUID)"),
|
|
182
|
+
jid: z.string().describe("Contact JID or phone number to look up (e.g. '2348012345678' or '2348012345678@s.whatsapp.net')"),
|
|
183
|
+
}),
|
|
184
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
185
|
+
}, async (args) => {
|
|
186
|
+
try {
|
|
187
|
+
const res = await api("GET", `/whatsapp-actions/${args.channelId}/business-profile/${args.jid}`);
|
|
188
|
+
return jsonResult(res);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
return errorResult(error);
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=profile-privacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-privacy.js","sourceRoot":"","sources":["../../src/tools/profile-privacy.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,16 @@ export function registerReflectionsTools(server) {
|
|
|
7
7
|
// 1. List Reflections
|
|
8
8
|
server.registerTool("neuron_list_reflections", {
|
|
9
9
|
title: "List Reflections",
|
|
10
|
-
description: "
|
|
10
|
+
description: "Retrieve pending reflections that the bot has generated from conversations, awaiting human review. Optionally filter by approval status.",
|
|
11
11
|
inputSchema: z.object({
|
|
12
|
-
botId: z.string().describe("
|
|
13
|
-
status: z.enum(["pending", "approved", "rejected"]).optional().describe("Filter by
|
|
12
|
+
botId: z.string().describe("Unique identifier (UUID) of the bot to list reflections for"),
|
|
13
|
+
status: z.enum(["pending", "approved", "rejected"]).optional().describe("Filter reflections by approval status (default: all statuses)"),
|
|
14
14
|
}),
|
|
15
15
|
annotations: {
|
|
16
|
-
|
|
16
|
+
readOnlyHint: true,
|
|
17
|
+
destructiveHint: false,
|
|
18
|
+
idempotentHint: true,
|
|
19
|
+
openWorldHint: false,
|
|
17
20
|
},
|
|
18
21
|
}, async (args) => {
|
|
19
22
|
const { botId, status } = args;
|
|
@@ -32,12 +35,15 @@ export function registerReflectionsTools(server) {
|
|
|
32
35
|
// 2. Approve Reflection
|
|
33
36
|
server.registerTool("neuron_approve_reflection", {
|
|
34
37
|
title: "Approve Reflection",
|
|
35
|
-
description: "Approve a bot reflection to incorporate
|
|
38
|
+
description: "Approve a bot-generated reflection to incorporate the learned insight into the bot's future behavior and responses.",
|
|
36
39
|
inputSchema: z.object({
|
|
37
|
-
id: z.string().describe("
|
|
40
|
+
id: z.string().describe("Unique identifier (UUID) of the reflection to approve"),
|
|
38
41
|
}),
|
|
39
42
|
annotations: {
|
|
40
|
-
|
|
43
|
+
readOnlyHint: false,
|
|
44
|
+
destructiveHint: false,
|
|
45
|
+
idempotentHint: true,
|
|
46
|
+
openWorldHint: false,
|
|
41
47
|
},
|
|
42
48
|
}, async (args) => {
|
|
43
49
|
const response = await api("PUT", `/reflections/${args.id}/approve`);
|
|
@@ -51,12 +57,15 @@ export function registerReflectionsTools(server) {
|
|
|
51
57
|
// 3. Reject Reflection
|
|
52
58
|
server.registerTool("neuron_reject_reflection", {
|
|
53
59
|
title: "Reject Reflection",
|
|
54
|
-
description: "Reject a bot reflection to prevent it from being incorporated into the bot's behavior",
|
|
60
|
+
description: "Reject a bot-generated reflection to prevent it from being incorporated into the bot's learned behavior.",
|
|
55
61
|
inputSchema: z.object({
|
|
56
|
-
id: z.string().describe("
|
|
62
|
+
id: z.string().describe("Unique identifier (UUID) of the reflection to reject"),
|
|
57
63
|
}),
|
|
58
64
|
annotations: {
|
|
59
|
-
|
|
65
|
+
readOnlyHint: false,
|
|
66
|
+
destructiveHint: false,
|
|
67
|
+
idempotentHint: true,
|
|
68
|
+
openWorldHint: false,
|
|
60
69
|
},
|
|
61
70
|
}, async (args) => {
|
|
62
71
|
const response = await api("PUT", `/reflections/${args.id}/reject`);
|
|
@@ -70,12 +79,15 @@ export function registerReflectionsTools(server) {
|
|
|
70
79
|
// 4. Sync Reflections
|
|
71
80
|
server.registerTool("neuron_sync_reflections", {
|
|
72
81
|
title: "Sync Reflections",
|
|
73
|
-
description: "Synchronize
|
|
82
|
+
description: "Synchronize all approved reflections into the bot's active knowledge base, applying learned insights to future conversations.",
|
|
74
83
|
inputSchema: z.object({
|
|
75
|
-
botId: z.string().describe("
|
|
84
|
+
botId: z.string().describe("Unique identifier (UUID) of the bot to sync reflections for"),
|
|
76
85
|
}),
|
|
77
86
|
annotations: {
|
|
78
|
-
|
|
87
|
+
readOnlyHint: false,
|
|
88
|
+
destructiveHint: false,
|
|
89
|
+
idempotentHint: true,
|
|
90
|
+
openWorldHint: false,
|
|
79
91
|
},
|
|
80
92
|
}, async (args) => {
|
|
81
93
|
const response = await api("POST", `/reflections/bot/${args.botId}/sync`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reflections.js","sourceRoot":"","sources":["../../src/tools/reflections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"reflections.js","sourceRoot":"","sources":["../../src/tools/reflections.ts"],"names":[],"mappings":"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"}
|