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.
Files changed (90) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +178 -0
  3. package/dist/client.d.ts +34 -0
  4. package/dist/client.js +104 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/index.d.ts +20 -0
  7. package/dist/index.js +190 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/tools/ai.d.ts +2 -0
  10. package/dist/tools/ai.js +25 -0
  11. package/dist/tools/ai.js.map +1 -0
  12. package/dist/tools/audit.d.ts +2 -0
  13. package/dist/tools/audit.js +40 -0
  14. package/dist/tools/audit.js.map +1 -0
  15. package/dist/tools/auth.d.ts +2 -0
  16. package/dist/tools/auth.js +348 -0
  17. package/dist/tools/auth.js.map +1 -0
  18. package/dist/tools/billing.d.ts +2 -0
  19. package/dist/tools/billing.js +51 -0
  20. package/dist/tools/billing.js.map +1 -0
  21. package/dist/tools/blog.d.ts +2 -0
  22. package/dist/tools/blog.js +174 -0
  23. package/dist/tools/blog.js.map +1 -0
  24. package/dist/tools/bot-api-keys.d.ts +2 -0
  25. package/dist/tools/bot-api-keys.js +60 -0
  26. package/dist/tools/bot-api-keys.js.map +1 -0
  27. package/dist/tools/bot-api.d.ts +2 -0
  28. package/dist/tools/bot-api.js +120 -0
  29. package/dist/tools/bot-api.js.map +1 -0
  30. package/dist/tools/bots.d.ts +2 -0
  31. package/dist/tools/bots.js +228 -0
  32. package/dist/tools/bots.js.map +1 -0
  33. package/dist/tools/broadcasts.d.ts +2 -0
  34. package/dist/tools/broadcasts.js +156 -0
  35. package/dist/tools/broadcasts.js.map +1 -0
  36. package/dist/tools/builtin-tools.d.ts +5 -0
  37. package/dist/tools/builtin-tools.js +81 -0
  38. package/dist/tools/builtin-tools.js.map +1 -0
  39. package/dist/tools/campaigns.d.ts +2 -0
  40. package/dist/tools/campaigns.js +277 -0
  41. package/dist/tools/campaigns.js.map +1 -0
  42. package/dist/tools/channels.d.ts +2 -0
  43. package/dist/tools/channels.js +334 -0
  44. package/dist/tools/channels.js.map +1 -0
  45. package/dist/tools/contact-lists.d.ts +2 -0
  46. package/dist/tools/contact-lists.js +214 -0
  47. package/dist/tools/contact-lists.js.map +1 -0
  48. package/dist/tools/contacts.d.ts +2 -0
  49. package/dist/tools/contacts.js +265 -0
  50. package/dist/tools/contacts.js.map +1 -0
  51. package/dist/tools/conversations.d.ts +5 -0
  52. package/dist/tools/conversations.js +270 -0
  53. package/dist/tools/conversations.js.map +1 -0
  54. package/dist/tools/knowledge-bases.d.ts +6 -0
  55. package/dist/tools/knowledge-bases.js +398 -0
  56. package/dist/tools/knowledge-bases.js.map +1 -0
  57. package/dist/tools/list-pool.d.ts +2 -0
  58. package/dist/tools/list-pool.js +120 -0
  59. package/dist/tools/list-pool.js.map +1 -0
  60. package/dist/tools/media.d.ts +2 -0
  61. package/dist/tools/media.js +39 -0
  62. package/dist/tools/media.js.map +1 -0
  63. package/dist/tools/newsletters.d.ts +2 -0
  64. package/dist/tools/newsletters.js +154 -0
  65. package/dist/tools/newsletters.js.map +1 -0
  66. package/dist/tools/organizations.d.ts +2 -0
  67. package/dist/tools/organizations.js +205 -0
  68. package/dist/tools/organizations.js.map +1 -0
  69. package/dist/tools/outbound-webhooks.d.ts +5 -0
  70. package/dist/tools/outbound-webhooks.js +143 -0
  71. package/dist/tools/outbound-webhooks.js.map +1 -0
  72. package/dist/tools/payouts.d.ts +2 -0
  73. package/dist/tools/payouts.js +86 -0
  74. package/dist/tools/payouts.js.map +1 -0
  75. package/dist/tools/pool.d.ts +2 -0
  76. package/dist/tools/pool.js +202 -0
  77. package/dist/tools/pool.js.map +1 -0
  78. package/dist/tools/reflections.d.ts +5 -0
  79. package/dist/tools/reflections.js +90 -0
  80. package/dist/tools/reflections.js.map +1 -0
  81. package/dist/tools/tools.d.ts +5 -0
  82. package/dist/tools/tools.js +174 -0
  83. package/dist/tools/tools.js.map +1 -0
  84. package/dist/tools/wallets.d.ts +2 -0
  85. package/dist/tools/wallets.js +68 -0
  86. package/dist/tools/wallets.js.map +1 -0
  87. package/dist/tools/webhooks.d.ts +5 -0
  88. package/dist/tools/webhooks.js +124 -0
  89. package/dist/tools/webhooks.js.map +1 -0
  90. package/package.json +61 -0
@@ -0,0 +1,265 @@
1
+ import { z } from "zod";
2
+ import { api, jsonResult, errorResult, getAuthToken } from "../client.js";
3
+ export function registerContactsTools(server) {
4
+ // List contacts
5
+ server.registerTool("neuron_list_contacts", {
6
+ title: "List Contacts",
7
+ description: "List contacts with optional filtering by search term, tag, and pagination",
8
+ inputSchema: z.object({
9
+ search: z.string().optional().describe("Search term to filter contacts by name, phone, or email"),
10
+ tag: z.string().optional().describe("Filter contacts by tag"),
11
+ page: z.number().int().positive().optional().describe("Page number for pagination"),
12
+ limit: z.number().int().positive().optional().describe("Number of contacts per page"),
13
+ }),
14
+ annotations: { readOnlyHint: true },
15
+ }, async (params) => {
16
+ try {
17
+ const result = await api("GET", "/contacts", undefined, {
18
+ search: params.search,
19
+ tag: params.tag,
20
+ page: params.page,
21
+ limit: params.limit,
22
+ });
23
+ return jsonResult(result);
24
+ }
25
+ catch (error) {
26
+ return errorResult(error);
27
+ }
28
+ });
29
+ // Search contacts
30
+ server.registerTool("neuron_search_contacts", {
31
+ title: "Search Contacts",
32
+ description: "Search contacts by a query string across name, phone, and email fields",
33
+ inputSchema: z.object({
34
+ q: z.string().describe("Search query string"),
35
+ }),
36
+ annotations: { readOnlyHint: true },
37
+ }, async (params) => {
38
+ try {
39
+ const result = await api("GET", "/contacts/search", undefined, { q: params.q });
40
+ return jsonResult(result);
41
+ }
42
+ catch (error) {
43
+ return errorResult(error);
44
+ }
45
+ });
46
+ // Get contact
47
+ server.registerTool("neuron_get_contact", {
48
+ title: "Get Contact",
49
+ description: "Get detailed information about a specific contact by ID",
50
+ inputSchema: z.object({
51
+ id: z.string().describe("The unique identifier of the contact"),
52
+ }),
53
+ annotations: { readOnlyHint: true },
54
+ }, async (params) => {
55
+ try {
56
+ const result = await api("GET", `/contacts/${params.id}`);
57
+ return jsonResult(result);
58
+ }
59
+ catch (error) {
60
+ return errorResult(error);
61
+ }
62
+ });
63
+ // Create contact
64
+ server.registerTool("neuron_create_contact", {
65
+ title: "Create Contact",
66
+ description: "Create a new contact. If notes are provided, they are saved as a structured note entry with source tracking.",
67
+ inputSchema: z.object({
68
+ name: z.string().describe("Full name of the contact"),
69
+ phone: z.string().describe("Phone number of the contact"),
70
+ email: z.string().optional().describe("Email address of the contact"),
71
+ tags: z.array(z.string()).optional().describe("Tags to categorize the contact"),
72
+ notes: z.string().optional().describe("Additional notes about the contact"),
73
+ }),
74
+ }, async (params) => {
75
+ try {
76
+ const result = await api("POST", "/contacts", params);
77
+ return jsonResult(result);
78
+ }
79
+ catch (error) {
80
+ return errorResult(error);
81
+ }
82
+ });
83
+ // Update contact
84
+ server.registerTool("neuron_update_contact", {
85
+ title: "Update Contact",
86
+ description: "Update an existing contact. If notes are provided, they are added as a new structured note entry (does not overwrite existing notes).",
87
+ inputSchema: z.object({
88
+ id: z.string().describe("The unique identifier of the contact to update"),
89
+ name: z.string().optional().describe("New name for the contact"),
90
+ phone: z.string().optional().describe("New phone number for the contact"),
91
+ email: z.string().optional().describe("New email address for the contact"),
92
+ tags: z.array(z.string()).optional().describe("New tags for the contact"),
93
+ notes: z.string().optional().describe("New notes about the contact"),
94
+ }),
95
+ }, async (params) => {
96
+ try {
97
+ const { id, ...body } = params;
98
+ const result = await api("PUT", `/contacts/${id}`, body);
99
+ return jsonResult(result);
100
+ }
101
+ catch (error) {
102
+ return errorResult(error);
103
+ }
104
+ });
105
+ // Delete contact
106
+ server.registerTool("neuron_delete_contact", {
107
+ title: "Delete Contact",
108
+ description: "Permanently delete a contact. This action cannot be undone.",
109
+ inputSchema: z.object({
110
+ id: z.string().describe("The unique identifier of the contact to delete"),
111
+ }),
112
+ annotations: { destructiveHint: true },
113
+ }, async (params) => {
114
+ try {
115
+ const result = await api("DELETE", `/contacts/${params.id}`);
116
+ return jsonResult(result);
117
+ }
118
+ catch (error) {
119
+ return errorResult(error);
120
+ }
121
+ });
122
+ // Export contacts
123
+ server.registerTool("neuron_export_contacts", {
124
+ title: "Export Contacts",
125
+ description: "Export all contacts from the system",
126
+ inputSchema: z.object({}),
127
+ annotations: { readOnlyHint: true },
128
+ }, async () => {
129
+ try {
130
+ const result = await api("GET", "/contacts/export");
131
+ return jsonResult(result);
132
+ }
133
+ catch (error) {
134
+ return errorResult(error);
135
+ }
136
+ });
137
+ // Import contacts
138
+ server.registerTool("neuron_import_contacts", {
139
+ title: "Import Contacts",
140
+ description: "Import multiple contacts at once. Provide an array of contact objects.",
141
+ inputSchema: z.object({
142
+ contacts: z.array(z.object({
143
+ name: z.string().describe("Full name of the contact"),
144
+ phone: z.string().describe("Phone number of the contact"),
145
+ email: z.string().optional().describe("Email address"),
146
+ tags: z.array(z.string()).optional().describe("Tags to categorize the contact"),
147
+ notes: z.string().optional().describe("Additional notes"),
148
+ })).describe("Array of contacts to import"),
149
+ }),
150
+ }, async (params) => {
151
+ try {
152
+ const result = await api("POST", "/contacts/import", { contacts: params.contacts });
153
+ return jsonResult(result);
154
+ }
155
+ catch (error) {
156
+ return errorResult(error);
157
+ }
158
+ });
159
+ // Populate contacts
160
+ server.registerTool("neuron_populate_contacts", {
161
+ title: "Populate Contacts",
162
+ description: "Populate contacts with additional data from connected channels",
163
+ inputSchema: z.object({}),
164
+ }, async () => {
165
+ try {
166
+ const result = await api("POST", "/contacts/populate");
167
+ return jsonResult(result);
168
+ }
169
+ catch (error) {
170
+ return errorResult(error);
171
+ }
172
+ });
173
+ // Sync WhatsApp contacts
174
+ server.registerTool("neuron_sync_whatsapp_contacts", {
175
+ title: "Sync WhatsApp Contacts",
176
+ description: "Synchronize contacts from connected WhatsApp channels into the contacts database",
177
+ inputSchema: z.object({}),
178
+ }, async () => {
179
+ try {
180
+ const result = await api("POST", "/contacts/sync-whatsapp");
181
+ return jsonResult(result);
182
+ }
183
+ catch (error) {
184
+ return errorResult(error);
185
+ }
186
+ });
187
+ // Semantic search contacts
188
+ server.registerTool("neuron_semantic_search_contacts", {
189
+ title: "Semantic Search Contacts",
190
+ description: "Search contacts using natural language AI-powered semantic search. Finds contacts based on the meaning of their notes — skills, services, schedules, preferences, etc. Returns ranked results with relevance scores and AI-generated match reasons.",
191
+ inputSchema: z.object({
192
+ query: z.string().describe("Natural language search query (e.g. 'who can deliver to Lagos on Monday?')"),
193
+ limit: z.number().int().positive().max(20).optional().describe("Maximum number of results to return (default 10, max 20)"),
194
+ }),
195
+ annotations: { readOnlyHint: true },
196
+ }, async (params) => {
197
+ try {
198
+ const queryParams = { q: params.query };
199
+ if (params.limit)
200
+ queryParams.limit = params.limit;
201
+ const result = await api("GET", "/contacts/semantic-search", undefined, queryParams);
202
+ return jsonResult(result);
203
+ }
204
+ catch (error) {
205
+ return errorResult(error);
206
+ }
207
+ });
208
+ // Audio-to-contact extraction
209
+ server.registerTool("neuron_audio_contact", {
210
+ title: "Extract Contact from Audio",
211
+ description: "Transcribe an audio recording and extract contact information (name, phone, email, notes, tags). " +
212
+ "Auto-saves the contact. Provide base64-encoded audio data.",
213
+ inputSchema: z.object({
214
+ audioBase64: z.string().describe("Base64-encoded audio data"),
215
+ audioFormat: z
216
+ .string()
217
+ .optional()
218
+ .default("webm")
219
+ .describe("Audio format hint (default: webm)"),
220
+ }),
221
+ }, async (params) => {
222
+ try {
223
+ // Decode base64 to buffer and create a File-like object for the API
224
+ const buffer = Buffer.from(params.audioBase64, "base64");
225
+ const blob = new Blob([buffer], { type: `audio/${params.audioFormat || "webm"}` });
226
+ // Create FormData and send to extract-audio endpoint
227
+ const formData = new FormData();
228
+ formData.append("audio", blob, `recording.${params.audioFormat || "webm"}`);
229
+ // Use raw fetch since api() doesn't handle FormData
230
+ const baseUrl = process.env.NEURON_API_URL || "https://api.neuron.ng";
231
+ const response = await fetch(`${baseUrl}/api/v1/contacts/extract-audio`, {
232
+ method: "POST",
233
+ headers: {
234
+ Authorization: `Bearer ${getAuthToken()}`,
235
+ },
236
+ body: formData,
237
+ });
238
+ const extractResult = await response.json();
239
+ if (!extractResult.success || extractResult.data?.extracted?.error) {
240
+ return errorResult(new Error(extractResult.data?.extracted?.error || extractResult.error?.message || "Extraction failed"));
241
+ }
242
+ const { extracted, transcript } = extractResult.data;
243
+ // Auto-save the contact
244
+ const saveResult = await api("POST", "/contacts", {
245
+ name: extracted.name,
246
+ phone: extracted.phone,
247
+ email: extracted.email,
248
+ tags: extracted.tags || [],
249
+ notes: extracted.notes,
250
+ });
251
+ return jsonResult({
252
+ success: true,
253
+ data: {
254
+ transcript,
255
+ extracted,
256
+ contact: saveResult.data,
257
+ },
258
+ });
259
+ }
260
+ catch (error) {
261
+ return errorResult(error);
262
+ }
263
+ });
264
+ }
265
+ //# sourceMappingURL=contacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/tools/contacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /**
3
+ * Register conversation-related MCP tools
4
+ */
5
+ export declare function registerConversationTools(server: McpServer): void;
@@ -0,0 +1,270 @@
1
+ import { z } from "zod";
2
+ import { api, jsonResult, errorResult } from "../client.js";
3
+ /**
4
+ * Register conversation-related MCP tools
5
+ */
6
+ export function registerConversationTools(server) {
7
+ // List conversations for a bot
8
+ server.registerTool("neuron_list_conversations", {
9
+ title: "List Conversations",
10
+ description: "Retrieve a list of conversations for a specific bot with optional filtering by status and pagination",
11
+ inputSchema: z.object({
12
+ botId: z.string().describe("The unique identifier of the bot"),
13
+ status: z.string().optional().describe("Filter conversations by status (e.g., 'active', 'closed')"),
14
+ cursor: z.string().optional().describe("Pagination cursor for retrieving the next page of results"),
15
+ limit: z.number().int().positive().optional().describe("Maximum number of conversations to return per page"),
16
+ }),
17
+ annotations: {
18
+ readOnlyHint: true,
19
+ destructiveHint: false,
20
+ idempotentHint: true,
21
+ openWorldHint: false,
22
+ },
23
+ }, async (params) => {
24
+ try {
25
+ const result = await api("GET", `conversations/bot/${params.botId}`, undefined, {
26
+ status: params.status,
27
+ cursor: params.cursor,
28
+ limit: params.limit,
29
+ });
30
+ return jsonResult(result);
31
+ }
32
+ catch (error) {
33
+ return errorResult(error);
34
+ }
35
+ });
36
+ // Get a specific conversation
37
+ server.registerTool("neuron_get_conversation", {
38
+ title: "Get Conversation",
39
+ description: "Retrieve detailed information about a specific conversation by its ID",
40
+ inputSchema: z.object({
41
+ id: z.string().describe("The unique identifier of the conversation"),
42
+ }),
43
+ annotations: {
44
+ readOnlyHint: true,
45
+ destructiveHint: false,
46
+ idempotentHint: true,
47
+ openWorldHint: false,
48
+ },
49
+ }, async (params) => {
50
+ try {
51
+ const result = await api("GET", `conversations/${params.id}`);
52
+ return jsonResult(result);
53
+ }
54
+ catch (error) {
55
+ return errorResult(error);
56
+ }
57
+ });
58
+ // Get messages from a conversation
59
+ server.registerTool("neuron_get_messages", {
60
+ title: "Get Conversation Messages",
61
+ description: "Retrieve messages from a specific conversation with optional pagination",
62
+ inputSchema: z.object({
63
+ id: z.string().describe("The unique identifier of the conversation"),
64
+ cursor: z.string().optional().describe("Pagination cursor for retrieving the next page of messages"),
65
+ limit: z.number().int().positive().optional().describe("Maximum number of messages to return per page"),
66
+ }),
67
+ annotations: {
68
+ readOnlyHint: true,
69
+ destructiveHint: false,
70
+ idempotentHint: true,
71
+ openWorldHint: false,
72
+ },
73
+ }, async (params) => {
74
+ try {
75
+ const result = await api("GET", `conversations/${params.id}/messages`, undefined, {
76
+ cursor: params.cursor,
77
+ limit: params.limit,
78
+ });
79
+ return jsonResult(result);
80
+ }
81
+ catch (error) {
82
+ return errorResult(error);
83
+ }
84
+ });
85
+ // Takeover a conversation
86
+ server.registerTool("neuron_takeover_conversation", {
87
+ title: "Takeover Conversation",
88
+ description: "Take over a conversation, transferring control from the bot to a human agent",
89
+ inputSchema: z.object({
90
+ id: z.string().describe("The unique identifier of the conversation to take over"),
91
+ }),
92
+ annotations: {
93
+ readOnlyHint: false,
94
+ destructiveHint: false,
95
+ idempotentHint: true,
96
+ openWorldHint: false,
97
+ },
98
+ }, async (params) => {
99
+ try {
100
+ const result = await api("POST", `conversations/${params.id}/takeover`);
101
+ return jsonResult(result);
102
+ }
103
+ catch (error) {
104
+ return errorResult(error);
105
+ }
106
+ });
107
+ // Release a conversation
108
+ server.registerTool("neuron_release_conversation", {
109
+ title: "Release Conversation",
110
+ description: "Release a conversation back to the bot, returning control from a human agent",
111
+ inputSchema: z.object({
112
+ id: z.string().describe("The unique identifier of the conversation to release"),
113
+ }),
114
+ annotations: {
115
+ readOnlyHint: false,
116
+ destructiveHint: false,
117
+ idempotentHint: true,
118
+ openWorldHint: false,
119
+ },
120
+ }, async (params) => {
121
+ try {
122
+ const result = await api("POST", `conversations/${params.id}/release`);
123
+ return jsonResult(result);
124
+ }
125
+ catch (error) {
126
+ return errorResult(error);
127
+ }
128
+ });
129
+ // Send a message to a conversation
130
+ server.registerTool("neuron_send_message", {
131
+ title: "Send Message",
132
+ description: "Send a message to a specific conversation",
133
+ inputSchema: z.object({
134
+ id: z.string().describe("The unique identifier of the conversation"),
135
+ content: z.string().describe("The message content to send"),
136
+ messageType: z.string().optional().describe("Type of message (e.g., 'text', 'image', 'document'). Defaults to 'text'."),
137
+ mediaUrl: z.string().optional().describe("URL of media to attach (for image/document message types)"),
138
+ }),
139
+ annotations: {
140
+ readOnlyHint: false,
141
+ destructiveHint: false,
142
+ idempotentHint: false,
143
+ openWorldHint: false,
144
+ },
145
+ }, async (params) => {
146
+ try {
147
+ const body = { content: params.content };
148
+ if (params.messageType)
149
+ body.messageType = params.messageType;
150
+ if (params.mediaUrl)
151
+ body.mediaUrl = params.mediaUrl;
152
+ const result = await api("POST", `conversations/${params.id}/send`, body);
153
+ return jsonResult(result);
154
+ }
155
+ catch (error) {
156
+ return errorResult(error);
157
+ }
158
+ });
159
+ // Compose a new message (start new conversation)
160
+ server.registerTool("neuron_compose_message", {
161
+ title: "Compose Message",
162
+ description: "Compose and send a new message to a phone number, starting a new conversation if one does not exist",
163
+ inputSchema: z.object({
164
+ channelId: z.string().describe("ID of the WhatsApp channel to send through"),
165
+ to: z.string().describe("Recipient phone number"),
166
+ text: z.string().describe("Message text content"),
167
+ messageType: z.string().optional().describe("Type of message (e.g., 'text', 'image', 'document')"),
168
+ mediaUrl: z.string().optional().describe("URL of media to attach"),
169
+ contactName: z.string().optional().describe("Display name for the contact"),
170
+ }),
171
+ }, async (params) => {
172
+ try {
173
+ const result = await api("POST", "conversations/compose", params);
174
+ return jsonResult(result);
175
+ }
176
+ catch (error) {
177
+ return errorResult(error);
178
+ }
179
+ });
180
+ // Simple WhatsApp send — auto-resolves channel
181
+ server.registerTool("neuron_send_whatsapp", {
182
+ title: "Send WhatsApp Message",
183
+ description: "Send a WhatsApp message to a phone number or group. Auto-resolves which WhatsApp channel to use " +
184
+ "(org default channel > first connected channel). Optionally attach media.",
185
+ inputSchema: z.object({
186
+ to: z.string().describe("Recipient: phone number (e.g. '2348012345678') or group JID (e.g. '120363XXX@g.us')"),
187
+ text: z.string().describe("Message text"),
188
+ messageType: z.string().optional().describe("Message type: 'text' (default), 'image', 'audio', 'video', 'document'"),
189
+ mediaUrl: z.string().optional().describe("URL of media to attach (required for non-text types)"),
190
+ channelId: z.string().optional().describe("Override auto-resolved channel with a specific channel ID"),
191
+ contactName: z.string().optional().describe("Display name for the recipient"),
192
+ }),
193
+ }, async (params) => {
194
+ try {
195
+ const result = await api("POST", "conversations/send-message", {
196
+ to: params.to,
197
+ text: params.text,
198
+ messageType: params.messageType,
199
+ mediaUrl: params.mediaUrl,
200
+ channelId: params.channelId,
201
+ contactName: params.contactName,
202
+ });
203
+ return jsonResult(result);
204
+ }
205
+ catch (error) {
206
+ return errorResult(error);
207
+ }
208
+ });
209
+ // Edit a message
210
+ server.registerTool("neuron_edit_message", {
211
+ title: "Edit Message",
212
+ description: "Edit the content of a previously sent message in a conversation",
213
+ inputSchema: z.object({
214
+ id: z.string().describe("The unique identifier of the conversation"),
215
+ msgId: z.string().describe("The unique identifier of the message to edit"),
216
+ content: z.string().describe("New content for the message"),
217
+ }),
218
+ }, async (params) => {
219
+ try {
220
+ const result = await api("PUT", `conversations/${params.id}/messages/${params.msgId}`, {
221
+ content: params.content,
222
+ });
223
+ return jsonResult(result);
224
+ }
225
+ catch (error) {
226
+ return errorResult(error);
227
+ }
228
+ });
229
+ // Delete a message
230
+ server.registerTool("neuron_delete_message", {
231
+ title: "Delete Message",
232
+ description: "Delete a specific message from a conversation. This action cannot be undone.",
233
+ inputSchema: z.object({
234
+ id: z.string().describe("The unique identifier of the conversation"),
235
+ msgId: z.string().describe("The unique identifier of the message to delete"),
236
+ }),
237
+ annotations: { destructiveHint: true },
238
+ }, async (params) => {
239
+ try {
240
+ const result = await api("DELETE", `conversations/${params.id}/messages/${params.msgId}`);
241
+ return jsonResult(result);
242
+ }
243
+ catch (error) {
244
+ return errorResult(error);
245
+ }
246
+ });
247
+ // Close a conversation
248
+ server.registerTool("neuron_close_conversation", {
249
+ title: "Close Conversation",
250
+ description: "Close an active conversation, marking it as completed",
251
+ inputSchema: z.object({
252
+ id: z.string().describe("The unique identifier of the conversation to close"),
253
+ }),
254
+ annotations: {
255
+ readOnlyHint: false,
256
+ destructiveHint: true,
257
+ idempotentHint: true,
258
+ openWorldHint: false,
259
+ },
260
+ }, async (params) => {
261
+ try {
262
+ const result = await api("POST", `conversations/${params.id}/close`);
263
+ return jsonResult(result);
264
+ }
265
+ catch (error) {
266
+ return errorResult(error);
267
+ }
268
+ });
269
+ }
270
+ //# sourceMappingURL=conversations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/tools/conversations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /**
3
+ * Register knowledge base management tools for the Neuron MCP server.
4
+ * Provides CRUD operations for knowledge bases, entries, and search capabilities.
5
+ */
6
+ export declare function registerKnowledgeBaseTools(server: McpServer): void;