@seldonframe/mcp 1.45.1 → 1.46.1
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/package.json +1 -1
- package/src/tools.js +43 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seldonframe/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.46.1",
|
|
4
4
|
"mcpName": "io.github.seldonframe/seldonframe-mcp",
|
|
5
5
|
"description": "Open-source GoHighLevel alternative for agencies. 146+ MCP tools that let Claude Code spin up white-labeled client workspaces — CRM, booking, intake forms, landing pages, AI chatbot, and pre-wired agent archetypes (speed-to-lead, missed-call-text-back, review-requester) — in minutes. AGPL-3.0.",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|
package/src/tools.js
CHANGED
|
@@ -60,7 +60,8 @@ export const TOOLS = [
|
|
|
60
60
|
{
|
|
61
61
|
name: "create_full_workspace",
|
|
62
62
|
description:
|
|
63
|
-
"
|
|
63
|
+
"⛔ DO NOT USE WHEN A URL IS PROVIDED — use `create_workspace_from_url` instead. THIS tool is for STRUCTURED, PRE-EXTRACTED business info ONLY (manual paste, operator-typed fields, etc.). " +
|
|
64
|
+
"PREFERRED for new workspaces FROM STRUCTURED INPUT. Atomic, server-side workspace creation: takes structured business info and creates everything in ONE call — workspace, business profile, CRM with industry-specific pipeline stages, booking page with availability, intake form, themed landing page, all deployed with live URLs. " +
|
|
64
65
|
"Use this instead of create_workspace + a long sequence of customization tools. The pipeline runs server-side with a fixed order — same input always produces same output, no retries, no 404s. " +
|
|
65
66
|
"MANDATORY FOLLOW-UP: After this returns `status: 'ready'`, ask the operator verbatim 'What email should I use for your account? This is where you'll get your login link and notifications.' Then call `finalize_workspace({ workspace_id, email })`. The admin dashboard URL is ONLY created by finalize_workspace — it does not exist in this response (so there's nothing for you to display prematurely). " +
|
|
66
67
|
"Example: create_full_workspace({ business_name: 'Summit Air Comfort', city: 'Phoenix', state: 'AZ', phone: '(480) 555-2100', services: ['AC repair', 'heating installation', 'duct cleaning'], business_description: 'Residential and commercial HVAC in Phoenix', review_count: 950, review_rating: 4.7, trust_signals: ['licensed', 'bonded', 'insured'], emergency_service: true, same_day: true, service_area: ['Scottsdale', 'Tempe', 'Mesa'] })",
|
|
@@ -468,6 +469,39 @@ export const TOOLS = [
|
|
|
468
469
|
return firstEver ? withFirstCallBanner(payload) : payload;
|
|
469
470
|
},
|
|
470
471
|
},
|
|
472
|
+
// create_workspace_from_url — atomic crawl + workspace + chatbot.
|
|
473
|
+
// Thin wrapper around create_full_workspace with include_chatbot=true
|
|
474
|
+
// and auto_extract_faq=true. The orchestrator at /api/v1/workspace/create
|
|
475
|
+
// (POST) handles the multi-phase composition; this tool exists for
|
|
476
|
+
// discoverability — operators reading the MCP tool list see a name
|
|
477
|
+
// that matches the marketing pitch ("paste a URL → workspace").
|
|
478
|
+
{
|
|
479
|
+
name: "create_workspace_from_url",
|
|
480
|
+
description:
|
|
481
|
+
"⚡ MUST USE WHEN A URL IS PROVIDED — this is the atomic URL-input path for agency client workspace creation. " +
|
|
482
|
+
"PATTERNS THAT ROUTE HERE (do not even consider other workspace-creation tools when input matches): " +
|
|
483
|
+
"'create a workspace for <URL>', 'set up <client> at <URL>', 'spin up <URL>', '<URL>' alone, or any operator message containing http://, https://, or a recognizable domain (.com/.io/.net/.co/.app/.dev/.us etc). " +
|
|
484
|
+
"WHAT THIS TOOL ALONE DOES: backend crawls the URL → soul-extracts business info → creates CRM + booking + intake + landing + eval-gated AI chatbot wired to FAQs auto-pulled from the site + the booking calendar. " +
|
|
485
|
+
"DO NOT use create_workspace_v2 or create_full_workspace when a URL is available. Those tools require PRE-EXTRACTED structured fields (business_name, services[], phone) and will produce INFERIOR results for URL input because they skip the URL crawler, the FAQ extractor, and the auto-chatbot build. " +
|
|
486
|
+
"DO NOT manually WebFetch the URL first — the SeldonFrame backend's soul-compiler is already wired to scrape + extract. Forwarding pre-fetched HTML wastes a round-trip and bypasses the FAQ-from-URL pipeline. " +
|
|
487
|
+
"Eval gate: chatbot must pass ≥10 of 11 safety + behavior scenarios to ship 'live'. White-label-ready under partner-agency attachment. " +
|
|
488
|
+
"Returns: workspace + agent + embed_url + faq_summary. MANDATORY FOLLOW-UP: ask the operator verbatim 'What email should I use for your account?' then call finalize_workspace({ workspace_id, email }) — the admin dashboard URL is ONLY created by finalize_workspace.",
|
|
489
|
+
inputSchema: obj(
|
|
490
|
+
{
|
|
491
|
+
url: str("Business website URL, e.g. https://dallasplumbing.com"),
|
|
492
|
+
},
|
|
493
|
+
["url"]
|
|
494
|
+
),
|
|
495
|
+
handler: async (args) =>
|
|
496
|
+
api("POST", "/workspace/create", {
|
|
497
|
+
body: {
|
|
498
|
+
url: args.url,
|
|
499
|
+
include_chatbot: true,
|
|
500
|
+
auto_extract_faq: true,
|
|
501
|
+
},
|
|
502
|
+
allow_anonymous: true,
|
|
503
|
+
}),
|
|
504
|
+
},
|
|
471
505
|
{
|
|
472
506
|
name: "list_workspaces",
|
|
473
507
|
description: "List all workspaces known to this device (plus any Pro workspaces if SELDONFRAME_API_KEY is set).",
|
|
@@ -2940,7 +2974,8 @@ export const TOOLS = [
|
|
|
2940
2974
|
{
|
|
2941
2975
|
name: "create_workspace_v2",
|
|
2942
2976
|
description:
|
|
2943
|
-
"
|
|
2977
|
+
"⛔ DO NOT USE WHEN A URL IS PROVIDED — use `create_workspace_from_url` instead. THIS tool is for STRUCTURED, PRE-EXTRACTED business info ONLY (typically a Google Maps paste the operator already parsed into fields). " +
|
|
2978
|
+
"PREFERRED for STRUCTURED-INPUT workspaces (v1.4+) when no URL is available. MCP-native workspace creation: bootstraps the workspace via the v1 orchestrator (CRM, booking, intake, theme, pipeline) AND returns a list of v2 page blocks the IDE agent will now generate using its own LLM. " +
|
|
2944
2979
|
"Flow: 1) call this tool with the operator's business info; 2) for each block in `v2.recommended_blocks`, call get_block_skill(name) and use your LLM to generate props matching the SKILL.md prompt + schema; 3) call persist_block({ workspace_id, block_name, generation_prompt, props }) for each; 4) call complete_workspace_v2({ workspace_id }). " +
|
|
2945
2980
|
"MANDATORY FOLLOW-UP: After this returns `status: 'ready'` AND after all blocks land via persist_block + complete_workspace_v2, ask the operator verbatim 'What email should I use for your account?' Then call finalize_workspace({ workspace_id, email }). The admin dashboard URL is created by finalize_workspace, not here. " +
|
|
2946
2981
|
"Why v2: v1 generated all copy server-side from a hardcoded personality system, which produced layer-mismatch bugs every time a new niche was tested. v2 puts the LLM in your context (the IDE agent), reads from one SKILL.md per block, and the generated copy is naturally niche-aware. The operator can later say 'change the hero' and you customize it via persist_block with a customization payload.",
|
|
@@ -5060,6 +5095,11 @@ export const TOOLS = [
|
|
|
5060
5095
|
publish_notes: str(
|
|
5061
5096
|
"Optional one-line audit note (e.g. 'Added emergency-call FAQ').",
|
|
5062
5097
|
),
|
|
5098
|
+
regenerate_synthesized: {
|
|
5099
|
+
type: "boolean",
|
|
5100
|
+
description:
|
|
5101
|
+
"Optional. When true, regenerate the synthesized portion of the chatbot's FAQ from the current soul. Extracted and operator-added FAQ entries are preserved.",
|
|
5102
|
+
},
|
|
5063
5103
|
},
|
|
5064
5104
|
["workspace_id"],
|
|
5065
5105
|
),
|
|
@@ -5125,6 +5165,7 @@ export const TOOLS = [
|
|
|
5125
5165
|
agent_id: agentId,
|
|
5126
5166
|
patch,
|
|
5127
5167
|
publish_notes: args.publish_notes ?? undefined,
|
|
5168
|
+
regenerate_synthesized: args.regenerate_synthesized === true ? true : undefined,
|
|
5128
5169
|
},
|
|
5129
5170
|
workspace_id: ws,
|
|
5130
5171
|
});
|