@seldonframe/mcp 1.0.3 → 1.0.4

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/tools.js +13 -3
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@seldonframe/mcp",
3
- "version": "1.0.3",
4
- "description": "MCP server for SeldonFrame — AI-native Business OS platform. One command creates a real hosted workspace with CRM, booking, intake, and Brain v2. v1.0.3: surfaces admin URL prominently in create_workspace response (no signup required to access dashboard).",
3
+ "version": "1.0.4",
4
+ "description": "MCP server for SeldonFrame — AI-native Business OS platform. One command creates a real hosted workspace with CRM, booking, intake, and Brain v2. v1.0.4: hardens the admin URL surface so operators always see the bearer-token /admin/<id>?token=... URL, not the legacy /switch-workspace login-required path.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "seldonframe-mcp": "src/index.js"
package/src/tools.js CHANGED
@@ -67,6 +67,16 @@ export const TOOLS = [
67
67
  // in the response. Operators paste it into their browser and land
68
68
  // directly on the dashboard — no signup, no login, no OAuth.
69
69
  const adminUrl = result.admin_url ?? null;
70
+ // v1.0.4: strip the misleading `admin_*` keys out of the legacy
71
+ // flat `urls` object so old clients don't surface the
72
+ // /switch-workspace login-required URLs as if they were the
73
+ // intended path. Public-facing keys (home/book/intake) stay.
74
+ const rawUrls = result.urls ?? ws.urls ?? null;
75
+ const publicUrls = rawUrls
76
+ ? Object.fromEntries(
77
+ Object.entries(rawUrls).filter(([key]) => !key.startsWith("admin_")),
78
+ )
79
+ : null;
70
80
  const payload = {
71
81
  ok: true,
72
82
  workspace: {
@@ -82,12 +92,12 @@ export const TOOLS = [
82
92
  admin_url_message: adminUrl
83
93
  ? `⚡ Admin Dashboard (bookmark this!): ${adminUrl}\nClick to open the dashboard — no signup needed. Token expires in 7 days; re-mint with list_workspaces({}) when it does.`
84
94
  : null,
85
- urls: result.urls ?? ws.urls ?? null,
86
- public_urls: result.public_urls ?? null,
95
+ urls: publicUrls,
96
+ public_urls: result.public_urls ?? publicUrls,
87
97
  installed: result.installed ?? ["crm", "caldiy-booking", "formbricks-intake", "brain-v2"],
88
98
  next: [
89
99
  adminUrl
90
- ? `Open the admin dashboard: ${adminUrl} (paste into your browser; no signup needed)`
100
+ ? `⚡ Admin Dashboard (bookmark this!): ${adminUrl} (paste into your browser; no signup needed; token expires in 7 days)`
91
101
  : null,
92
102
  "install_vertical_pack({ pack: 'real-estate' }) // or 'dental', 'legal'",
93
103
  "fetch_source_for_soul({ url: 'https://yoursite.com' }) → submit_soul({ soul })",