@seldonframe/mcp 1.1.1 → 1.1.3
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 +2 -2
- package/src/tools.js +21 -82
- package/src/welcome.js +1 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seldonframe/mcp",
|
|
3
|
-
"version": "1.1.
|
|
4
|
-
"description": "MCP server for SeldonFrame — AI-native Business OS platform. One command creates a real, hosted workspace with a website, booking page, intake form, CRM, and AI agents. v1.1.
|
|
3
|
+
"version": "1.1.3",
|
|
4
|
+
"description": "MCP server for SeldonFrame — AI-native Business OS platform. One command creates a real, hosted workspace with a website, booking page, intake form, CRM, and AI agents. v1.1.3: fixes the personality-mismatch bug in create_full_workspace where dental / legal / agency workspaces seeded the wrong CRM personality (and wrong pipeline stages, intake fields, booking duration). Root cause: the orchestrator passed `industry: null` to the inner createAnonymousWorkspace, losing the industry hint, so the inner classifier fell back to the BUSINESS_TYPE_FALLBACK chain → coaching for any vertical whose keywords only live in the personality bank (dental, legal, agency). Fix: pass the industry hint through to the inner classifier so the inner personality decision matches the outer one. Plus a defensive override that re-writes settings.crmPersonality + reseeds the default pipeline stages to the orchestrator's classified personality if any future regression reintroduces the mismatch.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"seldonframe-mcp": "src/index.js"
|
package/src/tools.js
CHANGED
|
@@ -39,36 +39,11 @@ function wsOrDefault(workspace_id) {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export const TOOLS = [
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
// the "DEPRECATED" prefix in the description makes it obvious
|
|
48
|
-
// when the model is browsing tools. The handler does NOT call
|
|
49
|
-
// the API — it returns a redirect error immediately so even if
|
|
50
|
-
// Claude Code does invoke this, no workspace is created and the
|
|
51
|
-
// model is told exactly which tool to use instead.
|
|
52
|
-
name: "_legacy_create_workspace",
|
|
53
|
-
description:
|
|
54
|
-
"DEPRECATED — do not use. Use `create_full_workspace` instead for ALL workspace creation. This tool no longer creates anything; calling it returns an error pointing at the replacement. The atomic `create_full_workspace` runs the entire 13-step pipeline server-side in one call (workspace + business profile + CRM + booking + intake + landing page) and the admin URL is structurally created only by `finalize_workspace` — both fixes that the legacy multi-call sequence couldn't reliably deliver.",
|
|
55
|
-
inputSchema: obj({}),
|
|
56
|
-
handler: async () => {
|
|
57
|
-
return {
|
|
58
|
-
ok: false,
|
|
59
|
-
error:
|
|
60
|
-
"This tool is deprecated. Use create_full_workspace for all new workspaces.",
|
|
61
|
-
redirect_tool: "create_full_workspace",
|
|
62
|
-
why:
|
|
63
|
-
"create_full_workspace runs the entire workspace creation pipeline atomically server-side — same input always produces the same output, no retries, no Claude-Code orchestration. The admin dashboard URL is then created only by finalize_workspace, which structurally enforces the email-collection step. The legacy create_workspace path required Claude Code to chain 15-25 tool calls in some order and skipped finalize_workspace in practice.",
|
|
64
|
-
next_step: {
|
|
65
|
-
tool_to_call: "create_full_workspace",
|
|
66
|
-
docs:
|
|
67
|
-
"Pass: business_name, city, state, phone, services[], business_description (required), and any of: review_count, review_rating, certifications[], trust_signals[], emergency_service, same_day, service_area[].",
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
},
|
|
71
|
-
},
|
|
42
|
+
// May 2, 2026 (v1.1.2) — `create_workspace` (formerly
|
|
43
|
+
// `_legacy_create_workspace`) DELETED entirely from the tool registry.
|
|
44
|
+
// Deprecation in 1.1.1 didn't stop Claude Code from finding alternative
|
|
45
|
+
// multi-tool paths to compose a workspace. Removing the tool outright
|
|
46
|
+
// is the only structural way to force `create_full_workspace`.
|
|
72
47
|
{
|
|
73
48
|
name: "create_full_workspace",
|
|
74
49
|
description:
|
|
@@ -821,25 +796,14 @@ export const TOOLS = [
|
|
|
821
796
|
return api("GET", `/automations?workspace_id=${encodeURIComponent(ws)}`, { workspace_id: ws });
|
|
822
797
|
},
|
|
823
798
|
},
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
},
|
|
833
|
-
["pack"],
|
|
834
|
-
),
|
|
835
|
-
handler: async (a) => {
|
|
836
|
-
const ws = wsOrDefault(a.workspace_id);
|
|
837
|
-
return api("POST", "/packs/install", {
|
|
838
|
-
body: { pack: a.pack, workspace_id: ws },
|
|
839
|
-
workspace_id: ws,
|
|
840
|
-
});
|
|
841
|
-
},
|
|
842
|
-
},
|
|
799
|
+
// May 2, 2026 (v1.1.2) — `install_vertical_pack` DELETED entirely.
|
|
800
|
+
// The /packs/install endpoint doesn't exist, so this tool 404'd
|
|
801
|
+
// every time Claude Code reached for it. Industry-specific
|
|
802
|
+
// configuration (terminology, pipeline stages, intake fields,
|
|
803
|
+
// booking duration) is now driven by the CRMPersonality the
|
|
804
|
+
// server picks during create_full_workspace from the operator's
|
|
805
|
+
// services + business_description — no separate install step
|
|
806
|
+
// needed.
|
|
843
807
|
{
|
|
844
808
|
name: "install_caldiy_booking",
|
|
845
809
|
description:
|
|
@@ -2321,39 +2285,14 @@ export const TOOLS = [
|
|
|
2321
2285
|
return api("GET", `/landing/${encodeURIComponent(args.page_id)}`, { workspace_id: ws });
|
|
2322
2286
|
},
|
|
2323
2287
|
},
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
puck_data: {
|
|
2333
|
-
type: "object",
|
|
2334
|
-
description: "Optional Puck payload { content: [], root: {props}, zones: {} }.",
|
|
2335
|
-
},
|
|
2336
|
-
published: {
|
|
2337
|
-
type: "boolean",
|
|
2338
|
-
description: "If true, publish the page immediately. Default: draft.",
|
|
2339
|
-
},
|
|
2340
|
-
workspace_id: str("Optional. Falls back to the active workspace."),
|
|
2341
|
-
},
|
|
2342
|
-
["title"],
|
|
2343
|
-
),
|
|
2344
|
-
handler: async (args) => {
|
|
2345
|
-
const ws = wsOrDefault(args.workspace_id);
|
|
2346
|
-
return api("POST", "/landing", {
|
|
2347
|
-
body: {
|
|
2348
|
-
title: args.title,
|
|
2349
|
-
slug: args.slug,
|
|
2350
|
-
puckData: args.puck_data,
|
|
2351
|
-
published: Boolean(args.published),
|
|
2352
|
-
},
|
|
2353
|
-
workspace_id: ws,
|
|
2354
|
-
});
|
|
2355
|
-
},
|
|
2356
|
-
},
|
|
2288
|
+
// May 2, 2026 (v1.1.2) — `create_landing_page` DELETED entirely.
|
|
2289
|
+
// Every workspace already has a default landing page seeded by
|
|
2290
|
+
// create_full_workspace (via createDefaultLandingPage +
|
|
2291
|
+
// seedLandingFromSoul). Calling create_landing_page tried to
|
|
2292
|
+
// create a SECOND page, which the Free-tier landingPages limit (=1)
|
|
2293
|
+
// rejected with `upgrade_required` — surfacing as a 500 on every
|
|
2294
|
+
// demo run. Customization goes through update_landing_page on
|
|
2295
|
+
// the existing page; no second page is ever needed.
|
|
2357
2296
|
{
|
|
2358
2297
|
name: "update_landing_page",
|
|
2359
2298
|
description:
|
package/src/welcome.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// stripped. `create_full_workspace` is the only workspace-creation
|
|
9
9
|
// path mentioned anywhere in this briefing.
|
|
10
10
|
|
|
11
|
-
export const VERSION = "1.1.
|
|
11
|
+
export const VERSION = "1.1.3";
|
|
12
12
|
|
|
13
13
|
export const WELCOME_MARKDOWN = `# SeldonFrame — create a real Business OS in one conversation
|
|
14
14
|
|