@launchpath-ai/mcp-server 1.0.18 → 1.0.19
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 +3 -3
- package/build/tools/agents.d.ts +1 -1
- package/build/tools/agents.js +36 -72
- package/build/tools/agents.js.map +1 -1
- package/build/tools/core.js +1 -1
- package/build/tools/core.js.map +1 -1
- package/package.json +1 -1
- package/skills/deploy-agent/SKILL.md +17 -17
- package/skills/launchpath-guide/SKILL.md +13 -21
package/build/index.js
CHANGED
|
@@ -39,9 +39,9 @@ const client = new LaunchPathClient({ apiKey: API_KEY, baseUrl: BASE_URL });
|
|
|
39
39
|
const SERVER_INSTRUCTIONS = `LaunchPath is an AI agent deployment platform. You can create, train, deploy, and manage AI agents for businesses — entirely from the terminal.
|
|
40
40
|
|
|
41
41
|
## Core Workflow
|
|
42
|
-
1. **Create** an agent: use create_agent
|
|
42
|
+
1. **Create** an agent: use create_agent — write the system prompt yourself. Include the agent's role, personality, tone, greeting message, and tool usage instructions all in the system_prompt field. Choose the model and language.
|
|
43
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
|
|
44
|
-
3. **Add integrations**: browse_integrations to find apps, then add_agent_tool to add tools to the agent
|
|
44
|
+
3. **Add integrations**: browse_integrations to find apps, then add_agent_tool to add tools to the agent. After adding tools, update the system prompt (via update_agent) with instructions for how the agent should use them.
|
|
45
45
|
4. **Test** (only when the user asks): use chat_with_agent to send test messages — this works without deploying. Each message costs credits, so ALWAYS ask the user before testing. Never test automatically after creating or updating an agent.
|
|
46
46
|
5. **Deploy** (only when the user asks): create a client, then create a campaign to deploy as a website widget or WhatsApp
|
|
47
47
|
6. **Manage clients**: use create_client + create_campaign to assign agents to client businesses
|
|
@@ -98,7 +98,7 @@ IMPORTANT: Integrations that require OAuth (Google, Slack, GitHub, etc.) MUST be
|
|
|
98
98
|
|
|
99
99
|
## Rate Limits
|
|
100
100
|
- 60 requests per minute across all tools
|
|
101
|
-
- Long-running operations (scrape_website
|
|
101
|
+
- Long-running operations (scrape_website) may take 10-30 seconds
|
|
102
102
|
|
|
103
103
|
## Models
|
|
104
104
|
- Slash-prefixed IDs use OpenRouter (e.g., "openai/gpt-4o-mini")
|
package/build/tools/agents.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Agent Management toolset
|
|
2
|
+
* Agent Management toolset — create, update, clone, delete
|
|
3
3
|
*/
|
|
4
4
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
5
|
import type { LaunchPathClient } from "../client.js";
|
package/build/tools/agents.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Agent Management toolset
|
|
2
|
+
* Agent Management toolset — create, update, clone, delete
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { formatError } from "../client.js";
|
|
@@ -7,22 +7,37 @@ export function registerAgentManagementTools(server, client) {
|
|
|
7
7
|
// --- create_agent ---
|
|
8
8
|
server.registerTool("create_agent", {
|
|
9
9
|
title: "Create Agent",
|
|
10
|
-
description: "Create a new
|
|
10
|
+
description: "Create a new agent. Write the system prompt yourself — include the agent's role, personality, tone, greeting, and tool usage instructions all in one prompt.",
|
|
11
11
|
inputSchema: {
|
|
12
12
|
name: z.string().describe("Agent name"),
|
|
13
13
|
description: z
|
|
14
14
|
.string()
|
|
15
15
|
.optional()
|
|
16
16
|
.describe("Short description of what the agent does"),
|
|
17
|
+
system_prompt: z
|
|
18
|
+
.string()
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("The agent's system prompt — its core instructions. Include personality, tone, greeting message, and tool usage instructions here."),
|
|
21
|
+
model: z
|
|
22
|
+
.string()
|
|
23
|
+
.optional()
|
|
24
|
+
.describe('Model ID. Slash-prefix for OpenRouter (e.g., "openai/gpt-4o-mini"), bare for Anthropic (e.g., "claude-sonnet-4-5-20250929"). Default: "openai/gpt-4o-mini"'),
|
|
25
|
+
language: z
|
|
26
|
+
.string()
|
|
27
|
+
.optional()
|
|
28
|
+
.describe('Language code (e.g., "en", "es", "fr", "de"). Default: "en". The agent will always respond in this language.'),
|
|
17
29
|
},
|
|
18
30
|
annotations: {
|
|
19
31
|
destructiveHint: false,
|
|
20
32
|
idempotentHint: false,
|
|
21
33
|
},
|
|
22
|
-
}, async ({ name, description }) => {
|
|
34
|
+
}, async ({ name, description, system_prompt, model, language }) => {
|
|
23
35
|
const res = await client.post("/api/agents/create-blank", {
|
|
24
36
|
name,
|
|
25
37
|
description,
|
|
38
|
+
system_prompt,
|
|
39
|
+
model,
|
|
40
|
+
language,
|
|
26
41
|
});
|
|
27
42
|
if (res.error) {
|
|
28
43
|
return {
|
|
@@ -33,11 +48,10 @@ export function registerAgentManagementTools(server, client) {
|
|
|
33
48
|
const agentData = res.data;
|
|
34
49
|
let text = `Agent created successfully.\n\n${JSON.stringify(res.data, null, 2)}`;
|
|
35
50
|
text += `\n\n## Next Steps`;
|
|
36
|
-
text += `\n1. **Add knowledge** — use
|
|
37
|
-
text += `\n2. **Add integrations** — use browse_integrations to find apps, then add_agent_tool to connect them
|
|
38
|
-
text += `\n3. **
|
|
39
|
-
text += `\n4. **
|
|
40
|
-
text += `\n5. **Test** — use chat_with_agent to verify it works correctly`;
|
|
51
|
+
text += `\n1. **Add knowledge** — use discover_pages to find pages on the business website, then scrape_website for each important page, then generate_faqs to auto-create Q&A pairs`;
|
|
52
|
+
text += `\n2. **Add integrations** — use browse_integrations to find apps, then add_agent_tool to connect them. Put tool usage instructions in the system prompt via update_agent.`;
|
|
53
|
+
text += `\n3. **Deploy** — use create_campaign to deploy as a website widget or WhatsApp`;
|
|
54
|
+
text += `\n4. **Test** — use chat_with_agent to verify it works correctly`;
|
|
41
55
|
if (agentData?.agentId) {
|
|
42
56
|
text += `\n\nDashboard: ${client.dashboardUrl}/dashboard/agents/${agentData.agentId}`;
|
|
43
57
|
}
|
|
@@ -45,60 +59,10 @@ export function registerAgentManagementTools(server, client) {
|
|
|
45
59
|
content: [{ type: "text", text }],
|
|
46
60
|
};
|
|
47
61
|
});
|
|
48
|
-
// --- create_agent_from_prompt ---
|
|
49
|
-
server.registerTool("create_agent_from_prompt", {
|
|
50
|
-
title: "Create Agent from Prompt",
|
|
51
|
-
description: "AI-generate an agent from a natural language description. Creates the agent with an optimized system prompt, personality, and suggested tools. Takes 10-30 seconds.",
|
|
52
|
-
inputSchema: {
|
|
53
|
-
prompt: z
|
|
54
|
-
.string()
|
|
55
|
-
.describe("Natural language description of the agent. Be specific about the business, role, and behavior. Example: 'A customer support bot for a dental practice that answers questions about services, pricing, and scheduling.'"),
|
|
56
|
-
name: z
|
|
57
|
-
.string()
|
|
58
|
-
.optional()
|
|
59
|
-
.describe("Override the AI-generated agent name"),
|
|
60
|
-
website_url: z
|
|
61
|
-
.string()
|
|
62
|
-
.optional()
|
|
63
|
-
.describe("URL to scrape for context. The AI will use this to understand the business."),
|
|
64
|
-
},
|
|
65
|
-
annotations: {
|
|
66
|
-
destructiveHint: false,
|
|
67
|
-
idempotentHint: false,
|
|
68
|
-
},
|
|
69
|
-
}, async ({ prompt, name, website_url }) => {
|
|
70
|
-
const body = { prompt };
|
|
71
|
-
if (name)
|
|
72
|
-
body.name = name;
|
|
73
|
-
if (website_url)
|
|
74
|
-
body.websiteUrl = website_url;
|
|
75
|
-
const res = await client.consumeSSE("POST", "/api/agents/generate", body);
|
|
76
|
-
if (res.error) {
|
|
77
|
-
return {
|
|
78
|
-
isError: true,
|
|
79
|
-
content: [
|
|
80
|
-
{
|
|
81
|
-
type: "text",
|
|
82
|
-
text: formatError(res.error, res.status, "Agent generation may have timed out. Try a shorter prompt or retry."),
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
let text = `Agent generated successfully.\n\n${res.data?.text ?? ""}`;
|
|
88
|
-
text += `\n\n## Next Steps`;
|
|
89
|
-
text += `\n1. **Add knowledge** — use discover_pages to find pages on the business website, then scrape_website for each important page`;
|
|
90
|
-
text += `\n2. **Generate FAQs** — after scraping, use generate_faqs to auto-create Q&A pairs from the content`;
|
|
91
|
-
text += `\n3. **Add integrations** — if the agent needs tools (calendar booking, email, etc.), use browse_integrations to find apps, then add_agent_tool to connect them`;
|
|
92
|
-
text += `\n4. **Deploy** — use create_campaign(channel_type: "widget") to deploy as a website widget, then configure_widget to customize it`;
|
|
93
|
-
text += `\n5. **Test** — use chat_with_agent to send test messages and verify quality`;
|
|
94
|
-
return {
|
|
95
|
-
content: [{ type: "text", text }],
|
|
96
|
-
};
|
|
97
|
-
});
|
|
98
62
|
// --- update_agent ---
|
|
99
63
|
server.registerTool("update_agent", {
|
|
100
64
|
title: "Update Agent",
|
|
101
|
-
description: "Update
|
|
65
|
+
description: "Update agent configuration. Use get_agent first to see current values. Put everything — personality, tone, greeting, tool instructions — in the system_prompt.",
|
|
102
66
|
inputSchema: {
|
|
103
67
|
agent_id: z.string().describe("The agent's UUID"),
|
|
104
68
|
name: z.string().optional().describe("New agent name"),
|
|
@@ -106,19 +70,15 @@ export function registerAgentManagementTools(server, client) {
|
|
|
106
70
|
system_prompt: z
|
|
107
71
|
.string()
|
|
108
72
|
.optional()
|
|
109
|
-
.describe("New system prompt — the
|
|
110
|
-
personality: z
|
|
111
|
-
.string()
|
|
112
|
-
.optional()
|
|
113
|
-
.describe("Personality traits (e.g., friendly, professional, concise)"),
|
|
73
|
+
.describe("New system prompt — include the agent's role, personality, tone, greeting message, and tool usage instructions all in one prompt."),
|
|
114
74
|
model: z
|
|
115
75
|
.string()
|
|
116
76
|
.optional()
|
|
117
|
-
.describe('Model ID.
|
|
118
|
-
|
|
77
|
+
.describe('Model ID. Slash-prefix for OpenRouter (e.g., "openai/gpt-4o-mini"), bare for Anthropic (e.g., "claude-sonnet-4-5-20250929")'),
|
|
78
|
+
language: z
|
|
119
79
|
.string()
|
|
120
80
|
.optional()
|
|
121
|
-
.describe("
|
|
81
|
+
.describe('Language code (e.g., "en", "es", "fr"). The agent will always respond in this language.'),
|
|
122
82
|
knowledge_enabled: z
|
|
123
83
|
.boolean()
|
|
124
84
|
.optional()
|
|
@@ -128,7 +88,7 @@ export function registerAgentManagementTools(server, client) {
|
|
|
128
88
|
destructiveHint: false,
|
|
129
89
|
idempotentHint: true,
|
|
130
90
|
},
|
|
131
|
-
}, async ({ agent_id, name, description, system_prompt,
|
|
91
|
+
}, async ({ agent_id, name, description, system_prompt, model, language, knowledge_enabled, }) => {
|
|
132
92
|
const body = {};
|
|
133
93
|
if (name !== undefined)
|
|
134
94
|
body.name = name;
|
|
@@ -136,14 +96,18 @@ export function registerAgentManagementTools(server, client) {
|
|
|
136
96
|
body.description = description;
|
|
137
97
|
if (system_prompt !== undefined)
|
|
138
98
|
body.system_prompt = system_prompt;
|
|
139
|
-
if (personality !== undefined)
|
|
140
|
-
body.personality = personality;
|
|
141
99
|
if (model !== undefined)
|
|
142
100
|
body.model = model;
|
|
143
|
-
if (tool_guidelines !== undefined)
|
|
144
|
-
body.tool_guidelines = tool_guidelines;
|
|
145
101
|
if (knowledge_enabled !== undefined)
|
|
146
102
|
body.knowledge_enabled = knowledge_enabled;
|
|
103
|
+
// Language is stored inside the personality JSON object.
|
|
104
|
+
// Fetch current personality, update the language field, and save back.
|
|
105
|
+
if (language !== undefined) {
|
|
106
|
+
const agentRes = await client.get(`/api/agents/${agent_id}`);
|
|
107
|
+
const agentData = agentRes.data;
|
|
108
|
+
const currentPersonality = agentData?.agent?.personality ?? {};
|
|
109
|
+
body.personality = { ...currentPersonality, language };
|
|
110
|
+
}
|
|
147
111
|
if (Object.keys(body).length === 0) {
|
|
148
112
|
return {
|
|
149
113
|
isError: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/tools/agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,UAAU,4BAA4B,CAC1C,MAAiB,EACjB,MAAwB;IAExB,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/tools/agents.ts"],"names":[],"mappings":"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"}
|
package/build/tools/core.js
CHANGED
|
@@ -27,7 +27,7 @@ export function registerCoreTools(server, client) {
|
|
|
27
27
|
content: [
|
|
28
28
|
{
|
|
29
29
|
type: "text",
|
|
30
|
-
text: "No agents found.\n\nTo create your first agent
|
|
30
|
+
text: "No agents found.\n\nTo create your first agent, use create_agent — provide a name, system prompt, model, and language.",
|
|
31
31
|
},
|
|
32
32
|
],
|
|
33
33
|
};
|
package/build/tools/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/tools/core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,MAAwB;IAC3E,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,kJAAkJ;QACpJ,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,IAAI,EAAE;QACT,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAC1B,aAAa,CACd,CAAC;QACF,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;aAC/E,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/tools/core.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,27 +11,29 @@ You are deploying an AI agent using LaunchPath. Follow this workflow precisely:
|
|
|
11
11
|
## Step 1: Parse the user's input
|
|
12
12
|
|
|
13
13
|
- If they gave a **website URL**, you'll scrape it for knowledge
|
|
14
|
-
- If they **described a business**, use that as context for
|
|
14
|
+
- If they **described a business**, use that as context for the system prompt
|
|
15
15
|
- If both, use both
|
|
16
16
|
|
|
17
17
|
## Step 2: Create the agent
|
|
18
18
|
|
|
19
|
-
Use `
|
|
20
|
-
- The business type and
|
|
21
|
-
-
|
|
22
|
-
-
|
|
19
|
+
Use `create_agent` and write the system prompt yourself. The system prompt should include:
|
|
20
|
+
- The business type, industry, and what the agent helps with (support, sales, scheduling, etc.)
|
|
21
|
+
- Tone and personality (e.g., "Be friendly and professional")
|
|
22
|
+
- A greeting message (e.g., "Start every conversation with: Hi! How can I help you today?")
|
|
23
23
|
- Any specific instructions from the user
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Choose an appropriate model (default: `openai/gpt-4o-mini`) and language.
|
|
26
26
|
|
|
27
27
|
## Step 3: Add knowledge
|
|
28
28
|
|
|
29
29
|
- If a website URL was provided, call `discover_pages` to find all pages on the domain
|
|
30
30
|
- Then call `scrape_website` for each relevant page (prioritize: about, services, pricing, FAQ, contact)
|
|
31
|
-
-
|
|
31
|
+
- Call `generate_faqs` to auto-create Q&A pairs from the scraped content
|
|
32
|
+
- Add any additional FAQs with `add_faq`
|
|
32
33
|
|
|
33
34
|
## Step 4: Test
|
|
34
35
|
|
|
36
|
+
Ask the user if they'd like to test the agent before deploying.
|
|
35
37
|
- Call `chat_with_agent` with 2-3 test questions relevant to the business
|
|
36
38
|
- Verify the agent responds accurately using the scraped knowledge
|
|
37
39
|
- If responses are poor, add more knowledge or FAQs and re-test
|
|
@@ -41,22 +43,22 @@ If the user provided a website URL, pass it as `website_url` so the AI can use i
|
|
|
41
43
|
Ask the user which channel they want to deploy to:
|
|
42
44
|
|
|
43
45
|
### Option A: Website Widget (default)
|
|
44
|
-
1.
|
|
45
|
-
2.
|
|
46
|
-
3.
|
|
47
|
-
4.
|
|
46
|
+
1. Create a client if one doesn't exist: `create_client`
|
|
47
|
+
2. `create_campaign` with `channel_type: "widget"`
|
|
48
|
+
3. `configure_widget` to customize colors, theme, avatar, welcome message, conversation starters, and pre-chat form
|
|
49
|
+
4. `update_campaign(status: "active")` to activate
|
|
50
|
+
5. `get_embed_code` to get the ready-to-paste HTML snippet
|
|
48
51
|
|
|
49
52
|
### Option B: WhatsApp
|
|
50
53
|
Tell the user: "For WhatsApp, we need to set up a campaign. Let me walk you through it."
|
|
51
|
-
Then follow the WhatsApp campaign flow:
|
|
52
54
|
1. Create a client if one doesn't exist: `create_client`
|
|
53
55
|
2. `create_campaign` with `channel_type: "whatsapp"`
|
|
54
56
|
3. Tell the user they must enter Meta credentials in the LaunchPath dashboard before proceeding
|
|
55
57
|
4. Once credentials are saved, guide them through templates, contacts, and broadcasts or drip sequences
|
|
56
58
|
|
|
57
59
|
### Option C: API Channel
|
|
58
|
-
1.
|
|
59
|
-
2. The response includes the public chat endpoint URL and
|
|
60
|
+
1. `create_api_channel(agent_id)` — creates an API endpoint with a bearer token
|
|
61
|
+
2. The response includes the public chat endpoint URL and authentication details
|
|
60
62
|
3. Explain how to use the API endpoint to build custom integrations
|
|
61
63
|
|
|
62
64
|
### Option D: Skip deployment
|
|
@@ -67,8 +69,6 @@ If the user doesn't want to deploy yet, skip this step. Remind them they can dep
|
|
|
67
69
|
Summarize what was created:
|
|
68
70
|
- Agent name and what it does
|
|
69
71
|
- Knowledge base contents (pages scraped, FAQs added)
|
|
70
|
-
- Test conversation results
|
|
72
|
+
- Test conversation results (if tested)
|
|
71
73
|
- Deployment details (embed code, WhatsApp status, or API endpoint)
|
|
72
74
|
- Link to LaunchPath dashboard for further configuration
|
|
73
|
-
|
|
74
|
-
Always confirm the agent name and greeting message with the user before deploying.
|
|
@@ -10,8 +10,9 @@ LaunchPath is an AI agent deployment platform. You have access to it via MCP too
|
|
|
10
10
|
|
|
11
11
|
## What You Can Do
|
|
12
12
|
|
|
13
|
-
- **Create AI agents**
|
|
13
|
+
- **Create AI agents** — write the system prompt yourself, choose a model and language
|
|
14
14
|
- **Train agents** with website content (auto-scraped) and FAQ pairs
|
|
15
|
+
- **Add integrations** — connect tools like Google Calendar, Gmail, Slack, etc.
|
|
15
16
|
- **Deploy agents** to website widgets, WhatsApp, or API endpoints
|
|
16
17
|
- **Manage clients** — create client accounts and link agents as campaigns
|
|
17
18
|
- **Test agents** via chat to verify quality before going live
|
|
@@ -20,41 +21,32 @@ LaunchPath is an AI agent deployment platform. You have access to it via MCP too
|
|
|
20
21
|
## Common Workflows
|
|
21
22
|
|
|
22
23
|
### Build an agent for a new client
|
|
23
|
-
1. `
|
|
24
|
+
1. `create_agent` — write the system prompt with role, personality, tone, greeting, and tool instructions
|
|
24
25
|
2. `discover_pages` → `scrape_website` — add the client's website content
|
|
25
|
-
3. `
|
|
26
|
-
4. `
|
|
27
|
-
5. `create_campaign` — link the agent to the client
|
|
28
|
-
6. `
|
|
26
|
+
3. `generate_faqs` — auto-create Q&A pairs from scraped content
|
|
27
|
+
4. `browse_integrations` → `add_agent_tool` — connect tools, then update the system prompt with tool usage instructions
|
|
28
|
+
5. `create_client` → `create_campaign` — link the agent to the client
|
|
29
|
+
6. `configure_widget` or set up WhatsApp — customize the deployment
|
|
29
30
|
7. `get_embed_code` — get the HTML to paste on their site
|
|
30
|
-
8. `chat_with_agent` — test it works correctly
|
|
31
|
+
8. `chat_with_agent` — test it works correctly (only when asked)
|
|
31
32
|
|
|
32
33
|
### Update an existing agent
|
|
33
34
|
1. `list_agents` — find the agent
|
|
34
35
|
2. `get_agent` — read current config
|
|
35
|
-
3. `update_agent` — change prompt,
|
|
36
|
-
4. `chat_with_agent` — test the changes
|
|
36
|
+
3. `update_agent` — change system prompt, model, language, etc.
|
|
37
|
+
4. `chat_with_agent` — test the changes (only when asked)
|
|
37
38
|
|
|
38
39
|
### Check on your business
|
|
39
40
|
1. `list_agents` — see all agents and their status
|
|
40
41
|
2. `list_clients` — see all clients
|
|
41
|
-
3.
|
|
42
|
+
3. `list_conversations` — check recent activity
|
|
43
|
+
4. `get_agent_analytics` — view performance metrics
|
|
42
44
|
|
|
43
45
|
## Tips
|
|
44
46
|
|
|
45
47
|
- Always scrape the client's website before going live — it dramatically improves agent quality
|
|
46
|
-
-
|
|
48
|
+
- Put everything in the system prompt: personality, tone, greeting, tool instructions
|
|
47
49
|
- Deploy as widget first — it's the fastest path to a working agent
|
|
48
50
|
- Create the client and campaign before deploying so conversations are properly tracked
|
|
49
51
|
- Use `discover_pages` before `scrape_website` for comprehensive coverage
|
|
50
52
|
- The default model (openai/gpt-4o-mini) is the most cost-effective. Upgrade to claude-sonnet for higher quality.
|
|
51
|
-
|
|
52
|
-
## Available Toolsets
|
|
53
|
-
|
|
54
|
-
Default (always loaded): agent management, knowledge, deployment, clients
|
|
55
|
-
On-demand (use `enable_toolset`):
|
|
56
|
-
- **campaigns** — link agents to clients
|
|
57
|
-
- **whatsapp** — templates, broadcasts, contacts, sequences
|
|
58
|
-
- **analytics** — metrics, conversation history
|
|
59
|
-
- **tools-config** — webhooks, APIs, Composio integrations
|
|
60
|
-
- **portal** — client portal invites and branding
|