@seldonframe/mcp 1.57.0 → 1.58.0

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 CHANGED
@@ -1,59 +1,59 @@
1
- {
2
- "name": "@seldonframe/mcp",
3
- "version": "1.57.0",
4
- "mcpName": "io.github.seldonframe/seldonframe-mcp",
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
- "license": "AGPL-3.0-or-later",
7
- "type": "module",
8
- "bin": {
9
- "seldonframe-mcp": "src/index.js"
10
- },
11
- "files": [
12
- "src",
13
- "README.md"
14
- ],
15
- "engines": {
16
- "node": ">=18"
17
- },
18
- "scripts": {
19
- "start": "node src/index.js",
20
- "check:syntax": "node --check --input-type=module < src/index.js && node --check --input-type=module < src/client.js && node --check --input-type=module < src/tools.js && node --check --input-type=module < src/welcome.js",
21
- "prepublishOnly": "npm run check:syntax"
22
- },
23
- "dependencies": {
24
- "@modelcontextprotocol/sdk": "^1.0.4"
25
- },
26
- "keywords": [
27
- "mcp",
28
- "model-context-protocol",
29
- "seldonframe",
30
- "ai",
31
- "agents",
32
- "business-os",
33
- "claude-code",
34
- "crm",
35
- "gohighlevel-alternative",
36
- "gohighlevel",
37
- "agency",
38
- "whitelabel",
39
- "partner-agency",
40
- "booking",
41
- "intake-form",
42
- "landing-page",
43
- "local-service-business",
44
- "sms",
45
- "twilio",
46
- "ai-receptionist",
47
- "ai-chatbot",
48
- "missed-call"
49
- ],
50
- "homepage": "https://seldonframe.com",
51
- "repository": {
52
- "type": "git",
53
- "url": "https://github.com/seldonframe/seldonframe",
54
- "directory": "skills/mcp-server"
55
- },
56
- "publishConfig": {
57
- "access": "public"
58
- }
59
- }
1
+ {
2
+ "name": "@seldonframe/mcp",
3
+ "version": "1.58.0",
4
+ "mcpName": "io.github.seldonframe/seldonframe-mcp",
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
+ "license": "AGPL-3.0-or-later",
7
+ "type": "module",
8
+ "bin": {
9
+ "seldonframe-mcp": "src/index.js"
10
+ },
11
+ "files": [
12
+ "src",
13
+ "README.md"
14
+ ],
15
+ "engines": {
16
+ "node": ">=18"
17
+ },
18
+ "scripts": {
19
+ "start": "node src/index.js",
20
+ "check:syntax": "node --check --input-type=module < src/index.js && node --check --input-type=module < src/client.js && node --check --input-type=module < src/tools.js && node --check --input-type=module < src/welcome.js",
21
+ "prepublishOnly": "npm run check:syntax"
22
+ },
23
+ "dependencies": {
24
+ "@modelcontextprotocol/sdk": "^1.0.4"
25
+ },
26
+ "keywords": [
27
+ "mcp",
28
+ "model-context-protocol",
29
+ "seldonframe",
30
+ "ai",
31
+ "agents",
32
+ "business-os",
33
+ "claude-code",
34
+ "crm",
35
+ "gohighlevel-alternative",
36
+ "gohighlevel",
37
+ "agency",
38
+ "whitelabel",
39
+ "partner-agency",
40
+ "booking",
41
+ "intake-form",
42
+ "landing-page",
43
+ "local-service-business",
44
+ "sms",
45
+ "twilio",
46
+ "ai-receptionist",
47
+ "ai-chatbot",
48
+ "missed-call"
49
+ ],
50
+ "homepage": "https://seldonframe.com",
51
+ "repository": {
52
+ "type": "git",
53
+ "url": "git+https://github.com/seldonframe/seldonframe.git",
54
+ "directory": "skills/mcp-server"
55
+ },
56
+ "publishConfig": {
57
+ "access": "public"
58
+ }
59
+ }
@@ -15,9 +15,16 @@
15
15
  * @param {string|null} args.aestheticArchetype — workspace's classified
16
16
  * archetype (from snapshot.theme.aestheticArchetype). Used in the
17
17
  * closing landing-page nudge.
18
+ * @param {string|null} [args.adminUrl] — bearer-token-scoped admin URL
19
+ * (built in tools.js as `${appHost}/admin/${workspaceId}?token=${bearer}`,
20
+ * same variable the welcome-email path already uses). Takes priority
21
+ * over snapshot.ops_stack.admin_url, which is tokenless (the snapshot
22
+ * endpoint has no bearer to mint one) and 404s at /admin/invalid if
23
+ * printed as-is. Falls back to the tokenless value only if omitted, so
24
+ * existing callers that don't pass it keep working.
18
25
  * @returns {string} the formatted operator summary
19
26
  */
20
- export function buildFinalizeSummary({ snapshot, durationSec, aestheticArchetype }) {
27
+ export function buildFinalizeSummary({ snapshot, durationSec, aestheticArchetype, adminUrl = null }) {
21
28
  const ws = snapshot.workspace ?? {};
22
29
  const businessName = ws.name ?? "Your workspace";
23
30
  const chatbot = snapshot.chatbot ?? null;
@@ -57,7 +64,10 @@ export function buildFinalizeSummary({ snapshot, durationSec, aestheticArchetype
57
64
  // Ops stack URLs
58
65
  lines.push(`📅 Booking: ${opsStack.booking_url ?? snapshot.public_urls?.book ?? ""}`);
59
66
  lines.push(`📝 Intake: ${opsStack.intake_url ?? snapshot.public_urls?.intake ?? ""}`);
60
- lines.push(`🔧 Admin: ${opsStack.admin_url ?? ""}`);
67
+ // The token-bearing adminUrl (computed in tools.js from the workspace's
68
+ // bearer) is required to open the dashboard — the snapshot's
69
+ // ops_stack.admin_url has no token and 404s at /admin/invalid if clicked.
70
+ lines.push(`🔧 Admin: ${adminUrl ?? opsStack.admin_url ?? ""}`);
61
71
  lines.push("");
62
72
 
63
73
  // 7-automation callout
package/src/tools.js CHANGED
@@ -914,6 +914,9 @@ export const TOOLS = [
914
914
  snapshot,
915
915
  durationSec: 0, // smoke test reports actual duration via Vercel logs, not the summary text
916
916
  aestheticArchetype,
917
+ adminUrl, // token-bearing (same variable the welcome-email body uses below) —
918
+ // without this the summary's Admin line falls back to the snapshot's
919
+ // tokenless ops_stack.admin_url and 404s at /admin/invalid when clicked.
917
920
  });
918
921
 
919
922
  return {
@@ -5086,11 +5089,13 @@ export const TOOLS = [
5086
5089
  error: "publish_failed_but_agent_created",
5087
5090
  agent: createResult.agent,
5088
5091
  embed_url: createResult.embed_url,
5089
- turn_url: createResult.turn_url,
5092
+ turn_api_url: createResult.turn_url,
5093
+ turn_api_method: "POST",
5090
5094
  publish_detail: publishResult,
5091
5095
  steps,
5092
5096
  next_steps: [
5093
5097
  `Agent ${agentId} was created but couldn't be published to test. Call publish_agent({ agent_id: '${agentId}', status: 'test' }) manually, or check the dashboard at /agents/${agentId}`,
5098
+ `Turn API (POST) — this is not a clickable link, it's a POST-only endpoint: curl -sX POST ${createResult.turn_url} -H "Content-Type: application/json" -d '{"message":"hi"}'`,
5094
5099
  ],
5095
5100
  };
5096
5101
  }
@@ -5114,7 +5119,8 @@ export const TOOLS = [
5114
5119
  ok: true,
5115
5120
  agent: createResult.agent,
5116
5121
  embed_url: createResult.embed_url,
5117
- turn_url: createResult.turn_url,
5122
+ turn_api_url: createResult.turn_url,
5123
+ turn_api_method: "POST",
5118
5124
  dashboard_url: dashboardUrl,
5119
5125
  sandbox_url: `${dashboardUrl}/test`,
5120
5126
  llm_mode: llmMode,
@@ -5125,6 +5131,7 @@ export const TOOLS = [
5125
5131
  `3. When ready, publish to live: call publish_agent({ agent_id: '${agentId}', status: 'live' }) — auto-runs eval gate, requires ≥87.5% pass.`,
5126
5132
  `4. Add to the operator's SF-hosted landing page (one MCP call): embed_chatbot_on_workspace_landing({ workspace_id, agent_id: '${agentId}' }) — the chatbot bubble appears bottom-right on every public page. (For an external website the operator owns, paste this snippet manually: <script src="${createResult.embed_url}" async></script>)`,
5127
5133
  `5. ${llmKeyNote}`,
5134
+ `6. Turn API (POST) — not a clickable link, it's a POST-only endpoint: curl -sX POST ${createResult.turn_url} -H "Content-Type: application/json" -d '{"message":"hi"}'`,
5128
5135
  ],
5129
5136
  };
5130
5137
  },
package/src/welcome.js CHANGED
@@ -109,7 +109,7 @@ of v1.28.0 this is **ONE tool call**:
109
109
  // /settings/integrations/llm. Pass explicitly only when you need
110
110
  // per-workspace billing isolation (white-label / agency).
111
111
  })
112
- // → returns { agent, embed_url, turn_url, dashboard_url, llm_mode, next_steps }
112
+ // → returns { agent, embed_url, turn_api_url, turn_api_method: "POST", dashboard_url, llm_mode, next_steps }
113
113
  // Internally: creates agent, publishes to test. Skips set_llm_key when
114
114
  // no key supplied (platform fallback in lib/ai/client.ts handles inference).
115
115