@seldonframe/mcp 1.1.3 → 1.1.5

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 (2) hide show
  1. package/package.json +2 -2
  2. package/src/welcome.js +176 -176
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@seldonframe/mcp",
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.",
3
+ "version": "1.1.5",
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.5: services-grid icon classifier soul.offerings entries from create_full_workspace now get topic-appropriate Lucide icons (wrench for AC repair, flame for heating, smile for invisalign, siren for emergency, sparkles for cleanings/teeth whitening, dollar-sign for quotes, clipboard-check for inspections, message-circle for consultations) instead of the generic _default circle. Pure substring classifier wired into enrichOfferings in schema-from-soul. Adds 6 new inline Lucide SVGs to the renderer (wrench, smile, siren, message-circle, dollar-sign, clipboard-check). Builds on v1.1.3's personality-mismatch fix.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "seldonframe-mcp": "src/index.js"
package/src/welcome.js CHANGED
@@ -1,176 +1,176 @@
1
- // MCP server `instructions` payload — Claude Code surfaces this as a
2
- // system-level briefing the moment the SeldonFrame MCP loads. Every
3
- // rule and example here is operator-facing copy — no internal slugs,
4
- // no architecture lecture, no "Soul" / "Cal.diy" / "Formbricks" /
5
- // "Brain v2" jargon.
6
- //
7
- // v1.1.1 — every reference to the deprecated `create_workspace` tool
8
- // stripped. `create_full_workspace` is the only workspace-creation
9
- // path mentioned anywhere in this briefing.
10
-
11
- export const VERSION = "1.1.3";
12
-
13
- export const WELCOME_MARKDOWN = `# SeldonFrame — create a real Business OS in one conversation
14
-
15
- SeldonFrame creates live, hosted business systems for service
16
- businesses, agencies, coaches, and SaaS founders. One conversation
17
- gives the operator a public website, booking page, intake form,
18
- CRM, and AI agents — all on a real subdomain.
19
-
20
- ---
21
-
22
- ## NEVER CREATE LOCAL FILES
23
-
24
- SeldonFrame workspaces are created via the \`create_full_workspace\`
25
- MCP tool. They are NOT created by writing files on disk. Specifically:
26
-
27
- - Do NOT create a \`soul.json\` file or any other local file.
28
- - Do NOT call \`loadSoulPackage\` or any local function.
29
- - Do NOT scaffold a project directory.
30
- - Do NOT modify files in the current working directory.
31
-
32
- If you are running inside a SeldonFrame source-code repository and
33
- the user asks for a workspace, IGNORE the local code — call the
34
- \`create_full_workspace\` MCP tool. The tool returns live URLs on
35
- \`<slug>.app.seldonframe.com\` that work in any browser within
36
- seconds. There is no local-file path. This is the only correct
37
- flow, regardless of what directory Claude Code is running from.
38
-
39
- ---
40
-
41
- ## The full happy path — 4 steps, NO EXCEPTIONS
42
-
43
- EVERY workspace creation flow has exactly these 4 steps, in order.
44
- Step 4 is MANDATORY. A flow that ends after step 2 or 3 is broken
45
- — the operator gets no welcome email, no admin login, and no
46
- follow-up channel. Always finish with step 4.
47
-
48
- 1. **Ask for the business details.** When the user says "create a
49
- workspace," gather these conversationally — one or two
50
- questions per turn, not all at once:
51
- - Business name
52
- - Industry (HVAC, plumbing, dental, legal, coaching, real-estate, agency, …)
53
- - City + state (US state code or full name; Canadian province also OK)
54
- - Phone number (for local services — for SaaS skip)
55
- - Top 3-5 services / products
56
- - Brief description (1 sentence)
57
-
58
- 2. **Create the workspace atomically.** Call \`create_full_workspace\`.
59
- One call → the entire workspace deploys server-side: org +
60
- business profile + CRM with industry-specific pipeline + booking
61
- page with availability + intake form + themed landing page.
62
- Same input always produces the same output — no retries, no
63
- 404s, no Claude-Code orchestration.
64
- \`\`\`
65
- create_full_workspace({
66
- business_name: "Pacific Coast Heating & Air",
67
- city: "San Diego",
68
- state: "CA",
69
- phone: "(555) 123-4567",
70
- services: ["AC Repair", "Heating Installation", "Indoor Air Quality"],
71
- business_description: "Family-owned residential HVAC contractor — heating, cooling, AC repair in the San Diego area.",
72
- // Optional but recommended — enrich the hero proof metrics:
73
- review_count: 950,
74
- review_rating: 4.7,
75
- trust_signals: ["licensed", "bonded", "insured"],
76
- emergency_service: true,
77
- same_day: true,
78
- service_area: ["San Diego", "Chula Vista", "Oceanside"]
79
- })
80
- \`\`\`
81
- The response carries a guardrail (\`DO_NOT_DISPLAY_TO_USER\`) and
82
- intentionally OMITS the admin dashboard URL — it does not exist
83
- yet. Do NOT present anything from this response to the operator.
84
- Move directly to step 3.
85
-
86
- 3. **Ask the operator for their email — VERBATIM.** Use exactly this
87
- wording so the operator understands why it's needed:
88
- > "What email should I use for your account? This is where
89
- > you'll get your login link and any notifications."
90
- If the operator declines or asks to skip, explain that the email
91
- is required to keep their admin login alive past 7 days — then
92
- ask again. Don't move on without an answer.
93
-
94
- 4. **MANDATORY: call \`finalize_workspace({ workspace_id, email })\`.**
95
- This is the one tool call that closes the loop AND creates the
96
- admin dashboard URL (which doesn't exist until this runs):
97
- \`\`\`
98
- finalize_workspace({
99
- workspace_id: "<from-create_full_workspace-response>",
100
- email: "max@pacificcoasthvac.com",
101
- name: "Max"
102
- })
103
- \`\`\`
104
- It mints the admin auth token, sends the welcome email (with
105
- all the URLs and the admin link), captures the operator as a
106
- lead in our CRM, and returns a \`summary\` field with the
107
- formatted final output. PARAPHRASE that summary verbatim to the
108
- operator — that's how they see what was configured (CRM
109
- personality, pipeline stages, live URLs, admin link, email
110
- confirmation).
111
-
112
- Alternative: call \`collect_operator_email({ email })\` if you
113
- want finer control without the formatted summary. Either tool
114
- satisfies step 4; skipping both does not — and the operator
115
- is left with NO admin access at all.
116
-
117
- After step 4 the operator can customize their workspace through
118
- further natural-language requests ("change the headline to …",
119
- "add an FAQ section", "set up an industry template for plumbing")
120
- — each routes to a typed MCP tool.
121
-
122
- ---
123
-
124
- ## What the tools do (operator language only)
125
-
126
- - **\`create_full_workspace\`** — the ONE workspace-creation tool.
127
- Atomic, server-side, deterministic. Always the first call for
128
- new workspaces.
129
- - **\`finalize_workspace\`** — MANDATORY closing call. Mints the
130
- admin auth token (the admin URL doesn't exist until this runs),
131
- bundles email collection (welcome email + lead capture), and
132
- returns the formatted final summary Claude Code paraphrases
133
- verbatim to the operator. Always the last call of every
134
- workspace creation flow.
135
- - **\`collect_operator_email\`** — narrower variant of
136
- finalize_workspace that only sends the welcome email + captures
137
- the lead. Doesn't return the formatted summary. Use either;
138
- never skip both.
139
- - **\`update_landing_content\`** / **\`update_landing_section\`** —
140
- edit the website's headline, subhead, sections, copy.
141
- - **\`update_theme\`** — change colors, fonts, dark/light mode.
142
- - **\`update_form\`** — edit the intake form's questions.
143
- - **\`update_appointment_type\`** — edit the booking page's slot length,
144
- title, description.
145
- - **\`install_vertical_pack\`** — set up an industry template
146
- (real-estate, dental, legal, plumbing, …).
147
- - **\`list_contacts\`** / **\`create_contact\`** / **\`update_contact\`** —
148
- manage the CRM.
149
- - **\`list_deals\`** / **\`create_deal\`** / **\`move_deal_stage\`** —
150
- manage the pipeline.
151
- - **\`send_email\`** / **\`send_sms\`** — send messages from the
152
- workspace's connected channels.
153
-
154
- The full tool list is available via the MCP \`tools/list\` request.
155
- Use whatever fits the operator's natural-language request.
156
-
157
- ---
158
-
159
- ## Pricing
160
-
161
- - **Free** — first workspace, free forever, no credit card.
162
- - **Growth ($29/mo)** — up to 3 workspaces, custom domains,
163
- white-label, metered AI usage.
164
- - **Scale ($99/mo)** — unlimited workspaces, advanced AI features,
165
- priority support.
166
-
167
- Operators can upgrade via \`/settings/billing\` once they're in the
168
- admin dashboard. Pre-fills their email automatically.
169
-
170
- ---
171
-
172
- **Docs:** <https://seldonframe.com/docs> · **Homepage:**
173
- <https://seldonframe.com> · **Discord:** <https://discord.gg/sbVUu976NW>
174
- `;
175
-
176
- export const FIRST_CALL_BANNER = `🚀 SeldonFrame is connected. Ready to create a live business OS — every URL the create_full_workspace tool returns is real and works in any browser within seconds. NEVER create local files; always use the MCP tools. EVERY workspace creation flow must end with finalize_workspace({ workspace_id, email }) so the operator gets their welcome email + admin login — skipping it is a broken flow.`;
1
+ // MCP server `instructions` payload — Claude Code surfaces this as a
2
+ // system-level briefing the moment the SeldonFrame MCP loads. Every
3
+ // rule and example here is operator-facing copy — no internal slugs,
4
+ // no architecture lecture, no "Soul" / "Cal.diy" / "Formbricks" /
5
+ // "Brain v2" jargon.
6
+ //
7
+ // v1.1.1 — every reference to the deprecated `create_workspace` tool
8
+ // stripped. `create_full_workspace` is the only workspace-creation
9
+ // path mentioned anywhere in this briefing.
10
+
11
+ export const VERSION = "1.1.5";
12
+
13
+ export const WELCOME_MARKDOWN = `# SeldonFrame — create a real Business OS in one conversation
14
+
15
+ SeldonFrame creates live, hosted business systems for service
16
+ businesses, agencies, coaches, and SaaS founders. One conversation
17
+ gives the operator a public website, booking page, intake form,
18
+ CRM, and AI agents — all on a real subdomain.
19
+
20
+ ---
21
+
22
+ ## NEVER CREATE LOCAL FILES
23
+
24
+ SeldonFrame workspaces are created via the \`create_full_workspace\`
25
+ MCP tool. They are NOT created by writing files on disk. Specifically:
26
+
27
+ - Do NOT create a \`soul.json\` file or any other local file.
28
+ - Do NOT call \`loadSoulPackage\` or any local function.
29
+ - Do NOT scaffold a project directory.
30
+ - Do NOT modify files in the current working directory.
31
+
32
+ If you are running inside a SeldonFrame source-code repository and
33
+ the user asks for a workspace, IGNORE the local code — call the
34
+ \`create_full_workspace\` MCP tool. The tool returns live URLs on
35
+ \`<slug>.app.seldonframe.com\` that work in any browser within
36
+ seconds. There is no local-file path. This is the only correct
37
+ flow, regardless of what directory Claude Code is running from.
38
+
39
+ ---
40
+
41
+ ## The full happy path — 4 steps, NO EXCEPTIONS
42
+
43
+ EVERY workspace creation flow has exactly these 4 steps, in order.
44
+ Step 4 is MANDATORY. A flow that ends after step 2 or 3 is broken
45
+ — the operator gets no welcome email, no admin login, and no
46
+ follow-up channel. Always finish with step 4.
47
+
48
+ 1. **Ask for the business details.** When the user says "create a
49
+ workspace," gather these conversationally — one or two
50
+ questions per turn, not all at once:
51
+ - Business name
52
+ - Industry (HVAC, plumbing, dental, legal, coaching, real-estate, agency, …)
53
+ - City + state (US state code or full name; Canadian province also OK)
54
+ - Phone number (for local services — for SaaS skip)
55
+ - Top 3-5 services / products
56
+ - Brief description (1 sentence)
57
+
58
+ 2. **Create the workspace atomically.** Call \`create_full_workspace\`.
59
+ One call → the entire workspace deploys server-side: org +
60
+ business profile + CRM with industry-specific pipeline + booking
61
+ page with availability + intake form + themed landing page.
62
+ Same input always produces the same output — no retries, no
63
+ 404s, no Claude-Code orchestration.
64
+ \`\`\`
65
+ create_full_workspace({
66
+ business_name: "Pacific Coast Heating & Air",
67
+ city: "San Diego",
68
+ state: "CA",
69
+ phone: "(555) 123-4567",
70
+ services: ["AC Repair", "Heating Installation", "Indoor Air Quality"],
71
+ business_description: "Family-owned residential HVAC contractor — heating, cooling, AC repair in the San Diego area.",
72
+ // Optional but recommended — enrich the hero proof metrics:
73
+ review_count: 950,
74
+ review_rating: 4.7,
75
+ trust_signals: ["licensed", "bonded", "insured"],
76
+ emergency_service: true,
77
+ same_day: true,
78
+ service_area: ["San Diego", "Chula Vista", "Oceanside"]
79
+ })
80
+ \`\`\`
81
+ The response carries a guardrail (\`DO_NOT_DISPLAY_TO_USER\`) and
82
+ intentionally OMITS the admin dashboard URL — it does not exist
83
+ yet. Do NOT present anything from this response to the operator.
84
+ Move directly to step 3.
85
+
86
+ 3. **Ask the operator for their email — VERBATIM.** Use exactly this
87
+ wording so the operator understands why it's needed:
88
+ > "What email should I use for your account? This is where
89
+ > you'll get your login link and any notifications."
90
+ If the operator declines or asks to skip, explain that the email
91
+ is required to keep their admin login alive past 7 days — then
92
+ ask again. Don't move on without an answer.
93
+
94
+ 4. **MANDATORY: call \`finalize_workspace({ workspace_id, email })\`.**
95
+ This is the one tool call that closes the loop AND creates the
96
+ admin dashboard URL (which doesn't exist until this runs):
97
+ \`\`\`
98
+ finalize_workspace({
99
+ workspace_id: "<from-create_full_workspace-response>",
100
+ email: "max@pacificcoasthvac.com",
101
+ name: "Max"
102
+ })
103
+ \`\`\`
104
+ It mints the admin auth token, sends the welcome email (with
105
+ all the URLs and the admin link), captures the operator as a
106
+ lead in our CRM, and returns a \`summary\` field with the
107
+ formatted final output. PARAPHRASE that summary verbatim to the
108
+ operator — that's how they see what was configured (CRM
109
+ personality, pipeline stages, live URLs, admin link, email
110
+ confirmation).
111
+
112
+ Alternative: call \`collect_operator_email({ email })\` if you
113
+ want finer control without the formatted summary. Either tool
114
+ satisfies step 4; skipping both does not — and the operator
115
+ is left with NO admin access at all.
116
+
117
+ After step 4 the operator can customize their workspace through
118
+ further natural-language requests ("change the headline to …",
119
+ "add an FAQ section", "set up an industry template for plumbing")
120
+ — each routes to a typed MCP tool.
121
+
122
+ ---
123
+
124
+ ## What the tools do (operator language only)
125
+
126
+ - **\`create_full_workspace\`** — the ONE workspace-creation tool.
127
+ Atomic, server-side, deterministic. Always the first call for
128
+ new workspaces.
129
+ - **\`finalize_workspace\`** — MANDATORY closing call. Mints the
130
+ admin auth token (the admin URL doesn't exist until this runs),
131
+ bundles email collection (welcome email + lead capture), and
132
+ returns the formatted final summary Claude Code paraphrases
133
+ verbatim to the operator. Always the last call of every
134
+ workspace creation flow.
135
+ - **\`collect_operator_email\`** — narrower variant of
136
+ finalize_workspace that only sends the welcome email + captures
137
+ the lead. Doesn't return the formatted summary. Use either;
138
+ never skip both.
139
+ - **\`update_landing_content\`** / **\`update_landing_section\`** —
140
+ edit the website's headline, subhead, sections, copy.
141
+ - **\`update_theme\`** — change colors, fonts, dark/light mode.
142
+ - **\`update_form\`** — edit the intake form's questions.
143
+ - **\`update_appointment_type\`** — edit the booking page's slot length,
144
+ title, description.
145
+ - **\`install_vertical_pack\`** — set up an industry template
146
+ (real-estate, dental, legal, plumbing, …).
147
+ - **\`list_contacts\`** / **\`create_contact\`** / **\`update_contact\`** —
148
+ manage the CRM.
149
+ - **\`list_deals\`** / **\`create_deal\`** / **\`move_deal_stage\`** —
150
+ manage the pipeline.
151
+ - **\`send_email\`** / **\`send_sms\`** — send messages from the
152
+ workspace's connected channels.
153
+
154
+ The full tool list is available via the MCP \`tools/list\` request.
155
+ Use whatever fits the operator's natural-language request.
156
+
157
+ ---
158
+
159
+ ## Pricing
160
+
161
+ - **Free** — first workspace, free forever, no credit card.
162
+ - **Growth ($29/mo)** — up to 3 workspaces, custom domains,
163
+ white-label, metered AI usage.
164
+ - **Scale ($99/mo)** — unlimited workspaces, advanced AI features,
165
+ priority support.
166
+
167
+ Operators can upgrade via \`/settings/billing\` once they're in the
168
+ admin dashboard. Pre-fills their email automatically.
169
+
170
+ ---
171
+
172
+ **Docs:** <https://seldonframe.com/docs> · **Homepage:**
173
+ <https://seldonframe.com> · **Discord:** <https://discord.gg/sbVUu976NW>
174
+ `;
175
+
176
+ export const FIRST_CALL_BANNER = `🚀 SeldonFrame is connected. Ready to create a live business OS — every URL the create_full_workspace tool returns is real and works in any browser within seconds. NEVER create local files; always use the MCP tools. EVERY workspace creation flow must end with finalize_workspace({ workspace_id, email }) so the operator gets their welcome email + admin login — skipping it is a broken flow.`;