neuron-mcp-server 1.0.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/LICENSE +21 -0
- package/README.md +178 -0
- package/dist/client.d.ts +34 -0
- package/dist/client.js +104 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +190 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/ai.d.ts +2 -0
- package/dist/tools/ai.js +25 -0
- package/dist/tools/ai.js.map +1 -0
- package/dist/tools/audit.d.ts +2 -0
- package/dist/tools/audit.js +40 -0
- package/dist/tools/audit.js.map +1 -0
- package/dist/tools/auth.d.ts +2 -0
- package/dist/tools/auth.js +348 -0
- package/dist/tools/auth.js.map +1 -0
- package/dist/tools/billing.d.ts +2 -0
- package/dist/tools/billing.js +51 -0
- package/dist/tools/billing.js.map +1 -0
- package/dist/tools/blog.d.ts +2 -0
- package/dist/tools/blog.js +174 -0
- package/dist/tools/blog.js.map +1 -0
- package/dist/tools/bot-api-keys.d.ts +2 -0
- package/dist/tools/bot-api-keys.js +60 -0
- package/dist/tools/bot-api-keys.js.map +1 -0
- package/dist/tools/bot-api.d.ts +2 -0
- package/dist/tools/bot-api.js +120 -0
- package/dist/tools/bot-api.js.map +1 -0
- package/dist/tools/bots.d.ts +2 -0
- package/dist/tools/bots.js +228 -0
- package/dist/tools/bots.js.map +1 -0
- package/dist/tools/broadcasts.d.ts +2 -0
- package/dist/tools/broadcasts.js +156 -0
- package/dist/tools/broadcasts.js.map +1 -0
- package/dist/tools/builtin-tools.d.ts +5 -0
- package/dist/tools/builtin-tools.js +81 -0
- package/dist/tools/builtin-tools.js.map +1 -0
- package/dist/tools/campaigns.d.ts +2 -0
- package/dist/tools/campaigns.js +277 -0
- package/dist/tools/campaigns.js.map +1 -0
- package/dist/tools/channels.d.ts +2 -0
- package/dist/tools/channels.js +334 -0
- package/dist/tools/channels.js.map +1 -0
- package/dist/tools/contact-lists.d.ts +2 -0
- package/dist/tools/contact-lists.js +214 -0
- package/dist/tools/contact-lists.js.map +1 -0
- package/dist/tools/contacts.d.ts +2 -0
- package/dist/tools/contacts.js +265 -0
- package/dist/tools/contacts.js.map +1 -0
- package/dist/tools/conversations.d.ts +5 -0
- package/dist/tools/conversations.js +270 -0
- package/dist/tools/conversations.js.map +1 -0
- package/dist/tools/knowledge-bases.d.ts +6 -0
- package/dist/tools/knowledge-bases.js +398 -0
- package/dist/tools/knowledge-bases.js.map +1 -0
- package/dist/tools/list-pool.d.ts +2 -0
- package/dist/tools/list-pool.js +120 -0
- package/dist/tools/list-pool.js.map +1 -0
- package/dist/tools/media.d.ts +2 -0
- package/dist/tools/media.js +39 -0
- package/dist/tools/media.js.map +1 -0
- package/dist/tools/newsletters.d.ts +2 -0
- package/dist/tools/newsletters.js +154 -0
- package/dist/tools/newsletters.js.map +1 -0
- package/dist/tools/organizations.d.ts +2 -0
- package/dist/tools/organizations.js +205 -0
- package/dist/tools/organizations.js.map +1 -0
- package/dist/tools/outbound-webhooks.d.ts +5 -0
- package/dist/tools/outbound-webhooks.js +143 -0
- package/dist/tools/outbound-webhooks.js.map +1 -0
- package/dist/tools/payouts.d.ts +2 -0
- package/dist/tools/payouts.js +86 -0
- package/dist/tools/payouts.js.map +1 -0
- package/dist/tools/pool.d.ts +2 -0
- package/dist/tools/pool.js +202 -0
- package/dist/tools/pool.js.map +1 -0
- package/dist/tools/reflections.d.ts +5 -0
- package/dist/tools/reflections.js +90 -0
- package/dist/tools/reflections.js.map +1 -0
- package/dist/tools/tools.d.ts +5 -0
- package/dist/tools/tools.js +174 -0
- package/dist/tools/tools.js.map +1 -0
- package/dist/tools/wallets.d.ts +2 -0
- package/dist/tools/wallets.js +68 -0
- package/dist/tools/wallets.js.map +1 -0
- package/dist/tools/webhooks.d.ts +5 -0
- package/dist/tools/webhooks.js +124 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { api, jsonResult, errorResult } from "../client.js";
|
|
3
|
+
export function registerNewsletterTools(server) {
|
|
4
|
+
// 1. List newsletters
|
|
5
|
+
server.registerTool("neuron_list_newsletters", {
|
|
6
|
+
title: "List Newsletters",
|
|
7
|
+
description: "List all WhatsApp Channel newsletters for the organization. Optionally filter by WhatsApp session channel ID.",
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
channelId: z.string().optional().describe("Filter newsletters by WhatsApp session channel ID"),
|
|
10
|
+
page: z.number().int().positive().optional().describe("Page number for pagination"),
|
|
11
|
+
limit: z.number().int().positive().optional().describe("Number of items per page"),
|
|
12
|
+
}),
|
|
13
|
+
annotations: { readOnlyHint: true },
|
|
14
|
+
}, async (args) => {
|
|
15
|
+
try {
|
|
16
|
+
const response = await api("GET", "/newsletters", undefined, {
|
|
17
|
+
channelId: args.channelId,
|
|
18
|
+
page: args.page,
|
|
19
|
+
limit: args.limit,
|
|
20
|
+
});
|
|
21
|
+
return jsonResult(response);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return errorResult(error);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
// 2. Create newsletter
|
|
28
|
+
server.registerTool("neuron_create_newsletter", {
|
|
29
|
+
title: "Create Newsletter",
|
|
30
|
+
description: "Create a new WhatsApp Channel (newsletter) for one-way broadcast updates. Requires a connected Baileys session.",
|
|
31
|
+
inputSchema: z.object({
|
|
32
|
+
channelId: z.string().describe("The WhatsApp session channel ID to create the newsletter on"),
|
|
33
|
+
name: z.string().describe("Name of the newsletter"),
|
|
34
|
+
description: z.string().optional().describe("Description of the newsletter"),
|
|
35
|
+
}),
|
|
36
|
+
}, async (args) => {
|
|
37
|
+
try {
|
|
38
|
+
const response = await api("POST", "/newsletters", args);
|
|
39
|
+
return jsonResult(response);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return errorResult(error);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
// 3. Get newsletter
|
|
46
|
+
server.registerTool("neuron_get_newsletter", {
|
|
47
|
+
title: "Get Newsletter",
|
|
48
|
+
description: "Get details of a specific WhatsApp Channel newsletter",
|
|
49
|
+
inputSchema: z.object({
|
|
50
|
+
id: z.string().describe("The unique identifier of the newsletter"),
|
|
51
|
+
}),
|
|
52
|
+
annotations: { readOnlyHint: true },
|
|
53
|
+
}, async (args) => {
|
|
54
|
+
try {
|
|
55
|
+
const response = await api("GET", `/newsletters/${args.id}`);
|
|
56
|
+
return jsonResult(response);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return errorResult(error);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
// 4. Update newsletter
|
|
63
|
+
server.registerTool("neuron_update_newsletter", {
|
|
64
|
+
title: "Update Newsletter",
|
|
65
|
+
description: "Update the name or description of a WhatsApp Channel newsletter",
|
|
66
|
+
inputSchema: z.object({
|
|
67
|
+
id: z.string().describe("The unique identifier of the newsletter to update"),
|
|
68
|
+
name: z.string().optional().describe("New name for the newsletter"),
|
|
69
|
+
description: z.string().optional().describe("New description for the newsletter"),
|
|
70
|
+
}),
|
|
71
|
+
}, async (args) => {
|
|
72
|
+
try {
|
|
73
|
+
const { id, ...updateData } = args;
|
|
74
|
+
const response = await api("PUT", `/newsletters/${id}`, updateData);
|
|
75
|
+
return jsonResult(response);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
return errorResult(error);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// 5. Delete newsletter
|
|
82
|
+
server.registerTool("neuron_delete_newsletter", {
|
|
83
|
+
title: "Delete Newsletter",
|
|
84
|
+
description: "Delete a WhatsApp Channel newsletter. This action cannot be undone.",
|
|
85
|
+
inputSchema: z.object({
|
|
86
|
+
id: z.string().describe("The unique identifier of the newsletter to delete"),
|
|
87
|
+
}),
|
|
88
|
+
}, async (args) => {
|
|
89
|
+
try {
|
|
90
|
+
const response = await api("DELETE", `/newsletters/${args.id}`);
|
|
91
|
+
return jsonResult(response);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
return errorResult(error);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
// 6. Post to newsletter
|
|
98
|
+
server.registerTool("neuron_post_to_newsletter", {
|
|
99
|
+
title: "Post to Newsletter",
|
|
100
|
+
description: "Post a message (text, image, video, or document) to a WhatsApp Channel newsletter. All subscribers will receive the message. Provide at least one of text or mediaUrl.",
|
|
101
|
+
inputSchema: z.object({
|
|
102
|
+
id: z.string().describe("The unique identifier of the newsletter"),
|
|
103
|
+
text: z.string().optional().describe("The message text or caption to post"),
|
|
104
|
+
messageType: z.enum(["text", "image", "video", "document"]).default("text").describe("The type of message to send"),
|
|
105
|
+
mediaUrl: z.string().optional().describe("URL of the media file to attach (image, video, or document)"),
|
|
106
|
+
}),
|
|
107
|
+
}, async (args) => {
|
|
108
|
+
try {
|
|
109
|
+
const body = {
|
|
110
|
+
text: args.text,
|
|
111
|
+
messageType: args.messageType,
|
|
112
|
+
mediaUrl: args.mediaUrl,
|
|
113
|
+
};
|
|
114
|
+
const response = await api("POST", `/newsletters/${args.id}/post`, body);
|
|
115
|
+
return jsonResult(response);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
return errorResult(error);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
// 7. Refresh newsletter metadata
|
|
122
|
+
server.registerTool("neuron_refresh_newsletter", {
|
|
123
|
+
title: "Refresh Newsletter",
|
|
124
|
+
description: "Re-fetch metadata (name, description, subscriber count) for a WhatsApp Channel newsletter from WhatsApp",
|
|
125
|
+
inputSchema: z.object({
|
|
126
|
+
id: z.string().describe("The unique identifier of the newsletter to refresh"),
|
|
127
|
+
}),
|
|
128
|
+
}, async (args) => {
|
|
129
|
+
try {
|
|
130
|
+
const response = await api("POST", `/newsletters/${args.id}/refresh`);
|
|
131
|
+
return jsonResult(response);
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
return errorResult(error);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
// 8. Sync newsletters from WhatsApp
|
|
138
|
+
server.registerTool("neuron_sync_newsletters", {
|
|
139
|
+
title: "Sync Newsletters",
|
|
140
|
+
description: "Sync/import WhatsApp Channels from a connected WhatsApp session into Neuron. This discovers channels created outside Neuron.",
|
|
141
|
+
inputSchema: z.object({
|
|
142
|
+
channelId: z.string().describe("The WhatsApp session channel ID to sync newsletters from"),
|
|
143
|
+
}),
|
|
144
|
+
}, async (args) => {
|
|
145
|
+
try {
|
|
146
|
+
const response = await api("POST", "/newsletters/sync", { channelId: args.channelId });
|
|
147
|
+
return jsonResult(response);
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
return errorResult(error);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=newsletters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newsletters.js","sourceRoot":"","sources":["../../src/tools/newsletters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { api, jsonResult, errorResult } from "../client.js";
|
|
3
|
+
export function registerOrganizationTools(server) {
|
|
4
|
+
// Get Organization
|
|
5
|
+
server.registerTool("neuron_get_organization", {
|
|
6
|
+
title: "Get Organization",
|
|
7
|
+
description: "Get details of a specific organization by ID",
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
orgId: z.string().describe("ID of the organization to retrieve"),
|
|
10
|
+
}),
|
|
11
|
+
annotations: {
|
|
12
|
+
readOnlyHint: true,
|
|
13
|
+
},
|
|
14
|
+
}, async (params) => {
|
|
15
|
+
try {
|
|
16
|
+
const result = await api("GET", `/organizations/${params.orgId}`);
|
|
17
|
+
return jsonResult(result);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
return errorResult(error);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
// Update Organization
|
|
24
|
+
server.registerTool("neuron_update_organization", {
|
|
25
|
+
title: "Update Organization",
|
|
26
|
+
description: "Update organization details such as name",
|
|
27
|
+
inputSchema: z.object({
|
|
28
|
+
orgId: z.string().describe("ID of the organization to update"),
|
|
29
|
+
name: z.string().optional().describe("New name for the organization"),
|
|
30
|
+
}),
|
|
31
|
+
annotations: {
|
|
32
|
+
destructiveHint: false,
|
|
33
|
+
},
|
|
34
|
+
}, async (params) => {
|
|
35
|
+
try {
|
|
36
|
+
const { orgId, ...body } = params;
|
|
37
|
+
const result = await api("PUT", `/organizations/${orgId}`, body);
|
|
38
|
+
return jsonResult(result);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
return errorResult(error);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
// Update WhatsApp Credentials
|
|
45
|
+
server.registerTool("neuron_update_whatsapp_credentials", {
|
|
46
|
+
title: "Update WhatsApp Credentials",
|
|
47
|
+
description: "Update WhatsApp Business API credentials for the organization",
|
|
48
|
+
inputSchema: z.object({
|
|
49
|
+
orgId: z.string().describe("ID of the organization"),
|
|
50
|
+
whatsappPhoneNumberId: z.string().describe("WhatsApp phone number ID from Meta Business"),
|
|
51
|
+
whatsappBusinessAccountId: z.string().describe("WhatsApp Business Account ID from Meta"),
|
|
52
|
+
whatsappAccessToken: z.string().describe("WhatsApp access token for API authentication"),
|
|
53
|
+
}),
|
|
54
|
+
annotations: {
|
|
55
|
+
destructiveHint: false,
|
|
56
|
+
},
|
|
57
|
+
}, async (params) => {
|
|
58
|
+
try {
|
|
59
|
+
const { orgId, ...body } = params;
|
|
60
|
+
const result = await api("PUT", `/organizations/${orgId}/whatsapp`, body);
|
|
61
|
+
return jsonResult(result);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
return errorResult(error);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
// Set Default Channel
|
|
68
|
+
server.registerTool("neuron_set_default_channel", {
|
|
69
|
+
title: "Set Default WhatsApp Channel",
|
|
70
|
+
description: "Set the default WhatsApp channel for the organization. Used by neuron_send_whatsapp for auto-resolving " +
|
|
71
|
+
"which channel to send through. Pass null to clear.",
|
|
72
|
+
inputSchema: z.object({
|
|
73
|
+
orgId: z.string().describe("ID of the organization"),
|
|
74
|
+
channelId: z.string().nullable().describe("Channel ID to set as default, or null to clear"),
|
|
75
|
+
}),
|
|
76
|
+
}, async (params) => {
|
|
77
|
+
try {
|
|
78
|
+
const result = await api("PUT", `/organizations/${params.orgId}/default-channel`, {
|
|
79
|
+
channelId: params.channelId,
|
|
80
|
+
});
|
|
81
|
+
return jsonResult(result);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
return errorResult(error);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
// List Members
|
|
88
|
+
server.registerTool("neuron_list_members", {
|
|
89
|
+
title: "List Organization Members",
|
|
90
|
+
description: "Get a list of all members in the organization",
|
|
91
|
+
inputSchema: z.object({
|
|
92
|
+
orgId: z.string().describe("ID of the organization"),
|
|
93
|
+
}),
|
|
94
|
+
annotations: {
|
|
95
|
+
readOnlyHint: true,
|
|
96
|
+
},
|
|
97
|
+
}, async (params) => {
|
|
98
|
+
try {
|
|
99
|
+
const result = await api("GET", `/organizations/${params.orgId}/members`);
|
|
100
|
+
return jsonResult(result);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
return errorResult(error);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
// Invite Member
|
|
107
|
+
server.registerTool("neuron_invite_member", {
|
|
108
|
+
title: "Invite Organization Member",
|
|
109
|
+
description: "Invite a new member to the organization with email, name, and optional role",
|
|
110
|
+
inputSchema: z.object({
|
|
111
|
+
orgId: z.string().describe("ID of the organization"),
|
|
112
|
+
email: z.string().email().describe("Email address of the member to invite"),
|
|
113
|
+
name: z.string().describe("Full name of the member"),
|
|
114
|
+
role: z.string().optional().describe("Role of the member (e.g., 'admin', 'agent', 'viewer')"),
|
|
115
|
+
canViewConversations: z.boolean().optional().describe("Whether the member can view conversations (default: true)"),
|
|
116
|
+
}),
|
|
117
|
+
annotations: {
|
|
118
|
+
destructiveHint: false,
|
|
119
|
+
},
|
|
120
|
+
}, async (params) => {
|
|
121
|
+
try {
|
|
122
|
+
const { orgId, ...body } = params;
|
|
123
|
+
const result = await api("POST", `/organizations/${orgId}/members`, body);
|
|
124
|
+
return jsonResult(result);
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
return errorResult(error);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
// List Invitations
|
|
131
|
+
server.registerTool("neuron_list_invitations", {
|
|
132
|
+
title: "List Invitations",
|
|
133
|
+
description: "List all pending invitations for the organization",
|
|
134
|
+
inputSchema: z.object({
|
|
135
|
+
orgId: z.string().describe("ID of the organization"),
|
|
136
|
+
}),
|
|
137
|
+
annotations: { readOnlyHint: true },
|
|
138
|
+
}, async (params) => {
|
|
139
|
+
try {
|
|
140
|
+
const result = await api("GET", `/organizations/${params.orgId}/invitations`);
|
|
141
|
+
return jsonResult(result);
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
return errorResult(error);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
// Revoke Invitation
|
|
148
|
+
server.registerTool("neuron_revoke_invitation", {
|
|
149
|
+
title: "Revoke Invitation",
|
|
150
|
+
description: "Revoke a pending invitation so it can no longer be accepted",
|
|
151
|
+
inputSchema: z.object({
|
|
152
|
+
orgId: z.string().describe("ID of the organization"),
|
|
153
|
+
invitationId: z.string().describe("ID of the invitation to revoke"),
|
|
154
|
+
}),
|
|
155
|
+
annotations: { destructiveHint: true },
|
|
156
|
+
}, async (params) => {
|
|
157
|
+
try {
|
|
158
|
+
const result = await api("DELETE", `/organizations/${params.orgId}/invitations/${params.invitationId}`);
|
|
159
|
+
return jsonResult(result);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
return errorResult(error);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
// Update Member Permissions
|
|
166
|
+
server.registerTool("neuron_update_member", {
|
|
167
|
+
title: "Update Member Permissions",
|
|
168
|
+
description: "Update a member's permissions such as conversation access",
|
|
169
|
+
inputSchema: z.object({
|
|
170
|
+
orgId: z.string().describe("ID of the organization"),
|
|
171
|
+
userId: z.string().describe("ID of the member to update"),
|
|
172
|
+
canViewConversations: z.boolean().describe("Whether the member can view conversations"),
|
|
173
|
+
}),
|
|
174
|
+
}, async (params) => {
|
|
175
|
+
try {
|
|
176
|
+
const { orgId, userId, ...body } = params;
|
|
177
|
+
const result = await api("PATCH", `/organizations/${orgId}/members/${userId}`, body);
|
|
178
|
+
return jsonResult(result);
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
return errorResult(error);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
// Remove Member
|
|
185
|
+
server.registerTool("neuron_remove_member", {
|
|
186
|
+
title: "Remove Organization Member",
|
|
187
|
+
description: "Remove a member from the organization",
|
|
188
|
+
inputSchema: z.object({
|
|
189
|
+
orgId: z.string().describe("ID of the organization"),
|
|
190
|
+
userId: z.string().describe("ID of the user to remove from the organization"),
|
|
191
|
+
}),
|
|
192
|
+
annotations: {
|
|
193
|
+
destructiveHint: true,
|
|
194
|
+
},
|
|
195
|
+
}, async (params) => {
|
|
196
|
+
try {
|
|
197
|
+
const result = await api("DELETE", `/organizations/${params.orgId}/members/${params.userId}`);
|
|
198
|
+
return jsonResult(result);
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
return errorResult(error);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=organizations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organizations.js","sourceRoot":"","sources":["../../src/tools/organizations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { api, jsonResult, errorResult } from "../client.js";
|
|
3
|
+
const eventTypes = [
|
|
4
|
+
"message.created",
|
|
5
|
+
"message.assistant",
|
|
6
|
+
"conversation.created",
|
|
7
|
+
"conversation.escalated",
|
|
8
|
+
"conversation.closed",
|
|
9
|
+
"bot.paused",
|
|
10
|
+
"bot.resumed",
|
|
11
|
+
];
|
|
12
|
+
/**
|
|
13
|
+
* Register outbound webhook tools (event-driven webhooks that fire on bot events)
|
|
14
|
+
*/
|
|
15
|
+
export function registerOutboundWebhookTools(server) {
|
|
16
|
+
// 1. Create Outbound Webhook
|
|
17
|
+
server.registerTool("neuron_create_outbound_webhook", {
|
|
18
|
+
title: "Create Outbound Webhook",
|
|
19
|
+
description: "Create a new outbound webhook that fires HTTP requests when bot events occur. " +
|
|
20
|
+
"Events: message.created, message.assistant, conversation.created, conversation.escalated, " +
|
|
21
|
+
"conversation.closed, bot.paused, bot.resumed.",
|
|
22
|
+
inputSchema: z.object({
|
|
23
|
+
botId: z.string().describe("The ID of the bot to create the outbound webhook for"),
|
|
24
|
+
name: z.string().describe("Name of the webhook"),
|
|
25
|
+
url: z.string().describe("The URL to send webhook events to"),
|
|
26
|
+
eventTypes: z
|
|
27
|
+
.array(z.enum(eventTypes))
|
|
28
|
+
.describe("Which events should trigger this webhook"),
|
|
29
|
+
filterPrompt: z
|
|
30
|
+
.string()
|
|
31
|
+
.optional()
|
|
32
|
+
.describe("Optional LLM prompt to filter which events are sent (e.g. only forward escalations)"),
|
|
33
|
+
}),
|
|
34
|
+
annotations: {
|
|
35
|
+
openWorldHint: true,
|
|
36
|
+
},
|
|
37
|
+
}, async (args) => {
|
|
38
|
+
const { botId, ...body } = args;
|
|
39
|
+
const response = await api("POST", `/webhooks/outbound/bot/${botId}`, body);
|
|
40
|
+
if (response.success) {
|
|
41
|
+
return jsonResult(response.data);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return errorResult(response.error || "Failed to create outbound webhook");
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
// 2. List Outbound Webhooks
|
|
48
|
+
server.registerTool("neuron_list_outbound_webhooks", {
|
|
49
|
+
title: "List Outbound Webhooks",
|
|
50
|
+
description: "List all outbound webhooks configured for a specific bot",
|
|
51
|
+
inputSchema: z.object({
|
|
52
|
+
botId: z.string().describe("The ID of the bot to list outbound webhooks for"),
|
|
53
|
+
}),
|
|
54
|
+
annotations: {
|
|
55
|
+
readOnlyHint: true,
|
|
56
|
+
openWorldHint: true,
|
|
57
|
+
},
|
|
58
|
+
}, async (args) => {
|
|
59
|
+
const response = await api("GET", `/webhooks/outbound/bot/${args.botId}`);
|
|
60
|
+
if (response.success) {
|
|
61
|
+
return jsonResult(response.data);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return errorResult(response.error || "Failed to list outbound webhooks");
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
// 3. Update Outbound Webhook
|
|
68
|
+
server.registerTool("neuron_update_outbound_webhook", {
|
|
69
|
+
title: "Update Outbound Webhook",
|
|
70
|
+
description: "Update an existing outbound webhook configuration",
|
|
71
|
+
inputSchema: z.object({
|
|
72
|
+
id: z.string().describe("The ID of the outbound webhook to update"),
|
|
73
|
+
name: z.string().optional().describe("Updated name"),
|
|
74
|
+
url: z.string().optional().describe("Updated URL"),
|
|
75
|
+
eventTypes: z
|
|
76
|
+
.array(z.enum(eventTypes))
|
|
77
|
+
.optional()
|
|
78
|
+
.describe("Updated event types"),
|
|
79
|
+
filterPrompt: z.string().optional().describe("Updated filter prompt"),
|
|
80
|
+
}),
|
|
81
|
+
annotations: {
|
|
82
|
+
openWorldHint: true,
|
|
83
|
+
},
|
|
84
|
+
}, async (args) => {
|
|
85
|
+
const { id, ...body } = args;
|
|
86
|
+
const response = await api("PUT", `/webhooks/outbound/${id}`, body);
|
|
87
|
+
if (response.success) {
|
|
88
|
+
return jsonResult(response.data);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
return errorResult(response.error || "Failed to update outbound webhook");
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
// 4. Delete Outbound Webhook
|
|
95
|
+
server.registerTool("neuron_delete_outbound_webhook", {
|
|
96
|
+
title: "Delete Outbound Webhook",
|
|
97
|
+
description: "Delete an outbound webhook",
|
|
98
|
+
inputSchema: z.object({
|
|
99
|
+
id: z.string().describe("The ID of the outbound webhook to delete"),
|
|
100
|
+
}),
|
|
101
|
+
annotations: {
|
|
102
|
+
destructiveHint: true,
|
|
103
|
+
openWorldHint: true,
|
|
104
|
+
},
|
|
105
|
+
}, async (args) => {
|
|
106
|
+
const response = await api("DELETE", `/webhooks/outbound/${args.id}`);
|
|
107
|
+
if (response.success) {
|
|
108
|
+
return jsonResult(response.data || { message: "Outbound webhook deleted successfully" });
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
return errorResult(response.error || "Failed to delete outbound webhook");
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
// 5. Get Outbound Webhook Logs
|
|
115
|
+
server.registerTool("neuron_get_outbound_webhook_logs", {
|
|
116
|
+
title: "Get Outbound Webhook Logs",
|
|
117
|
+
description: "Retrieve delivery logs for an outbound webhook to monitor and debug event delivery",
|
|
118
|
+
inputSchema: z.object({
|
|
119
|
+
id: z.string().describe("The ID of the outbound webhook to get logs for"),
|
|
120
|
+
page: z.number().optional().describe("Page number for pagination (default: 1)"),
|
|
121
|
+
limit: z.number().optional().describe("Number of logs per page (default: 20)"),
|
|
122
|
+
}),
|
|
123
|
+
annotations: {
|
|
124
|
+
readOnlyHint: true,
|
|
125
|
+
openWorldHint: true,
|
|
126
|
+
},
|
|
127
|
+
}, async (args) => {
|
|
128
|
+
const { id, page, limit } = args;
|
|
129
|
+
const params = {};
|
|
130
|
+
if (page !== undefined)
|
|
131
|
+
params.page = String(page);
|
|
132
|
+
if (limit !== undefined)
|
|
133
|
+
params.limit = String(limit);
|
|
134
|
+
const response = await api("GET", `/webhooks/outbound/${id}/logs`, undefined, params);
|
|
135
|
+
if (response.success) {
|
|
136
|
+
return jsonResult(response.data);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
return errorResult(response.error || "Failed to get outbound webhook logs");
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=outbound-webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbound-webhooks.js","sourceRoot":"","sources":["../../src/tools/outbound-webhooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { api, jsonResult, errorResult } from "../client.js";
|
|
3
|
+
export function registerPayoutTools(server) {
|
|
4
|
+
server.registerTool("neuron_verify_bank_account", {
|
|
5
|
+
title: "Verify Bank Account",
|
|
6
|
+
description: "Verify a Nigerian bank account number via Paystack",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
bankCode: z.string().describe("Bank code (e.g. '058' for GTBank)"),
|
|
9
|
+
accountNumber: z.string().describe("10-digit bank account number"),
|
|
10
|
+
}),
|
|
11
|
+
annotations: { readOnlyHint: true },
|
|
12
|
+
}, async (params) => {
|
|
13
|
+
try {
|
|
14
|
+
const result = await api("POST", "/payouts/verify-account", params);
|
|
15
|
+
return jsonResult(result);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
return errorResult(error);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
server.registerTool("neuron_save_bank_account", {
|
|
22
|
+
title: "Save Bank Account",
|
|
23
|
+
description: "Save a verified bank account for payouts",
|
|
24
|
+
inputSchema: z.object({
|
|
25
|
+
bankCode: z.string().describe("Bank code"),
|
|
26
|
+
bankName: z.string().describe("Bank name (e.g. 'Guaranty Trust Bank')"),
|
|
27
|
+
accountNumber: z.string().describe("10-digit account number"),
|
|
28
|
+
accountName: z.string().describe("Account holder name from verification"),
|
|
29
|
+
}),
|
|
30
|
+
}, async (params) => {
|
|
31
|
+
try {
|
|
32
|
+
const result = await api("POST", "/payouts/bank-account", params);
|
|
33
|
+
return jsonResult(result);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
return errorResult(error);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
server.registerTool("neuron_get_bank_account", {
|
|
40
|
+
title: "Get Bank Account",
|
|
41
|
+
description: "Get the saved bank account for payouts",
|
|
42
|
+
inputSchema: z.object({}),
|
|
43
|
+
annotations: { readOnlyHint: true },
|
|
44
|
+
}, async () => {
|
|
45
|
+
try {
|
|
46
|
+
const result = await api("GET", "/payouts/bank-account");
|
|
47
|
+
return jsonResult(result);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return errorResult(error);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
server.registerTool("neuron_request_payout", {
|
|
54
|
+
title: "Request Payout",
|
|
55
|
+
description: "Request a payout from your wallet to your saved bank account",
|
|
56
|
+
inputSchema: z.object({
|
|
57
|
+
amount: z.number().int().positive().describe("Amount in kobo (e.g. 100000 = ₦1,000)"),
|
|
58
|
+
}),
|
|
59
|
+
}, async (params) => {
|
|
60
|
+
try {
|
|
61
|
+
const result = await api("POST", "/payouts/request", params);
|
|
62
|
+
return jsonResult(result);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
return errorResult(error);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
server.registerTool("neuron_list_payouts", {
|
|
69
|
+
title: "List Payouts",
|
|
70
|
+
description: "List payout history",
|
|
71
|
+
inputSchema: z.object({
|
|
72
|
+
page: z.number().int().positive().optional(),
|
|
73
|
+
limit: z.number().int().positive().optional(),
|
|
74
|
+
}),
|
|
75
|
+
annotations: { readOnlyHint: true },
|
|
76
|
+
}, async (params) => {
|
|
77
|
+
try {
|
|
78
|
+
const result = await api("GET", "/payouts", undefined, params);
|
|
79
|
+
return jsonResult(result);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
return errorResult(error);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=payouts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payouts.js","sourceRoot":"","sources":["../../src/tools/payouts.ts"],"names":[],"mappings":"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"}
|