@launchpath-ai/mcp-server 1.0.7 → 1.0.9
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/build/index.js +23 -272
- package/build/index.js.map +1 -1
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
13
13
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
14
|
-
import { z } from "zod";
|
|
15
14
|
import { LaunchPathClient } from "./client.js";
|
|
16
15
|
// --- Tool registration imports ---
|
|
17
16
|
import { registerCoreTools } from "./tools/core.js";
|
|
@@ -42,7 +41,7 @@ const SERVER_INSTRUCTIONS = `LaunchPath is an AI agent deployment platform. You
|
|
|
42
41
|
## Core Workflow
|
|
43
42
|
1. **Create** an agent: use create_agent (blank) or create_agent_from_prompt (AI-generated from a description)
|
|
44
43
|
2. **Train** it: use discover_pages to find all pages on a site, scrape_website to add content, generate_faqs to auto-create Q&A pairs, and add_faq for manual Q&A pairs
|
|
45
|
-
3. **Add integrations**:
|
|
44
|
+
3. **Add integrations**: browse_integrations to find apps, then add_agent_tool to add tools to the agent
|
|
46
45
|
4. **Test** it: use chat_with_agent to send test messages — this works without deploying
|
|
47
46
|
5. **Deploy** (only when the user asks): deploy to a website widget, WhatsApp, or API channel
|
|
48
47
|
6. **Manage clients**: use create_client + create_campaign to assign agents to client businesses
|
|
@@ -57,7 +56,7 @@ const SERVER_INSTRUCTIONS = `LaunchPath is an AI agent deployment platform. You
|
|
|
57
56
|
- Do NOT deploy unless the user explicitly asks. Testing with chat_with_agent does not require deployment.
|
|
58
57
|
|
|
59
58
|
## Deploying Channels
|
|
60
|
-
Only deploy when the user requests it.
|
|
59
|
+
Only deploy when the user requests it.
|
|
61
60
|
|
|
62
61
|
### Website Widget
|
|
63
62
|
1. deploy_channel(agent_id, channel_type: "widget") — creates the widget
|
|
@@ -66,10 +65,9 @@ Only deploy when the user requests it. First call enable_toolset("deployment") t
|
|
|
66
65
|
|
|
67
66
|
### WhatsApp
|
|
68
67
|
WhatsApp requires Meta Business credentials that must be entered in the LaunchPath dashboard (not via terminal).
|
|
69
|
-
1.
|
|
70
|
-
2.
|
|
71
|
-
3.
|
|
72
|
-
4. Once credentials are saved, use the whatsapp toolset: create templates → import contacts → send broadcasts or create drip sequences
|
|
68
|
+
1. create_campaign(agent_id, client_id, channel_type: "whatsapp") — creates a campaign with a placeholder WhatsApp channel
|
|
69
|
+
2. Tell the user: "Enter your Meta credentials (Phone Number ID, Access Token, Business Account ID, App Secret) at ${BASE_URL}/dashboard/campaigns/<campaign_id>"
|
|
70
|
+
3. Once credentials are saved, use the whatsapp tools: create templates → import contacts → send broadcasts or create drip sequences
|
|
73
71
|
|
|
74
72
|
### API Channel
|
|
75
73
|
1. deploy_channel(agent_id, channel_type: "api") — creates an API endpoint with a bearer token
|
|
@@ -79,32 +77,15 @@ WhatsApp requires Meta Business credentials that must be entered in the LaunchPa
|
|
|
79
77
|
## Adding Integrations
|
|
80
78
|
When the user wants their agent to use external services (Google Calendar, Gmail, Slack, Sheets, etc.):
|
|
81
79
|
|
|
82
|
-
1.
|
|
83
|
-
2.
|
|
84
|
-
3.
|
|
85
|
-
4.
|
|
86
|
-
5.
|
|
87
|
-
6.
|
|
88
|
-
7. Update the agent's tool_guidelines with usage instructions for the new tools
|
|
80
|
+
1. Search for the app: browse_integrations(search: "calendar")
|
|
81
|
+
2. See available actions: list_app_actions(toolkit: "googlecalendar")
|
|
82
|
+
3. Check if connected: check_connections()
|
|
83
|
+
4. If NOT connected: tell the user to open ${BASE_URL}/dashboard/settings/integrations in their browser to connect the app. OAuth requires a browser — it cannot be done from the terminal.
|
|
84
|
+
5. Once connected: add_agent_tool with the correct toolkit slug and action names
|
|
85
|
+
6. Update the agent's tool_guidelines with usage instructions for the new tools
|
|
89
86
|
|
|
90
87
|
IMPORTANT: Integrations that require OAuth (Google, Slack, GitHub, etc.) MUST be connected via the LaunchPath dashboard first. Always check connections before adding tools. If a tool is added without a connection, it will fail at runtime. Direct the user to: ${BASE_URL}/dashboard/settings/integrations
|
|
91
88
|
|
|
92
|
-
## Toolset System
|
|
93
|
-
By default you have access to: agent management and knowledge tools.
|
|
94
|
-
All other toolsets are loaded on demand — call enable_toolset when you need them:
|
|
95
|
-
- **deployment**: Deploy to widget, WhatsApp, or API channels — manage channels, appearance, embed code
|
|
96
|
-
- **clients**: Manage client businesses — create clients, assign agents
|
|
97
|
-
- **campaigns**: Manage client campaigns (list, create, update)
|
|
98
|
-
- **whatsapp**: WhatsApp templates, broadcasts, contacts, drip sequences
|
|
99
|
-
- **analytics**: Agent metrics, conversations, broadcast results, sequence performance, channel health
|
|
100
|
-
- **tools-config**: Manage agent tool integrations — add, edit, enable/disable, remove (webhooks, APIs, app integrations)
|
|
101
|
-
- **portal**: Client portal invites and branding
|
|
102
|
-
- **integrations**: Browse 900+ app integrations, list actions, check user connections
|
|
103
|
-
|
|
104
|
-
Load a toolset when the user mentions its domain (e.g., "deploy my agent" → enable_toolset("deployment"), "set up a WhatsApp campaign" → enable_toolset("campaigns") + enable_toolset("whatsapp"), "add Google Calendar" → enable_toolset("integrations"), "manage clients" → enable_toolset("clients")).
|
|
105
|
-
|
|
106
|
-
When you're done with a toolset and moving to a different domain, use disable_toolset to unload it. This keeps your active tool count low, which improves response quality and reduces token overhead. For example, after finishing WhatsApp setup, call disable_toolset("whatsapp") + disable_toolset("campaigns") before starting widget deployment.
|
|
107
|
-
|
|
108
89
|
## Rate Limits
|
|
109
90
|
- 60 requests per minute across all tools
|
|
110
91
|
- Long-running operations (scrape_website, create_agent_from_prompt) may take 10-30 seconds
|
|
@@ -123,248 +104,18 @@ const server = new McpServer({
|
|
|
123
104
|
tools: {},
|
|
124
105
|
},
|
|
125
106
|
});
|
|
126
|
-
// ───
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
139
|
-
server.registerTool = (...args) => {
|
|
140
|
-
const registered = original(...args);
|
|
141
|
-
refs.push(registered);
|
|
142
|
-
return registered;
|
|
143
|
-
};
|
|
144
|
-
registerFn();
|
|
145
|
-
// Restore original
|
|
146
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
147
|
-
server.registerTool = original;
|
|
148
|
-
toolsetRefs.set(name, refs);
|
|
149
|
-
}
|
|
150
|
-
const availableToolsets = {
|
|
151
|
-
deployment: {
|
|
152
|
-
description: "Deploy agents to website widget, WhatsApp, or API channels — manage channels, widget appearance, and embed code",
|
|
153
|
-
isDefault: false,
|
|
154
|
-
register: () => registerDeploymentTools(server, client),
|
|
155
|
-
},
|
|
156
|
-
clients: {
|
|
157
|
-
description: "Manage client businesses — create clients, assign agents via campaigns",
|
|
158
|
-
isDefault: false,
|
|
159
|
-
register: () => registerClientTools(server, client),
|
|
160
|
-
},
|
|
161
|
-
campaigns: {
|
|
162
|
-
description: "Manage client campaigns — list, get, create, update campaigns that link agents to clients",
|
|
163
|
-
isDefault: false,
|
|
164
|
-
register: () => registerCampaignTools(server, client),
|
|
165
|
-
},
|
|
166
|
-
whatsapp: {
|
|
167
|
-
description: "WhatsApp Business tools — message templates, broadcasts, contact management, drip sequences",
|
|
168
|
-
isDefault: false,
|
|
169
|
-
register: () => registerWhatsAppTools(server, client),
|
|
170
|
-
},
|
|
171
|
-
analytics: {
|
|
172
|
-
description: "Analytics and monitoring — agent metrics, conversations, broadcast results, sequence performance, channel activity and health",
|
|
173
|
-
isDefault: false,
|
|
174
|
-
register: () => registerAnalyticsTools(server, client),
|
|
175
|
-
},
|
|
176
|
-
"tools-config": {
|
|
177
|
-
description: "Manage agent tool integrations — add, edit, enable/disable, remove webhooks, HTTP APIs, app integrations, subagents",
|
|
178
|
-
isDefault: false,
|
|
179
|
-
register: () => registerToolsConfigTools(server, client),
|
|
180
|
-
},
|
|
181
|
-
portal: {
|
|
182
|
-
description: "Client portal management — invite members, customize branding/white-label",
|
|
183
|
-
isDefault: false,
|
|
184
|
-
register: () => registerPortalTools(server, client),
|
|
185
|
-
},
|
|
186
|
-
integrations: {
|
|
187
|
-
description: "Browse 900+ app integrations (Google Calendar, Gmail, Slack, etc.), list available actions, and check which apps the user has connected",
|
|
188
|
-
isDefault: false,
|
|
189
|
-
register: () => registerIntegrationTools(server, client),
|
|
190
|
-
},
|
|
191
|
-
};
|
|
192
|
-
// ─── Register default tools ──────────────────────────────────────────────────
|
|
193
|
-
registerAndCapture("core", () => registerCoreTools(server, client));
|
|
194
|
-
registerAndCapture("agent-management", () => registerAgentManagementTools(server, client));
|
|
195
|
-
registerAndCapture("knowledge", () => registerKnowledgeTools(server, client));
|
|
196
|
-
// ─── enable_toolset meta tool ────────────────────────────────────────────────
|
|
197
|
-
server.registerTool("enable_toolset", {
|
|
198
|
-
title: "Enable Toolset",
|
|
199
|
-
description: "Load additional tools on demand, or re-enable a previously disabled toolset. Available: deployment, clients, campaigns, whatsapp, analytics, tools-config, portal, integrations.",
|
|
200
|
-
inputSchema: {
|
|
201
|
-
toolset: z
|
|
202
|
-
.enum(["deployment", "clients", "campaigns", "whatsapp", "analytics", "tools-config", "portal", "integrations"])
|
|
203
|
-
.describe("Name of the toolset to enable"),
|
|
204
|
-
},
|
|
205
|
-
}, async ({ toolset }) => {
|
|
206
|
-
// Re-enable a previously disabled toolset
|
|
207
|
-
if (loadedToolsets.has(toolset)) {
|
|
208
|
-
const refs = toolsetRefs.get(toolset);
|
|
209
|
-
const allEnabled = !refs || refs.every((r) => r.enabled);
|
|
210
|
-
if (allEnabled) {
|
|
211
|
-
return {
|
|
212
|
-
content: [
|
|
213
|
-
{
|
|
214
|
-
type: "text",
|
|
215
|
-
text: `Toolset "${toolset}" is already loaded and active. You can use its tools now.`,
|
|
216
|
-
},
|
|
217
|
-
],
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
// Re-enable disabled tools
|
|
221
|
-
for (const ref of refs ?? [])
|
|
222
|
-
ref.enable();
|
|
223
|
-
// Fall through to show the tool list
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
const info = availableToolsets[toolset];
|
|
227
|
-
if (!info) {
|
|
228
|
-
const available = Object.keys(availableToolsets).join(", ");
|
|
229
|
-
return {
|
|
230
|
-
isError: true,
|
|
231
|
-
content: [
|
|
232
|
-
{
|
|
233
|
-
type: "text",
|
|
234
|
-
text: `Unknown toolset "${toolset}". Available: ${available}`,
|
|
235
|
-
},
|
|
236
|
-
],
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
registerAndCapture(toolset, () => info.register());
|
|
240
|
-
loadedToolsets.add(toolset);
|
|
241
|
-
}
|
|
242
|
-
// List the newly available tools based on toolset
|
|
243
|
-
const toolNames = {
|
|
244
|
-
deployment: [
|
|
245
|
-
"list_channels",
|
|
246
|
-
"deploy_channel",
|
|
247
|
-
"delete_channel",
|
|
248
|
-
"update_channel",
|
|
249
|
-
"configure_widget",
|
|
250
|
-
"get_embed_code",
|
|
251
|
-
],
|
|
252
|
-
clients: ["list_clients", "get_client", "create_client", "update_client"],
|
|
253
|
-
campaigns: ["list_campaigns", "get_campaign", "create_campaign", "update_campaign"],
|
|
254
|
-
whatsapp: [
|
|
255
|
-
"list_wa_templates",
|
|
256
|
-
"create_wa_template",
|
|
257
|
-
"send_wa_broadcast",
|
|
258
|
-
"list_wa_contacts",
|
|
259
|
-
"import_wa_contacts",
|
|
260
|
-
"create_wa_sequence",
|
|
261
|
-
"activate_wa_sequence",
|
|
262
|
-
"enroll_wa_contacts",
|
|
263
|
-
],
|
|
264
|
-
analytics: [
|
|
265
|
-
"get_agent_analytics",
|
|
266
|
-
"list_conversations",
|
|
267
|
-
"get_conversation",
|
|
268
|
-
"list_send_jobs",
|
|
269
|
-
"get_sequence_stats",
|
|
270
|
-
"get_sequence_detail",
|
|
271
|
-
"get_channel_activity",
|
|
272
|
-
"get_channel_health",
|
|
273
|
-
],
|
|
274
|
-
"tools-config": [
|
|
275
|
-
"list_agent_tools",
|
|
276
|
-
"add_agent_tool",
|
|
277
|
-
"update_agent_tool",
|
|
278
|
-
"remove_agent_tool",
|
|
279
|
-
"test_agent_tool",
|
|
280
|
-
],
|
|
281
|
-
portal: ["invite_client_member", "update_portal_branding"],
|
|
282
|
-
integrations: ["browse_integrations", "list_app_actions", "check_connections"],
|
|
283
|
-
};
|
|
284
|
-
const tools = toolNames[toolset] ?? [];
|
|
285
|
-
let text = `Toolset "${toolset}" enabled. New tools available:\n${tools.map((t) => ` - ${t}`).join("\n")}`;
|
|
286
|
-
// Add contextual guidance per toolset
|
|
287
|
-
const toolsetHints = {
|
|
288
|
-
deployment: `\n\nUse deploy_channel to create a widget, WhatsApp, or API channel.\nFor widgets: configure_widget to customize appearance + content, then get_embed_code.\nFor WhatsApp: use enable_toolset("campaigns") + enable_toolset("whatsapp") instead.`,
|
|
289
|
-
clients: `\n\nUse list_clients to see existing clients, create_client to add new ones.\nAfter creating a client, use enable_toolset("campaigns") to create campaigns linking agents to clients.`,
|
|
290
|
-
integrations: `\n\nStart by searching for an app: browse_integrations(search: "calendar")\nThen check user connections: check_connections()`,
|
|
291
|
-
"tools-config": `\n\nUse list_agent_tools(agent_id) to see current tools on an agent.\nUse add_agent_tool to add new integrations, update_agent_tool to edit config or enable/disable.`,
|
|
292
|
-
whatsapp: `\n\nIMPORTANT: WhatsApp templates require Meta approval (1-24 hours). Create templates first, then check status before broadcasting.\nFlow: create templates → import contacts → check template status (list_wa_templates) → send broadcasts OR create sequence → activate_wa_sequence → enroll_wa_contacts.\nVariable mapping: use { "1": "name", "2": "custom_fields.company" } to personalize messages per contact.`,
|
|
293
|
-
campaigns: `\n\nA campaign links an agent to a client. Create a client first, then create a campaign.`,
|
|
294
|
-
analytics: `\n\nUse get_agent_analytics for high-level metrics, list_conversations for history (filterable by campaign_id, channel_type, status, or search).\nFor WhatsApp: list_send_jobs for broadcast delivery results, get_sequence_stats + get_sequence_detail for drip campaign performance.\nFor debugging: get_channel_activity for event logs, get_channel_health to check if a channel is working.`,
|
|
295
|
-
portal: `\n\nUse invite_client_member to give clients access to their portal. Use update_portal_branding to white-label it.`,
|
|
296
|
-
};
|
|
297
|
-
if (toolsetHints[toolset]) {
|
|
298
|
-
text += toolsetHints[toolset];
|
|
299
|
-
}
|
|
300
|
-
// Notify the client that the tool list has changed
|
|
301
|
-
await server.server.sendToolListChanged();
|
|
302
|
-
return {
|
|
303
|
-
content: [
|
|
304
|
-
{
|
|
305
|
-
type: "text",
|
|
306
|
-
text,
|
|
307
|
-
},
|
|
308
|
-
],
|
|
309
|
-
};
|
|
310
|
-
});
|
|
311
|
-
// ─── disable_toolset meta tool ───────────────────────────────────────────────
|
|
312
|
-
server.registerTool("disable_toolset", {
|
|
313
|
-
title: "Disable Toolset",
|
|
314
|
-
description: "Unload a previously enabled toolset to reduce clutter and improve performance. The tools become invisible until re-enabled with enable_toolset. Cannot disable default toolsets (core, agent-management, knowledge).",
|
|
315
|
-
inputSchema: {
|
|
316
|
-
toolset: z
|
|
317
|
-
.enum(["deployment", "clients", "campaigns", "whatsapp", "analytics", "tools-config", "portal", "integrations"])
|
|
318
|
-
.describe("Name of the toolset to disable"),
|
|
319
|
-
},
|
|
320
|
-
}, async ({ toolset }) => {
|
|
321
|
-
const refs = toolsetRefs.get(toolset);
|
|
322
|
-
if (!refs || !loadedToolsets.has(toolset)) {
|
|
323
|
-
return {
|
|
324
|
-
isError: true,
|
|
325
|
-
content: [
|
|
326
|
-
{
|
|
327
|
-
type: "text",
|
|
328
|
-
text: `Toolset "${toolset}" is not currently loaded. Nothing to disable.`,
|
|
329
|
-
},
|
|
330
|
-
],
|
|
331
|
-
};
|
|
332
|
-
}
|
|
333
|
-
const alreadyDisabled = refs.every((r) => !r.enabled);
|
|
334
|
-
if (alreadyDisabled) {
|
|
335
|
-
return {
|
|
336
|
-
content: [
|
|
337
|
-
{
|
|
338
|
-
type: "text",
|
|
339
|
-
text: `Toolset "${toolset}" is already disabled.`,
|
|
340
|
-
},
|
|
341
|
-
],
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
|
-
for (const ref of refs)
|
|
345
|
-
ref.disable();
|
|
346
|
-
// Notify the client that the tool list has changed
|
|
347
|
-
await server.server.sendToolListChanged();
|
|
348
|
-
const toolNames = {
|
|
349
|
-
deployment: ["list_channels", "deploy_channel", "delete_channel", "update_channel", "configure_widget", "get_embed_code"],
|
|
350
|
-
clients: ["list_clients", "get_client", "create_client", "update_client"],
|
|
351
|
-
campaigns: ["list_campaigns", "get_campaign", "create_campaign", "update_campaign"],
|
|
352
|
-
whatsapp: ["list_wa_templates", "create_wa_template", "send_wa_broadcast", "list_wa_contacts", "import_wa_contacts", "create_wa_sequence", "activate_wa_sequence", "enroll_wa_contacts"],
|
|
353
|
-
analytics: ["get_agent_analytics", "list_conversations", "get_conversation", "list_send_jobs", "get_sequence_stats", "get_sequence_detail", "get_channel_activity", "get_channel_health"],
|
|
354
|
-
"tools-config": ["list_agent_tools", "add_agent_tool", "update_agent_tool", "remove_agent_tool", "test_agent_tool"],
|
|
355
|
-
portal: ["invite_client_member", "update_portal_branding"],
|
|
356
|
-
integrations: ["browse_integrations", "list_app_actions", "check_connections"],
|
|
357
|
-
};
|
|
358
|
-
const tools = toolNames[toolset] ?? [];
|
|
359
|
-
return {
|
|
360
|
-
content: [
|
|
361
|
-
{
|
|
362
|
-
type: "text",
|
|
363
|
-
text: `Toolset "${toolset}" disabled. ${tools.length} tools hidden:\n${tools.map((t) => ` - ${t}`).join("\n")}\n\nUse enable_toolset("${toolset}") to re-enable them.`,
|
|
364
|
-
},
|
|
365
|
-
],
|
|
366
|
-
};
|
|
367
|
-
});
|
|
107
|
+
// ─── Register all tools upfront ─────────────────────────────────────────────
|
|
108
|
+
registerCoreTools(server, client);
|
|
109
|
+
registerAgentManagementTools(server, client);
|
|
110
|
+
registerKnowledgeTools(server, client);
|
|
111
|
+
registerDeploymentTools(server, client);
|
|
112
|
+
registerClientTools(server, client);
|
|
113
|
+
registerCampaignTools(server, client);
|
|
114
|
+
registerWhatsAppTools(server, client);
|
|
115
|
+
registerAnalyticsTools(server, client);
|
|
116
|
+
registerToolsConfigTools(server, client);
|
|
117
|
+
registerPortalTools(server, client);
|
|
118
|
+
registerIntegrationTools(server, client);
|
|
368
119
|
// ─── Start server ────────────────────────────────────────────────────────────
|
|
369
120
|
async function main() {
|
|
370
121
|
const transport = new StdioServerTransport();
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED