@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 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/tools/agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Analytics toolset (on-demand) — agent analytics, conversations,
3
+ * broadcast results, sequence stats, channel activity & health
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ import type { LaunchPathClient } from "../client.js";
7
+ export declare function registerAnalyticsTools(server: McpServer, client: LaunchPathClient): void;
@@ -0,0 +1,282 @@
1
+ /**
2
+ * Analytics toolset (on-demand) — agent analytics, conversations,
3
+ * broadcast results, sequence stats, channel activity & health
4
+ */
5
+ import { z } from "zod";
6
+ import { formatError } from "../client.js";
7
+ export function registerAnalyticsTools(server, client) {
8
+ // --- get_agent_analytics ---
9
+ server.registerTool("get_agent_analytics", {
10
+ title: "Get Agent Analytics",
11
+ description: "Get conversation analytics for an agent: volume, status distribution, human takeover count, busiest hours, and messages per conversation average.",
12
+ inputSchema: {
13
+ agent_id: z.string().describe("The agent's UUID"),
14
+ period: z
15
+ .enum(["24h", "7d", "30d", "90d"])
16
+ .optional()
17
+ .describe('Time period (default: "7d")'),
18
+ },
19
+ annotations: {
20
+ readOnlyHint: true,
21
+ openWorldHint: false,
22
+ },
23
+ }, async ({ agent_id, period }) => {
24
+ const params = period ? `?period=${period}` : "";
25
+ const res = await client.get(`/api/agents/${agent_id}/impact${params}`);
26
+ if (res.error) {
27
+ return {
28
+ isError: true,
29
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
30
+ };
31
+ }
32
+ return {
33
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
34
+ };
35
+ });
36
+ // --- list_conversations ---
37
+ server.registerTool("list_conversations", {
38
+ title: "List Conversations",
39
+ description: "List conversations across agents, campaigns, or channels. Shows status, message count, and timestamps. Use campaign_id or channel_type to filter across a client's conversations.",
40
+ inputSchema: {
41
+ agent_id: z
42
+ .string()
43
+ .optional()
44
+ .describe("Filter by agent UUID (uses agent chat history endpoint)"),
45
+ campaign_id: z
46
+ .string()
47
+ .optional()
48
+ .describe("Filter by campaign UUID (uses portal conversations endpoint)"),
49
+ channel_type: z
50
+ .enum(["widget", "whatsapp", "api"])
51
+ .optional()
52
+ .describe("Filter by channel type"),
53
+ status: z
54
+ .enum(["active", "paused", "human_takeover", "closed"])
55
+ .optional()
56
+ .describe("Filter by conversation status"),
57
+ search: z
58
+ .string()
59
+ .optional()
60
+ .describe("Search by visitor name, email, phone, or session ID"),
61
+ limit: z
62
+ .number()
63
+ .optional()
64
+ .describe("Max conversations to return (default: 50)"),
65
+ offset: z
66
+ .number()
67
+ .optional()
68
+ .describe("Number of conversations to skip for pagination"),
69
+ },
70
+ annotations: {
71
+ readOnlyHint: true,
72
+ openWorldHint: false,
73
+ },
74
+ }, async ({ agent_id, campaign_id, channel_type, status, search, limit, offset }) => {
75
+ // If agent_id is provided without campaign filters, use the agent conversations endpoint
76
+ if (agent_id && !campaign_id && !channel_type && !search) {
77
+ const params = new URLSearchParams();
78
+ if (status)
79
+ params.set("status", status);
80
+ if (limit)
81
+ params.set("limit", String(limit));
82
+ if (offset)
83
+ params.set("offset", String(offset));
84
+ const qs = params.toString() ? `?${params.toString()}` : "";
85
+ const res = await client.get(`/api/agents/${agent_id}/chat/conversations${qs}`);
86
+ if (res.error) {
87
+ return {
88
+ isError: true,
89
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
90
+ };
91
+ }
92
+ return {
93
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
94
+ };
95
+ }
96
+ // Otherwise use the portal conversations endpoint (supports all filters)
97
+ const params = new URLSearchParams();
98
+ if (campaign_id)
99
+ params.set("campaignId", campaign_id);
100
+ if (channel_type)
101
+ params.set("channelType", channel_type);
102
+ if (status)
103
+ params.set("status", status);
104
+ if (search)
105
+ params.set("search", search);
106
+ if (limit)
107
+ params.set("limit", String(limit));
108
+ if (offset)
109
+ params.set("offset", String(offset));
110
+ const qs = params.toString() ? `?${params.toString()}` : "";
111
+ const res = await client.get(`/api/portal/conversations${qs}`);
112
+ if (res.error) {
113
+ return {
114
+ isError: true,
115
+ content: [
116
+ {
117
+ type: "text",
118
+ text: formatError(res.error, res.status, "Use list_campaigns to find valid campaign IDs."),
119
+ },
120
+ ],
121
+ };
122
+ }
123
+ return {
124
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
125
+ };
126
+ });
127
+ // --- get_conversation ---
128
+ server.registerTool("get_conversation", {
129
+ title: "Get Conversation Messages",
130
+ description: "Get all messages in a specific conversation. Useful for reviewing agent performance and identifying issues.",
131
+ inputSchema: {
132
+ conversation_id: z.string().describe("The conversation's UUID"),
133
+ },
134
+ annotations: {
135
+ readOnlyHint: true,
136
+ openWorldHint: false,
137
+ },
138
+ }, async ({ conversation_id }) => {
139
+ const res = await client.get(`/api/portal/conversations/${conversation_id}/messages`);
140
+ if (res.error) {
141
+ return {
142
+ isError: true,
143
+ content: [
144
+ {
145
+ type: "text",
146
+ text: formatError(res.error, res.status, "Use list_conversations to find valid conversation IDs."),
147
+ },
148
+ ],
149
+ };
150
+ }
151
+ return {
152
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
153
+ };
154
+ });
155
+ // --- list_send_jobs ---
156
+ server.registerTool("list_send_jobs", {
157
+ title: "List Broadcast Results",
158
+ description: "List WhatsApp broadcast send jobs for a channel. Shows delivery metrics per broadcast: sent, delivered, read, and failed counts.",
159
+ inputSchema: {
160
+ agent_id: z.string().describe("The agent's UUID"),
161
+ channel_id: z.string().describe("The WhatsApp channel's UUID"),
162
+ limit: z.number().optional().describe("Max results to return (default: 20)"),
163
+ },
164
+ annotations: {
165
+ readOnlyHint: true,
166
+ openWorldHint: false,
167
+ },
168
+ }, async ({ agent_id, channel_id, limit }) => {
169
+ const params = limit ? `?limit=${limit}` : "?limit=20";
170
+ const res = await client.get(`/api/agents/${agent_id}/channels/${channel_id}/send-jobs${params}`);
171
+ if (res.error) {
172
+ return {
173
+ isError: true,
174
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
175
+ };
176
+ }
177
+ return {
178
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
179
+ };
180
+ });
181
+ // --- get_sequence_stats ---
182
+ server.registerTool("get_sequence_stats", {
183
+ title: "Get Sequence Stats",
184
+ description: "Get performance stats for drip sequences in a campaign: total enrolled, active, completed, failed, and stopped counts. For per-step metrics (delivery, read, drop-off), use get_sequence_detail.",
185
+ inputSchema: {
186
+ campaign_id: z.string().describe("The campaign's UUID"),
187
+ },
188
+ annotations: {
189
+ readOnlyHint: true,
190
+ openWorldHint: false,
191
+ },
192
+ }, async ({ campaign_id }) => {
193
+ const res = await client.get(`/api/campaigns/${campaign_id}/sequences/stats`);
194
+ if (res.error) {
195
+ return {
196
+ isError: true,
197
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
198
+ };
199
+ }
200
+ return {
201
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
202
+ };
203
+ });
204
+ // --- get_sequence_detail ---
205
+ server.registerTool("get_sequence_detail", {
206
+ title: "Get Sequence Detail",
207
+ description: "Get detailed metrics for a specific sequence: per-step sent/delivered/read/failed counts, enrollment breakdown by status, and drop-off analysis.",
208
+ inputSchema: {
209
+ campaign_id: z.string().describe("The campaign's UUID"),
210
+ sequence_id: z.string().describe("The sequence's UUID"),
211
+ },
212
+ annotations: {
213
+ readOnlyHint: true,
214
+ openWorldHint: false,
215
+ },
216
+ }, async ({ campaign_id, sequence_id }) => {
217
+ const res = await client.get(`/api/campaigns/${campaign_id}/sequences/${sequence_id}`);
218
+ if (res.error) {
219
+ return {
220
+ isError: true,
221
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
222
+ };
223
+ }
224
+ return {
225
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
226
+ };
227
+ });
228
+ // --- get_channel_activity ---
229
+ server.registerTool("get_channel_activity", {
230
+ title: "Get Channel Activity",
231
+ description: "Get recent activity for a channel: webhook events, message sends/deliveries/failures, agent processing, and human takeover actions. Useful for debugging and monitoring.",
232
+ inputSchema: {
233
+ agent_id: z.string().describe("The agent's UUID"),
234
+ channel_id: z.string().describe("The channel's UUID"),
235
+ limit: z
236
+ .number()
237
+ .optional()
238
+ .describe("Max events to return (default: 50, max: 100)"),
239
+ },
240
+ annotations: {
241
+ readOnlyHint: true,
242
+ openWorldHint: false,
243
+ },
244
+ }, async ({ agent_id, channel_id, limit }) => {
245
+ const params = limit ? `?limit=${limit}` : "";
246
+ const res = await client.get(`/api/agents/${agent_id}/channels/${channel_id}/activity${params}`);
247
+ if (res.error) {
248
+ return {
249
+ isError: true,
250
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
251
+ };
252
+ }
253
+ return {
254
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
255
+ };
256
+ });
257
+ // --- get_channel_health ---
258
+ server.registerTool("get_channel_health", {
259
+ title: "Get Channel Health",
260
+ description: "Check if a channel is working correctly. Returns health status (healthy/degraded/critical), categorized issues with severity, and suggested fixes.",
261
+ inputSchema: {
262
+ agent_id: z.string().describe("The agent's UUID"),
263
+ channel_id: z.string().describe("The channel's UUID"),
264
+ },
265
+ annotations: {
266
+ readOnlyHint: true,
267
+ openWorldHint: false,
268
+ },
269
+ }, async ({ agent_id, channel_id }) => {
270
+ const res = await client.get(`/api/agents/${agent_id}/channels/${channel_id}/health`);
271
+ if (res.error) {
272
+ return {
273
+ isError: true,
274
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
275
+ };
276
+ }
277
+ return {
278
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
279
+ };
280
+ });
281
+ }
282
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/tools/analytics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Campaigns toolset (on-demand) — list, get, create, update campaigns
3
+ */
4
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import type { LaunchPathClient } from "../client.js";
6
+ export declare function registerCampaignTools(server: McpServer, client: LaunchPathClient): void;
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Campaigns toolset (on-demand) — list, get, create, update campaigns
3
+ */
4
+ import { z } from "zod";
5
+ import { formatError } from "../client.js";
6
+ export function registerCampaignTools(server, client) {
7
+ // --- list_campaigns ---
8
+ server.registerTool("list_campaigns", {
9
+ title: "List Campaigns",
10
+ description: "List all campaigns. A campaign links an agent to a client. Optionally filter by client.",
11
+ inputSchema: {
12
+ client_id: z
13
+ .string()
14
+ .optional()
15
+ .describe("Filter campaigns by client ID"),
16
+ },
17
+ annotations: {
18
+ readOnlyHint: true,
19
+ openWorldHint: false,
20
+ },
21
+ }, async ({ client_id }) => {
22
+ const params = client_id ? `?client_id=${client_id}` : "";
23
+ const res = await client.get(`/api/campaigns${params}`);
24
+ if (res.error) {
25
+ return {
26
+ isError: true,
27
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
28
+ };
29
+ }
30
+ return {
31
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
32
+ };
33
+ });
34
+ // --- get_campaign ---
35
+ server.registerTool("get_campaign", {
36
+ title: "Get Campaign",
37
+ description: "Get full details for a specific campaign.",
38
+ inputSchema: {
39
+ campaign_id: z.string().describe("The campaign's UUID"),
40
+ },
41
+ annotations: {
42
+ readOnlyHint: true,
43
+ openWorldHint: false,
44
+ },
45
+ }, async ({ campaign_id }) => {
46
+ const res = await client.get(`/api/campaigns/${campaign_id}`);
47
+ if (res.error) {
48
+ return {
49
+ isError: true,
50
+ content: [
51
+ {
52
+ type: "text",
53
+ text: formatError(res.error, res.status, "Use list_campaigns to find valid campaign IDs."),
54
+ },
55
+ ],
56
+ };
57
+ }
58
+ return {
59
+ content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
60
+ };
61
+ });
62
+ // --- create_campaign ---
63
+ server.registerTool("create_campaign", {
64
+ title: "Create Campaign",
65
+ description: "Create a campaign linking an agent to a client. This is how you assign agents to clients for tracking conversations and analytics per client.",
66
+ inputSchema: {
67
+ name: z.string().describe("Campaign name"),
68
+ agent_id: z.string().describe("The agent's UUID to assign"),
69
+ client_id: z.string().describe("The client's UUID to assign to"),
70
+ channel_type: z
71
+ .enum(["widget", "whatsapp"])
72
+ .optional()
73
+ .describe('Channel type for this campaign. "whatsapp" creates a WhatsApp channel (requires Meta credentials in dashboard). Default: "widget"'),
74
+ },
75
+ annotations: {
76
+ destructiveHint: false,
77
+ idempotentHint: false,
78
+ },
79
+ }, async ({ name, agent_id, client_id, channel_type }) => {
80
+ const body = { name, agent_id, client_id };
81
+ if (channel_type)
82
+ body.channel_type = channel_type;
83
+ const res = await client.post("/api/campaigns", body);
84
+ if (res.error) {
85
+ return {
86
+ isError: true,
87
+ content: [
88
+ {
89
+ type: "text",
90
+ text: formatError(res.error, res.status, "Verify agent_id and client_id are correct. Use list_agents and list_clients to check."),
91
+ },
92
+ ],
93
+ };
94
+ }
95
+ let text = `Campaign created successfully.\n\n${JSON.stringify(res.data, null, 2)}`;
96
+ const campaignData = res.data;
97
+ const nested = campaignData?.campaign;
98
+ const campaignId = campaignData?.id ?? nested?.id;
99
+ if (channel_type === "whatsapp") {
100
+ text += `\n\n## WhatsApp Setup Required`;
101
+ text += `\nThe WhatsApp channel has been created but is disabled until Meta credentials are configured.`;
102
+ text += `\nThe user must enter their Meta credentials (Phone Number ID, Access Token, Business Account ID, App Secret) at:`;
103
+ text += `\n${client.dashboardUrl}/dashboard/campaigns/${campaignId ?? "<campaign_id>"}`;
104
+ text += `\n\nOnce credentials are saved, use enable_toolset("whatsapp") to create templates, import contacts, and send broadcasts.`;
105
+ }
106
+ else {
107
+ text += `\n\n## Next Steps`;
108
+ text += `\nUse deploy_channel to create a widget channel, then customize with set_widget_appearance and set_widget_content.`;
109
+ }
110
+ return {
111
+ content: [
112
+ {
113
+ type: "text",
114
+ text,
115
+ },
116
+ ],
117
+ };
118
+ });
119
+ // --- update_campaign ---
120
+ server.registerTool("update_campaign", {
121
+ title: "Update Campaign",
122
+ description: "Update a campaign's name or status.",
123
+ inputSchema: {
124
+ campaign_id: z.string().describe("The campaign's UUID"),
125
+ name: z.string().optional().describe("New campaign name"),
126
+ status: z
127
+ .enum(["active", "paused", "completed"])
128
+ .optional()
129
+ .describe("Campaign status"),
130
+ },
131
+ annotations: {
132
+ destructiveHint: false,
133
+ idempotentHint: true,
134
+ },
135
+ }, async ({ campaign_id, name, status }) => {
136
+ const body = {};
137
+ if (name !== undefined)
138
+ body.name = name;
139
+ if (status !== undefined)
140
+ body.status = status;
141
+ const res = await client.patch(`/api/campaigns/${campaign_id}`, body);
142
+ if (res.error) {
143
+ return {
144
+ isError: true,
145
+ content: [{ type: "text", text: formatError(res.error, res.status) }],
146
+ };
147
+ }
148
+ return {
149
+ content: [
150
+ {
151
+ type: "text",
152
+ text: `Campaign updated successfully.\n\n${JSON.stringify(res.data, null, 2)}`,
153
+ },
154
+ ],
155
+ };
156
+ });
157
+ }
158
+ //# sourceMappingURL=campaigns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../src/tools/campaigns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Deployment toolset (default) — list_channels, deploy_channel, update_channel,
3
+ * set_widget_appearance, set_widget_content, get_embed_code
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ import type { LaunchPathClient } from "../client.js";
7
+ export declare function registerDeploymentTools(server: McpServer, client: LaunchPathClient): void;