@seldonframe/mcp 1.0.0 → 1.0.2
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/README.md +112 -112
- package/package.json +42 -42
- package/src/client.js +194 -194
- package/src/index.js +81 -49
- package/src/tools.js +2001 -2001
- package/src/welcome.js +132 -80
package/src/welcome.js
CHANGED
|
@@ -1,80 +1,132 @@
|
|
|
1
|
-
export const VERSION = "1.0.
|
|
2
|
-
|
|
3
|
-
export const WELCOME_MARKDOWN = `# SeldonFrame — your AI-native Business OS
|
|
4
|
-
|
|
5
|
-
One command creates a real, hosted workspace with CRM, Cal.diy booking,
|
|
6
|
-
Formbricks intake, and Brain v2 — live on \`<slug>.app.seldonframe.com\`.
|
|
7
|
-
No signup, no key, no setup. Just build.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Architecture: YOU are the reasoning engine
|
|
12
|
-
|
|
13
|
-
SeldonFrame's backend is pure state + artifacts. Natural-language reasoning
|
|
14
|
-
happens right here in this Claude Code session — YOU interpret the user's
|
|
15
|
-
intent and call the appropriate typed tool. The backend applies the change
|
|
16
|
-
deterministically. Zero backend LLM cost means the free tier is genuinely
|
|
17
|
-
free forever.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
1
|
+
export const VERSION = "1.0.2";
|
|
2
|
+
|
|
3
|
+
export const WELCOME_MARKDOWN = `# SeldonFrame — your AI-native Business OS
|
|
4
|
+
|
|
5
|
+
One command creates a real, hosted workspace with CRM, Cal.diy booking,
|
|
6
|
+
Formbricks intake, and Brain v2 — live on \`<slug>.app.seldonframe.com\`.
|
|
7
|
+
No signup, no key, no setup. Just build.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Architecture: YOU are the reasoning engine
|
|
12
|
+
|
|
13
|
+
SeldonFrame's backend is pure state + artifacts. Natural-language reasoning
|
|
14
|
+
happens right here in this Claude Code session — YOU interpret the user's
|
|
15
|
+
intent and call the appropriate typed tool. The backend applies the change
|
|
16
|
+
deterministically. Zero backend LLM cost means the free tier is genuinely
|
|
17
|
+
free forever.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Quick start — describe your business
|
|
22
|
+
|
|
23
|
+
To create a personalized workspace in a single turn, ask the user to paste
|
|
24
|
+
this template into Claude Code and fill in their details:
|
|
25
|
+
|
|
26
|
+
\`\`\`text
|
|
27
|
+
Create a workspace for my business:
|
|
28
|
+
- Business name: [your business name]
|
|
29
|
+
- Industry: [e.g., hvac, dental, legal, coaching, real-estate, salon, auto-repair]
|
|
30
|
+
- Location: [city, state/province]
|
|
31
|
+
- Operating hours: [e.g., Mon-Sat 7am-7pm]
|
|
32
|
+
- Team size: [number of people / trucks / stations]
|
|
33
|
+
- Services offered: [list your main services]
|
|
34
|
+
- Website: [URL, if you have one]
|
|
35
|
+
\`\`\`
|
|
36
|
+
|
|
37
|
+
When the user replies with that filled in, YOU should orchestrate the
|
|
38
|
+
following tool sequence (each call's response is structured — chain them):
|
|
39
|
+
|
|
40
|
+
1. \`create_workspace({ name: "<business name>", source: "<website if provided, else a 1-paragraph description>" })\`
|
|
41
|
+
— mints the hosted workspace + bearer token. The \`source\` arg seeds the Soul.
|
|
42
|
+
2. If \`industry\` is provided, call \`install_vertical_pack({ pack: "<industry-slug>" })\`
|
|
43
|
+
— adds domain-specific objects, fields, and views.
|
|
44
|
+
Built-in packs: \`real-estate-agency\`. For other industries, the backend
|
|
45
|
+
synthesizes a custom pack via \`/api/v1/verticals/generate\`. If a builtin
|
|
46
|
+
pack matches, prefer it; otherwise call generate first, then install.
|
|
47
|
+
3. If \`hours\` is provided, call \`configure_booking({ title, duration_minutes, description })\`
|
|
48
|
+
— sets the booking page defaults. Inline the parsed hours into \`description\`
|
|
49
|
+
(the booking schema doesn't take a per-day hours object yet).
|
|
50
|
+
4. If \`website\` was provided, the \`source\` URL passed to step 1 already
|
|
51
|
+
triggered a Soul fetch. Confirm via \`get_workspace_snapshot({})\` and
|
|
52
|
+
call \`submit_soul({ soul })\` if you can extract a richer structured Soul.
|
|
53
|
+
5. If \`services\` were listed, customize the intake form to capture
|
|
54
|
+
service-of-interest as a multi-select using \`customize_intake_form({ fields })\`.
|
|
55
|
+
|
|
56
|
+
Present the final result as a summary: live URLs (public + admin), what
|
|
57
|
+
was installed, and 2-3 next-best-action suggestions.
|
|
58
|
+
|
|
59
|
+
## If the user just says "create a workspace" without details
|
|
60
|
+
|
|
61
|
+
Ask these questions, one at a time, BEFORE calling \`create_workspace\`:
|
|
62
|
+
|
|
63
|
+
1. What's your business name?
|
|
64
|
+
2. What industry are you in? (suggest: hvac, dental, legal, coaching, real-estate, salon, auto-repair, consulting, fitness, other)
|
|
65
|
+
3. Where are you located? (city, state)
|
|
66
|
+
4. What are your operating hours?
|
|
67
|
+
5. What services do you offer? (3-5 main ones)
|
|
68
|
+
6. Do you have a website I can learn from? (optional)
|
|
69
|
+
|
|
70
|
+
Then run the orchestration above. Don't dump all six questions in one
|
|
71
|
+
message — ask conversationally so the user can think.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## How to customize a workspace later
|
|
76
|
+
|
|
77
|
+
1. Call \`get_workspace_snapshot({})\` to see current state, Soul, blocks, recent events.
|
|
78
|
+
2. Decide what to change based on the user's intent.
|
|
79
|
+
3. Call the right typed tool:
|
|
80
|
+
- \`update_landing_content({ headline, subhead, cta_label })\` — rewrite /
|
|
81
|
+
- \`customize_intake_form({ fields: [...] })\` — replace intake fields
|
|
82
|
+
- \`configure_booking({ title?, duration_minutes?, description? })\` — edit /book
|
|
83
|
+
- \`update_theme({ mode?, primary_color?, accent_color?, font_family? })\` — theme
|
|
84
|
+
- \`install_caldiy_booking({})\`, \`install_formbricks_intake({})\`, \`install_vertical_pack({ pack })\`
|
|
85
|
+
|
|
86
|
+
## Compiling a Soul from a URL
|
|
87
|
+
|
|
88
|
+
Soul compilation runs HERE, not on the backend:
|
|
89
|
+
|
|
90
|
+
1. \`fetch_source_for_soul({ url })\` — backend scrapes + normalizes (up to 256KB).
|
|
91
|
+
2. YOU extract a structured Soul (mission, audience, tone, offerings, ...).
|
|
92
|
+
3. \`submit_soul({ soul })\` — persist it. Subsequent snapshots reflect it.
|
|
93
|
+
|
|
94
|
+
## Tool surface
|
|
95
|
+
|
|
96
|
+
- **Workspace:** \`create_workspace\`, \`list_workspaces\`, \`switch_workspace\`,
|
|
97
|
+
\`clone_workspace\`, \`link_workspace_owner\`, \`get_workspace_snapshot\`
|
|
98
|
+
- **Blocks:** \`install_caldiy_booking\`, \`install_formbricks_intake\`, \`install_vertical_pack\`
|
|
99
|
+
- **Customize:** \`update_landing_content\`, \`customize_intake_form\`,
|
|
100
|
+
\`configure_booking\`, \`update_theme\`
|
|
101
|
+
- **Soul:** \`fetch_source_for_soul\`, \`submit_soul\`
|
|
102
|
+
- **Ops:** \`list_automations\`, \`connect_custom_domain\`, \`export_agent\`,
|
|
103
|
+
\`store_secret\`, \`list_secrets\`, \`rotate_secret\`
|
|
104
|
+
|
|
105
|
+
## When you'll need \`SELDONFRAME_API_KEY\`
|
|
106
|
+
|
|
107
|
+
The first workspace is free forever. Paid tiers (Starter $49/mo, Operator
|
|
108
|
+
$99/mo, Agency $149/mo) unlock additional workspaces, custom domains,
|
|
109
|
+
white-label, and advanced Brain capabilities. A key is required for:
|
|
110
|
+
|
|
111
|
+
- Adding a **second workspace**
|
|
112
|
+
- Connecting a **custom domain**
|
|
113
|
+
- Publishing, exporting agents, rotating org-scoped secrets
|
|
114
|
+
- Accessing the admin browser surface (\`/dashboard\`, \`/contacts\`, \`/deals\`)
|
|
115
|
+
after \`link_workspace_owner({})\`
|
|
116
|
+
|
|
117
|
+
Get one at <https://app.seldonframe.com/settings/api> and
|
|
118
|
+
\`export SELDONFRAME_API_KEY=sk-…\`. The MCP will pick it up on next restart.
|
|
119
|
+
|
|
120
|
+
### Upgrading an anonymous workspace to your account
|
|
121
|
+
|
|
122
|
+
Once a key is set, \`link_workspace_owner({})\` attaches the active
|
|
123
|
+
workspace to your real account. This unlocks the admin URLs
|
|
124
|
+
(\`/dashboard\`, \`/contacts\`, \`/deals\`) for browser use after sign-in.
|
|
125
|
+
The MCP bearer token stays valid — no rotation needed.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
**Docs:** <https://seldonframe.com/docs> · **Homepage:** <https://seldonframe.com> · **Pricing:** <https://seldonframe.com/#pricing>
|
|
130
|
+
`;
|
|
131
|
+
|
|
132
|
+
export const FIRST_CALL_BANNER = `🌑 Welcome to SeldonFrame. Your workspace is live — every URL above works right now. From here on, every tool response will include a \`next:\` array; follow it and you'll have a production-ready Business OS in under a minute.`;
|