@launchpath-ai/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 (53) hide show
  1. package/README.md +94 -0
  2. package/build/client.d.ts +38 -0
  3. package/build/client.js +210 -0
  4. package/build/client.js.map +1 -0
  5. package/build/index.d.ts +12 -0
  6. package/build/index.js +374 -0
  7. package/build/index.js.map +1 -0
  8. package/build/tools/agents.d.ts +6 -0
  9. package/build/tools/agents.js +249 -0
  10. package/build/tools/agents.js.map +1 -0
  11. package/build/tools/analytics.d.ts +7 -0
  12. package/build/tools/analytics.js +282 -0
  13. package/build/tools/analytics.js.map +1 -0
  14. package/build/tools/campaigns.d.ts +6 -0
  15. package/build/tools/campaigns.js +158 -0
  16. package/build/tools/campaigns.js.map +1 -0
  17. package/build/tools/channels.d.ts +7 -0
  18. package/build/tools/channels.js +319 -0
  19. package/build/tools/channels.js.map +1 -0
  20. package/build/tools/clients.d.ts +6 -0
  21. package/build/tools/clients.js +138 -0
  22. package/build/tools/clients.js.map +1 -0
  23. package/build/tools/composio.d.ts +6 -0
  24. package/build/tools/composio.js +188 -0
  25. package/build/tools/composio.js.map +1 -0
  26. package/build/tools/core.d.ts +6 -0
  27. package/build/tools/core.js +130 -0
  28. package/build/tools/core.js.map +1 -0
  29. package/build/tools/integrations.d.ts +6 -0
  30. package/build/tools/integrations.js +188 -0
  31. package/build/tools/integrations.js.map +1 -0
  32. package/build/tools/knowledge.d.ts +7 -0
  33. package/build/tools/knowledge.js +274 -0
  34. package/build/tools/knowledge.js.map +1 -0
  35. package/build/tools/portal.d.ts +6 -0
  36. package/build/tools/portal.js +86 -0
  37. package/build/tools/portal.js.map +1 -0
  38. package/build/tools/tools-config.d.ts +6 -0
  39. package/build/tools/tools-config.js +213 -0
  40. package/build/tools/tools-config.js.map +1 -0
  41. package/build/tools/whatsapp.d.ts +7 -0
  42. package/build/tools/whatsapp.js +399 -0
  43. package/build/tools/whatsapp.js.map +1 -0
  44. package/build/types.d.ts +87 -0
  45. package/build/types.js +3 -0
  46. package/build/types.js.map +1 -0
  47. package/package.json +44 -0
  48. package/plugin.json +28 -0
  49. package/skills/agent-report/SKILL.md +44 -0
  50. package/skills/deploy-agent/SKILL.md +74 -0
  51. package/skills/launchpath-guide/SKILL.md +60 -0
  52. package/skills/setup-client/SKILL.md +44 -0
  53. package/skills/whatsapp-campaign/SKILL.md +72 -0
@@ -0,0 +1,274 @@
1
+ /**
2
+ * Knowledge toolset (default) — list, scrape, discover_pages, add_faq, edit_faq,
3
+ * generate_faqs, delete, clear_knowledge
4
+ */
5
+ import { z } from "zod";
6
+ import { formatError } from "../client.js";
7
+ export function registerKnowledgeTools(server, client) {
8
+ // --- list_knowledge ---
9
+ server.registerTool("list_knowledge", {
10
+ title: "List Knowledge Documents",
11
+ description: "List all knowledge base documents for an agent with their processing status and chunk counts.",
12
+ inputSchema: {
13
+ agent_id: z.string().describe("The agent's UUID"),
14
+ },
15
+ annotations: {
16
+ readOnlyHint: true,
17
+ openWorldHint: false,
18
+ },
19
+ }, async ({ agent_id }) => {
20
+ const res = await client.get(`/api/agents/${agent_id}/knowledge`);
21
+ if (res.error) {
22
+ return {
23
+ isError: true,
24
+ content: [
25
+ {
26
+ type: "text",
27
+ text: formatError(res.error, res.status, "Use list_agents to verify the agent_id."),
28
+ },
29
+ ],
30
+ };
31
+ }
32
+ return {
33
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
34
+ };
35
+ });
36
+ // --- scrape_website ---
37
+ server.registerTool("scrape_website", {
38
+ title: "Scrape Website",
39
+ description: "Scrape a URL and add the content to an agent's knowledge base. The page will be processed, chunked, and embedded for RAG retrieval. Takes 5-30 seconds depending on page size.",
40
+ inputSchema: {
41
+ agent_id: z.string().describe("The agent's UUID"),
42
+ url: z.string().describe("Full URL to scrape (e.g., https://example.com/about)"),
43
+ },
44
+ annotations: {
45
+ destructiveHint: false,
46
+ idempotentHint: false,
47
+ openWorldHint: true,
48
+ },
49
+ }, async ({ agent_id, url }) => {
50
+ const res = await client.post(`/api/agents/${agent_id}/knowledge/scrape`, { url });
51
+ if (res.error) {
52
+ return {
53
+ isError: true,
54
+ content: [
55
+ {
56
+ type: "text",
57
+ text: formatError(res.error, res.status, "Check the URL is valid and accessible. Use discover_pages to find all pages on a domain first."),
58
+ },
59
+ ],
60
+ };
61
+ }
62
+ return {
63
+ content: [
64
+ {
65
+ type: "text",
66
+ text: `Website scraped and added to knowledge base.\n\n${JSON.stringify(res.data, null, 2)}`,
67
+ },
68
+ ],
69
+ };
70
+ });
71
+ // --- discover_pages ---
72
+ server.registerTool("discover_pages", {
73
+ title: "Discover Pages",
74
+ description: "Discover all same-domain links from a URL (up to 50 pages). Use this to plan a full-site scrape before calling scrape_website for each page.",
75
+ inputSchema: {
76
+ agent_id: z.string().describe("The agent's UUID"),
77
+ url: z.string().describe("Root URL to discover pages from (e.g., https://example.com)"),
78
+ },
79
+ annotations: {
80
+ readOnlyHint: true,
81
+ openWorldHint: true,
82
+ },
83
+ }, async ({ agent_id, url }) => {
84
+ const res = await client.post(`/api/agents/wizard/discover-pages`, { url, agentId: agent_id });
85
+ if (res.error) {
86
+ return {
87
+ isError: true,
88
+ content: [
89
+ {
90
+ type: "text",
91
+ text: formatError(res.error, res.status, "Check the URL is valid and accessible."),
92
+ },
93
+ ],
94
+ };
95
+ }
96
+ return {
97
+ content: [
98
+ {
99
+ type: "text",
100
+ text: `Discovered pages:\n\n${JSON.stringify(res.data, null, 2)}`,
101
+ },
102
+ ],
103
+ };
104
+ });
105
+ // --- add_faq ---
106
+ server.registerTool("add_faq", {
107
+ title: "Add FAQ",
108
+ description: "Add a question-answer pair to the agent's knowledge base. FAQs are great for covering common questions that may not be on the website.",
109
+ inputSchema: {
110
+ agent_id: z.string().describe("The agent's UUID"),
111
+ question: z.string().describe("The question (e.g., 'What are your business hours?')"),
112
+ answer: z.string().describe("The answer to the question"),
113
+ },
114
+ annotations: {
115
+ destructiveHint: false,
116
+ idempotentHint: false,
117
+ },
118
+ }, async ({ agent_id, question, answer }) => {
119
+ const res = await client.post(`/api/agents/${agent_id}/knowledge/faq`, { question, answer });
120
+ if (res.error) {
121
+ return {
122
+ isError: true,
123
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
124
+ };
125
+ }
126
+ return {
127
+ content: [
128
+ {
129
+ type: "text",
130
+ text: `FAQ added successfully.\n\n${JSON.stringify(res.data, null, 2)}`,
131
+ },
132
+ ],
133
+ };
134
+ });
135
+ // --- edit_faq ---
136
+ server.registerTool("edit_faq", {
137
+ title: "Edit FAQ",
138
+ description: "Update the question and/or answer of an existing FAQ document. Use list_knowledge to find the document_id.",
139
+ inputSchema: {
140
+ agent_id: z.string().describe("The agent's UUID"),
141
+ document_id: z.string().describe("The FAQ document's UUID"),
142
+ question: z.string().describe("Updated question text"),
143
+ answer: z.string().describe("Updated answer text"),
144
+ },
145
+ annotations: {
146
+ destructiveHint: false,
147
+ idempotentHint: true,
148
+ },
149
+ }, async ({ agent_id, document_id, question, answer }) => {
150
+ const res = await client.patch(`/api/agents/${agent_id}/knowledge/faq`, { documentId: document_id, question, answer });
151
+ if (res.error) {
152
+ return {
153
+ isError: true,
154
+ content: [
155
+ {
156
+ type: "text",
157
+ text: formatError(res.error, res.status, "Use list_knowledge to verify the document_id is an FAQ type."),
158
+ },
159
+ ],
160
+ };
161
+ }
162
+ return {
163
+ content: [
164
+ {
165
+ type: "text",
166
+ text: `FAQ updated successfully.`,
167
+ },
168
+ ],
169
+ };
170
+ });
171
+ // --- generate_faqs ---
172
+ server.registerTool("generate_faqs", {
173
+ title: "Generate FAQs",
174
+ description: "AI-generate FAQ question-answer pairs from the agent's existing knowledge base. Requires at least one knowledge document to be scraped first. Optionally provide extra context to guide generation.",
175
+ inputSchema: {
176
+ agent_id: z.string().describe("The agent's UUID"),
177
+ extra_context: z
178
+ .string()
179
+ .optional()
180
+ .describe("Additional context to guide FAQ generation (e.g., 'Focus on pricing and scheduling questions')"),
181
+ },
182
+ annotations: {
183
+ destructiveHint: false,
184
+ idempotentHint: false,
185
+ },
186
+ }, async ({ agent_id, extra_context }) => {
187
+ const body = {};
188
+ if (extra_context)
189
+ body.extraContext = extra_context;
190
+ const res = await client.post(`/api/agents/${agent_id}/knowledge/generate-faqs`, body);
191
+ if (res.error) {
192
+ return {
193
+ isError: true,
194
+ content: [
195
+ {
196
+ type: "text",
197
+ text: formatError(res.error, res.status, "Make sure the agent has at least one processed knowledge document. Use scrape_website first."),
198
+ },
199
+ ],
200
+ };
201
+ }
202
+ return {
203
+ content: [
204
+ {
205
+ type: "text",
206
+ text: `FAQs generated successfully.\n\n${JSON.stringify(res.data, null, 2)}`,
207
+ },
208
+ ],
209
+ };
210
+ });
211
+ // --- delete_knowledge ---
212
+ server.registerTool("delete_knowledge", {
213
+ title: "Delete Knowledge Document",
214
+ description: "Remove a document from the agent's knowledge base. This deletes the document and all its chunks. Cannot be undone.",
215
+ inputSchema: {
216
+ agent_id: z.string().describe("The agent's UUID"),
217
+ document_id: z.string().describe("The knowledge document's UUID. Use list_knowledge to find it."),
218
+ },
219
+ annotations: {
220
+ destructiveHint: true,
221
+ idempotentHint: true,
222
+ },
223
+ }, async ({ agent_id, document_id }) => {
224
+ const res = await client.del(`/api/agents/${agent_id}/knowledge?documentId=${document_id}`);
225
+ if (res.error) {
226
+ return {
227
+ isError: true,
228
+ content: [
229
+ {
230
+ type: "text",
231
+ text: formatError(res.error, res.status, "Use list_knowledge to verify the document_id."),
232
+ },
233
+ ],
234
+ };
235
+ }
236
+ return {
237
+ content: [
238
+ {
239
+ type: "text",
240
+ text: `Knowledge document ${document_id} deleted successfully.`,
241
+ },
242
+ ],
243
+ };
244
+ });
245
+ // --- clear_knowledge ---
246
+ server.registerTool("clear_knowledge", {
247
+ title: "Clear All Knowledge",
248
+ description: "Delete ALL documents from an agent's knowledge base. This removes every document, chunk, and embedding. Cannot be undone. Use delete_knowledge to remove a single document instead.",
249
+ inputSchema: {
250
+ agent_id: z.string().describe("The agent's UUID"),
251
+ },
252
+ annotations: {
253
+ destructiveHint: true,
254
+ idempotentHint: true,
255
+ },
256
+ }, async ({ agent_id }) => {
257
+ const res = await client.del(`/api/agents/${agent_id}/knowledge?all=true`);
258
+ if (res.error) {
259
+ return {
260
+ isError: true,
261
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
262
+ };
263
+ }
264
+ return {
265
+ content: [
266
+ {
267
+ type: "text",
268
+ text: `All knowledge documents cleared from agent ${agent_id}.`,
269
+ },
270
+ ],
271
+ };
272
+ });
273
+ }
274
+ //# sourceMappingURL=knowledge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/tools/knowledge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Portal toolset (on-demand) — client portal management
3
+ */
4
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import type { LaunchPathClient } from "../client.js";
6
+ export declare function registerPortalTools(server: McpServer, client: LaunchPathClient): void;
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Portal toolset (on-demand) — client portal management
3
+ */
4
+ import { z } from "zod";
5
+ import { formatError } from "../client.js";
6
+ export function registerPortalTools(server, client) {
7
+ // --- invite_client_member ---
8
+ server.registerTool("invite_client_member", {
9
+ title: "Invite Client Member",
10
+ description: "Invite someone to a client's portal. They'll get an email invite to access conversations, analytics, and manage the agent.",
11
+ inputSchema: {
12
+ client_id: z.string().describe("The client's UUID"),
13
+ email: z.string().describe("Email address to invite"),
14
+ role: z
15
+ .enum(["viewer", "admin"])
16
+ .optional()
17
+ .describe('Portal role: "viewer" (read-only) or "admin" (full access). Default: "viewer"'),
18
+ },
19
+ annotations: {
20
+ destructiveHint: false,
21
+ idempotentHint: false,
22
+ openWorldHint: true,
23
+ },
24
+ }, async ({ client_id, email, role }) => {
25
+ const body = { email };
26
+ if (role)
27
+ body.role = role;
28
+ const res = await client.post(`/api/clients/${client_id}/invite`, body);
29
+ if (res.error) {
30
+ return {
31
+ isError: true,
32
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
33
+ };
34
+ }
35
+ return {
36
+ content: [
37
+ {
38
+ type: "text",
39
+ text: `Invitation sent to ${email}.\n\n${JSON.stringify(res.data, null, 2)}`,
40
+ },
41
+ ],
42
+ };
43
+ });
44
+ // --- update_portal_branding ---
45
+ server.registerTool("update_portal_branding", {
46
+ title: "Update Portal Branding",
47
+ description: "Customize the client portal appearance: colors, logo, and company name. This white-labels the portal for your client.",
48
+ inputSchema: {
49
+ client_id: z.string().describe("The client's UUID"),
50
+ primary_color: z.string().optional().describe("Brand primary color (hex, e.g., '#FF8C00')"),
51
+ accent_color: z.string().optional().describe("Brand accent color (hex)"),
52
+ logo_url: z.string().optional().describe("URL to the client's logo"),
53
+ company_name: z.string().optional().describe("Company name shown in the portal"),
54
+ },
55
+ annotations: {
56
+ destructiveHint: false,
57
+ idempotentHint: true,
58
+ },
59
+ }, async ({ client_id, primary_color, accent_color, logo_url, company_name }) => {
60
+ const body = {};
61
+ if (primary_color !== undefined)
62
+ body.primary_color = primary_color;
63
+ if (accent_color !== undefined)
64
+ body.accent_color = accent_color;
65
+ if (logo_url !== undefined)
66
+ body.logo_url = logo_url;
67
+ if (company_name !== undefined)
68
+ body.company_name = company_name;
69
+ const res = await client.patch(`/api/clients/${client_id}/branding`, body);
70
+ if (res.error) {
71
+ return {
72
+ isError: true,
73
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
74
+ };
75
+ }
76
+ return {
77
+ content: [
78
+ {
79
+ type: "text",
80
+ text: `Portal branding updated.\n\n${JSON.stringify(res.data, null, 2)}`,
81
+ },
82
+ ],
83
+ };
84
+ });
85
+ }
86
+ //# sourceMappingURL=portal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.js","sourceRoot":"","sources":["../../src/tools/portal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Tools Config toolset (on-demand) — manage agent integrations/tools
3
+ */
4
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import type { LaunchPathClient } from "../client.js";
6
+ export declare function registerToolsConfigTools(server: McpServer, client: LaunchPathClient): void;
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Tools Config toolset (on-demand) — manage agent integrations/tools
3
+ */
4
+ import { z } from "zod";
5
+ import { formatError } from "../client.js";
6
+ export function registerToolsConfigTools(server, client) {
7
+ // --- list_agent_tools ---
8
+ server.registerTool("list_agent_tools", {
9
+ title: "List Agent Tools",
10
+ description: "List all tools/integrations configured for an agent (webhooks, HTTP APIs, app integrations, subagents).",
11
+ inputSchema: {
12
+ agent_id: z.string().describe("The agent's UUID"),
13
+ },
14
+ annotations: {
15
+ readOnlyHint: true,
16
+ openWorldHint: false,
17
+ },
18
+ }, async ({ agent_id }) => {
19
+ const res = await client.get(`/api/agents/${agent_id}/tools`);
20
+ if (res.error) {
21
+ return {
22
+ isError: true,
23
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
24
+ };
25
+ }
26
+ return {
27
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
28
+ };
29
+ });
30
+ // --- add_agent_tool ---
31
+ server.registerTool("add_agent_tool", {
32
+ title: "Add Agent Tool",
33
+ description: 'Add a tool/integration to an agent. Tool types: "webhook" (calls a URL), "http" (HTTP API), "integration" (from 900+ app integrations like Google Calendar, Gmail, Slack), "subagent" (delegates to another agent).',
34
+ inputSchema: {
35
+ agent_id: z.string().describe("The agent's UUID"),
36
+ tool_type: z
37
+ .enum(["webhook", "http", "composio", "subagent"])
38
+ .describe("Type of tool to add"),
39
+ display_name: z.string().describe("Human-readable tool name"),
40
+ description: z
41
+ .string()
42
+ .describe("What this tool does — the agent uses this to decide when to call it"),
43
+ config: z
44
+ .record(z.string(), z.unknown())
45
+ .describe('Tool configuration. For webhook: { url, method, headers }. For integration: { toolkit, toolkit_name, enabled_actions }. For subagent: { agentId }. For http: { url, method, headers, bodyTemplate }.'),
46
+ },
47
+ annotations: {
48
+ destructiveHint: false,
49
+ idempotentHint: false,
50
+ },
51
+ }, async ({ agent_id, tool_type, display_name, description, config }) => {
52
+ const res = await client.post(`/api/agents/${agent_id}/tools`, {
53
+ tool_type,
54
+ display_name,
55
+ description,
56
+ config,
57
+ });
58
+ if (res.error) {
59
+ return {
60
+ isError: true,
61
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
62
+ };
63
+ }
64
+ return {
65
+ content: [
66
+ {
67
+ type: "text",
68
+ text: `Tool added successfully.\n\n${JSON.stringify(res.data, null, 2)}`,
69
+ },
70
+ ],
71
+ };
72
+ });
73
+ // --- update_agent_tool ---
74
+ server.registerTool("update_agent_tool", {
75
+ title: "Update Agent Tool",
76
+ description: "Update an existing tool's configuration, description, or enable/disable it. Use list_agent_tools to find the tool_id. For config changes, only include fields you want to change — existing values are preserved.",
77
+ inputSchema: {
78
+ agent_id: z.string().describe("The agent's UUID"),
79
+ tool_id: z.string().describe("The tool's UUID"),
80
+ display_name: z.string().optional().describe("Updated display name"),
81
+ description: z
82
+ .string()
83
+ .optional()
84
+ .describe("Updated description of what the tool does"),
85
+ is_enabled: z
86
+ .boolean()
87
+ .optional()
88
+ .describe("Enable or disable the tool without removing it"),
89
+ config: z
90
+ .record(z.string(), z.unknown())
91
+ .optional()
92
+ .describe("Updated config fields. Only include fields to change — unset fields keep their current values."),
93
+ },
94
+ annotations: {
95
+ destructiveHint: false,
96
+ idempotentHint: true,
97
+ },
98
+ }, async ({ agent_id, tool_id, display_name, description, is_enabled, config }) => {
99
+ const body = {};
100
+ if (display_name !== undefined)
101
+ body.display_name = display_name;
102
+ if (description !== undefined)
103
+ body.description = description;
104
+ if (is_enabled !== undefined)
105
+ body.is_enabled = is_enabled;
106
+ if (config !== undefined)
107
+ body.config = config;
108
+ if (Object.keys(body).length === 0) {
109
+ return {
110
+ isError: true,
111
+ content: [
112
+ {
113
+ type: "text",
114
+ text: "No fields to update. Provide at least one field to change.",
115
+ },
116
+ ],
117
+ };
118
+ }
119
+ const res = await client.patch(`/api/agents/${agent_id}/tools/${tool_id}`, body);
120
+ if (res.error) {
121
+ return {
122
+ isError: true,
123
+ content: [
124
+ {
125
+ type: "text",
126
+ text: formatError(res.error, res.status, "Use list_agent_tools to verify the tool_id."),
127
+ },
128
+ ],
129
+ };
130
+ }
131
+ return {
132
+ content: [
133
+ {
134
+ type: "text",
135
+ text: `Tool updated successfully.\n\n${JSON.stringify(res.data, null, 2)}`,
136
+ },
137
+ ],
138
+ };
139
+ });
140
+ // --- remove_agent_tool ---
141
+ server.registerTool("remove_agent_tool", {
142
+ title: "Remove Agent Tool",
143
+ description: "Remove a tool/integration from an agent. Use list_agent_tools to find the tool_id.",
144
+ inputSchema: {
145
+ agent_id: z.string().describe("The agent's UUID"),
146
+ tool_id: z.string().describe("The tool's UUID"),
147
+ },
148
+ annotations: {
149
+ destructiveHint: true,
150
+ idempotentHint: true,
151
+ },
152
+ }, async ({ agent_id, tool_id }) => {
153
+ const res = await client.del(`/api/agents/${agent_id}/tools/${tool_id}`);
154
+ if (res.error) {
155
+ return {
156
+ isError: true,
157
+ content: [
158
+ {
159
+ type: "text",
160
+ text: formatError(res.error, res.status, "Use list_agent_tools to verify the tool_id."),
161
+ },
162
+ ],
163
+ };
164
+ }
165
+ return {
166
+ content: [
167
+ { type: "text", text: `Tool ${tool_id} removed from agent.` },
168
+ ],
169
+ };
170
+ });
171
+ // --- test_agent_tool ---
172
+ server.registerTool("test_agent_tool", {
173
+ title: "Test Agent Tool",
174
+ description: "Test a tool integration to verify it's working correctly. Sends a test request and returns the response.",
175
+ inputSchema: {
176
+ agent_id: z.string().describe("The agent's UUID"),
177
+ tool_id: z.string().describe("The tool's UUID"),
178
+ test_input: z
179
+ .record(z.string(), z.unknown())
180
+ .optional()
181
+ .describe("Optional test input data to send to the tool"),
182
+ },
183
+ annotations: {
184
+ readOnlyHint: true,
185
+ openWorldHint: true,
186
+ },
187
+ }, async ({ agent_id, tool_id, test_input }) => {
188
+ const body = { tool_id };
189
+ if (test_input)
190
+ body.test_input = test_input;
191
+ const res = await client.post(`/api/agents/${agent_id}/tools/test`, body);
192
+ if (res.error) {
193
+ return {
194
+ isError: true,
195
+ content: [
196
+ {
197
+ type: "text",
198
+ text: formatError(res.error, res.status, "The tool may be misconfigured. Use list_agent_tools to check its config."),
199
+ },
200
+ ],
201
+ };
202
+ }
203
+ return {
204
+ content: [
205
+ {
206
+ type: "text",
207
+ text: `Tool test result:\n\n${JSON.stringify(res.data, null, 2)}`,
208
+ },
209
+ ],
210
+ };
211
+ });
212
+ }
213
+ //# sourceMappingURL=tools-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-config.js","sourceRoot":"","sources":["../../src/tools/tools-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * WhatsApp toolset (on-demand) — templates, broadcasts, contacts, sequences,
3
+ * activation, enrollment
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ import type { LaunchPathClient } from "../client.js";
7
+ export declare function registerWhatsAppTools(server: McpServer, client: LaunchPathClient): void;