@danainnovations/cortex-mcp 1.0.88 → 1.0.90

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.
@@ -95,16 +95,15 @@ var AVAILABLE_MCPS = [
95
95
  description: "Expense reports, entries, receipts, approvals (16 tools)",
96
96
  serverName: "cortex-concur",
97
97
  authMode: "personal"
98
+ },
99
+ {
100
+ name: "sonance_brand",
101
+ displayName: "Sonance Brand",
102
+ description: "Brand guidelines, design tokens, component library, logos (28 tools)",
103
+ serverName: "cortex-sonance-brand",
104
+ authMode: "company"
98
105
  }
99
106
  ];
100
- var SONANCE_BRAND_CONFIG = {
101
- name: "sonance-brand",
102
- displayName: "Sonance Brand",
103
- description: "Brand guidelines, design tokens, component library, logos (28 tools)",
104
- serverName: "sonance-brand",
105
- command: "npx",
106
- args: ["-y", "sonance-brand-mcp@latest"]
107
- };
108
107
  var MCP_NAMES = AVAILABLE_MCPS.map((m) => m.name);
109
108
  var DEFAULT_MCPS = [...MCP_NAMES];
110
109
  var DEFAULT_API_KEY = "ctx_07d37a81_9f7be06af38d04753090a4034f907a65ec06cd675ed26f65653898388e2d1709";
@@ -116,7 +115,6 @@ export {
116
115
  DEFAULT_SERVER_URL,
117
116
  PROTOCOL_VERSION,
118
117
  AVAILABLE_MCPS,
119
- SONANCE_BRAND_CONFIG,
120
118
  MCP_NAMES,
121
119
  DEFAULT_MCPS,
122
120
  DEFAULT_API_KEY,
@@ -124,4 +122,4 @@ export {
124
122
  CONFIG_FILE_NAME,
125
123
  CREDENTIALS_FILE_NAME
126
124
  };
127
- //# sourceMappingURL=chunk-3X6WPEWI.js.map
125
+ //# sourceMappingURL=chunk-RB5AKDLX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts"],"sourcesContent":["/** Default Cortex server URL */\nexport const DEFAULT_SERVER_URL = \"https://cortex-bice.vercel.app\";\n\n/** MCP protocol version supported by Cortex (Streamable HTTP) */\nexport const PROTOCOL_VERSION = \"2025-03-26\";\n\n/** Available MCPs with their metadata */\nexport const AVAILABLE_MCPS = [\n {\n name: \"m365\",\n displayName: \"Microsoft 365\",\n description: \"Email, calendar, OneDrive, Teams, meetings, contacts, tasks, notes (33 tools)\",\n serverName: \"cortex-m365\",\n authMode: \"personal\" as const,\n },\n {\n name: \"asana\",\n displayName: \"Asana\",\n description: \"Projects, tasks, teams, workspaces (17 tools)\",\n serverName: \"cortex-asana\",\n authMode: \"personal\" as const,\n },\n {\n name: \"github\",\n displayName: \"GitHub\",\n description: \"Repos, PRs, issues, branches, code review (30 tools)\",\n serverName: \"cortex-github\",\n authMode: \"company\" as const,\n },\n {\n name: \"vercel\",\n displayName: \"Vercel\",\n description: \"Deployments, projects, env vars (15 tools)\",\n serverName: \"cortex-vercel\",\n authMode: \"company\" as const,\n },\n {\n name: \"supabase\",\n displayName: \"Supabase\",\n description: \"Database, migrations, edge functions (20+ tools)\",\n serverName: \"cortex-supabase\",\n authMode: \"company\" as const,\n },\n {\n name: \"bestbuy\",\n displayName: \"Best Buy\",\n description: \"Product search, pricing, reviews, store locations (7 tools)\",\n serverName: \"cortex-bestbuy\",\n authMode: \"company\" as const,\n },\n {\n name: \"mailchimp\",\n displayName: \"Mailchimp\",\n description: \"Audiences, contacts, campaigns, templates, analytics (28 tools)\",\n serverName: \"cortex-mailchimp\",\n authMode: \"personal\" as const,\n },\n {\n name: \"salesforce\",\n displayName: \"Salesforce\",\n description: \"CRM queries, records, reports, and org data (14 tools)\",\n serverName: \"cortex-salesforce\",\n authMode: \"personal\" as const,\n },\n {\n name: \"monday\",\n displayName: \"Monday.com\",\n description: \"Boards, items, groups, updates, workspaces (18 tools)\",\n serverName: \"cortex-monday\",\n authMode: \"personal\" as const,\n installUrl: \"https://auth.monday.com/oauth2/authorize?client_id=c8d2c70bd792a4c36c6f023c0b707517&response_type=install\",\n },\n {\n name: \"slack\",\n displayName: \"Slack\",\n description: \"Messaging, channels, search, reactions, bookmarks (22 tools)\",\n serverName: \"cortex-slack\",\n authMode: \"personal\" as const,\n },\n {\n name: \"powerbi\",\n displayName: \"Power BI\",\n description: \"Workspaces, datasets, push data, DAX queries, reports, dashboards (14 tools)\",\n serverName: \"cortex-powerbi\",\n authMode: \"personal\" as const,\n },\n {\n name: \"databricks\",\n displayName: \"Databricks\",\n description: \"Unity Catalog discovery, SQL queries, data dictionary, jobs (18 tools)\",\n serverName: \"cortex-databricks\",\n authMode: \"company\" as const,\n },\n {\n name: \"concur\",\n displayName: \"SAP Concur\",\n description: \"Expense reports, entries, receipts, approvals (16 tools)\",\n serverName: \"cortex-concur\",\n authMode: \"personal\" as const,\n },\n] as const;\n\n/** Sonance Brand MCP — standalone stdio server, not proxied through Cortex */\nexport const SONANCE_BRAND_CONFIG = {\n name: \"sonance-brand\",\n displayName: \"Sonance Brand\",\n description: \"Brand guidelines, design tokens, component library, logos (28 tools)\",\n serverName: \"sonance-brand\",\n command: \"npx\",\n args: [\"-y\", \"sonance-brand-mcp@latest\"],\n} as const;\n\n/** All available MCP names */\nexport const MCP_NAMES: string[] = AVAILABLE_MCPS.map((m) => m.name);\n\n/** Default MCPs enabled on fresh setup */\nexport const DEFAULT_MCPS: string[] = [...MCP_NAMES];\n\n/** Shared API key embedded in the package (no user prompt needed) */\nexport const DEFAULT_API_KEY =\n \"ctx_07d37a81_9f7be06af38d04753090a4034f907a65ec06cd675ed26f65653898388e2d1709\";\n\n/** Config directory name */\nexport const CONFIG_DIR_NAME = \".cortex-mcp\";\n\n/** Config file name */\nexport const CONFIG_FILE_NAME = \"config.json\";\n\n/** Credentials file name (stores personal API key from login) */\nexport const CREDENTIALS_FILE_NAME = \"credentials.json\";\n"],"mappings":";;;AACO,IAAM,qBAAqB;AAG3B,IAAM,mBAAmB;AAGzB,IAAM,iBAAiB;AAAA,EAC5B;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AACF;AAGO,IAAM,uBAAuB;AAAA,EAClC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,MAAM,CAAC,MAAM,0BAA0B;AACzC;AAGO,IAAM,YAAsB,eAAe,IAAI,CAAC,MAAM,EAAE,IAAI;AAG5D,IAAM,eAAyB,CAAC,GAAG,SAAS;AAG5C,IAAM,kBACX;AAGK,IAAM,kBAAkB;AAGxB,IAAM,mBAAmB;AAGzB,IAAM,wBAAwB;","names":[]}
1
+ {"version":3,"sources":["../src/constants.ts"],"sourcesContent":["/** Default Cortex server URL */\nexport const DEFAULT_SERVER_URL = \"https://cortex-bice.vercel.app\";\n\n/** MCP protocol version supported by Cortex (Streamable HTTP) */\nexport const PROTOCOL_VERSION = \"2025-03-26\";\n\n/** Available MCPs with their metadata */\nexport const AVAILABLE_MCPS = [\n {\n name: \"m365\",\n displayName: \"Microsoft 365\",\n description: \"Email, calendar, OneDrive, Teams, meetings, contacts, tasks, notes (33 tools)\",\n serverName: \"cortex-m365\",\n authMode: \"personal\" as const,\n },\n {\n name: \"asana\",\n displayName: \"Asana\",\n description: \"Projects, tasks, teams, workspaces (17 tools)\",\n serverName: \"cortex-asana\",\n authMode: \"personal\" as const,\n },\n {\n name: \"github\",\n displayName: \"GitHub\",\n description: \"Repos, PRs, issues, branches, code review (30 tools)\",\n serverName: \"cortex-github\",\n authMode: \"company\" as const,\n },\n {\n name: \"vercel\",\n displayName: \"Vercel\",\n description: \"Deployments, projects, env vars (15 tools)\",\n serverName: \"cortex-vercel\",\n authMode: \"company\" as const,\n },\n {\n name: \"supabase\",\n displayName: \"Supabase\",\n description: \"Database, migrations, edge functions (20+ tools)\",\n serverName: \"cortex-supabase\",\n authMode: \"company\" as const,\n },\n {\n name: \"bestbuy\",\n displayName: \"Best Buy\",\n description: \"Product search, pricing, reviews, store locations (7 tools)\",\n serverName: \"cortex-bestbuy\",\n authMode: \"company\" as const,\n },\n {\n name: \"mailchimp\",\n displayName: \"Mailchimp\",\n description: \"Audiences, contacts, campaigns, templates, analytics (28 tools)\",\n serverName: \"cortex-mailchimp\",\n authMode: \"personal\" as const,\n },\n {\n name: \"salesforce\",\n displayName: \"Salesforce\",\n description: \"CRM queries, records, reports, and org data (14 tools)\",\n serverName: \"cortex-salesforce\",\n authMode: \"personal\" as const,\n },\n {\n name: \"monday\",\n displayName: \"Monday.com\",\n description: \"Boards, items, groups, updates, workspaces (18 tools)\",\n serverName: \"cortex-monday\",\n authMode: \"personal\" as const,\n installUrl: \"https://auth.monday.com/oauth2/authorize?client_id=c8d2c70bd792a4c36c6f023c0b707517&response_type=install\",\n },\n {\n name: \"slack\",\n displayName: \"Slack\",\n description: \"Messaging, channels, search, reactions, bookmarks (22 tools)\",\n serverName: \"cortex-slack\",\n authMode: \"personal\" as const,\n },\n {\n name: \"powerbi\",\n displayName: \"Power BI\",\n description: \"Workspaces, datasets, push data, DAX queries, reports, dashboards (14 tools)\",\n serverName: \"cortex-powerbi\",\n authMode: \"personal\" as const,\n },\n {\n name: \"databricks\",\n displayName: \"Databricks\",\n description: \"Unity Catalog discovery, SQL queries, data dictionary, jobs (18 tools)\",\n serverName: \"cortex-databricks\",\n authMode: \"company\" as const,\n },\n {\n name: \"concur\",\n displayName: \"SAP Concur\",\n description: \"Expense reports, entries, receipts, approvals (16 tools)\",\n serverName: \"cortex-concur\",\n authMode: \"personal\" as const,\n },\n {\n name: \"sonance_brand\",\n displayName: \"Sonance Brand\",\n description: \"Brand guidelines, design tokens, component library, logos (28 tools)\",\n serverName: \"cortex-sonance-brand\",\n authMode: \"company\" as const,\n },\n] as const;\n\n/** All available MCP names */\nexport const MCP_NAMES: string[] = AVAILABLE_MCPS.map((m) => m.name);\n\n/** Default MCPs enabled on fresh setup */\nexport const DEFAULT_MCPS: string[] = [...MCP_NAMES];\n\n/** Shared API key embedded in the package (no user prompt needed) */\nexport const DEFAULT_API_KEY =\n \"ctx_07d37a81_9f7be06af38d04753090a4034f907a65ec06cd675ed26f65653898388e2d1709\";\n\n/** Config directory name */\nexport const CONFIG_DIR_NAME = \".cortex-mcp\";\n\n/** Config file name */\nexport const CONFIG_FILE_NAME = \"config.json\";\n\n/** Credentials file name (stores personal API key from login) */\nexport const CREDENTIALS_FILE_NAME = \"credentials.json\";\n"],"mappings":";;;AACO,IAAM,qBAAqB;AAG3B,IAAM,mBAAmB;AAGzB,IAAM,iBAAiB;AAAA,EAC5B;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AACF;AAGO,IAAM,YAAsB,eAAe,IAAI,CAAC,MAAM,EAAE,IAAI;AAG5D,IAAM,eAAyB,CAAC,GAAG,SAAS;AAG5C,IAAM,kBACX;AAGK,IAAM,kBAAkB;AAGxB,IAAM,mBAAmB;AAGzB,IAAM,wBAAwB;","names":[]}
package/dist/cli.js CHANGED
@@ -8,9 +8,8 @@ import {
8
8
  DEFAULT_MCPS,
9
9
  DEFAULT_SERVER_URL,
10
10
  MCP_NAMES,
11
- PROTOCOL_VERSION,
12
- SONANCE_BRAND_CONFIG
13
- } from "./chunk-3X6WPEWI.js";
11
+ PROTOCOL_VERSION
12
+ } from "./chunk-RB5AKDLX.js";
14
13
  import {
15
14
  getAntigravityConfigPath,
16
15
  getClaudeDesktopConfigPath,
@@ -878,7 +877,9 @@ function getWizardHtml() {
878
877
  powerbi: '<svg viewBox="0 0 16 16"><rect x="2" y="8" width="3" height="6" rx="1"/><rect x="6.5" y="5" width="3" height="9" rx="1"/><rect x="11" y="2" width="3" height="12" rx="1"/></svg>',
879
878
  bestbuy: '<svg viewBox="0 0 16 16"><path d="M2 3h12a1 1 0 011 1v8a1 1 0 01-1 1H2a1 1 0 01-1-1V4a1 1 0 011-1zm3 3v4h2V6H5zm4 0v4h2V6H9z"/></svg>',
880
879
  mailchimp: '<svg viewBox="0 0 16 16"><path d="M8 2a6 6 0 100 12A6 6 0 008 2zM6.5 10.5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3 0a1.5 1.5 0 110-3 1.5 1.5 0 010 3z"/></svg>',
881
- 'sonance-brand': '<svg viewBox="0 0 16 16"><path d="M2 3a1 1 0 011-1h2a1 1 0 011 1v10a1 1 0 01-1 1H3a1 1 0 01-1-1V3zm5 2a1 1 0 011-1h2a1 1 0 011 1v8a1 1 0 01-1 1H8a1 1 0 01-1-1V5zm5-3a1 1 0 011-1h1a1 1 0 011 1v11a1 1 0 01-1 1h-1a1 1 0 01-1-1V2z"/></svg>',
880
+ sonance_brand: '<svg viewBox="0 0 16 16"><path d="M2 3a1 1 0 011-1h2a1 1 0 011 1v10a1 1 0 01-1 1H3a1 1 0 01-1-1V3zm5 2a1 1 0 011-1h2a1 1 0 011 1v8a1 1 0 01-1 1H8a1 1 0 01-1-1V5zm5-3a1 1 0 011-1h1a1 1 0 011 1v11a1 1 0 01-1 1h-1a1 1 0 01-1-1V2z"/></svg>',
881
+ concur: '<svg viewBox="0 0 16 16"><path d="M8 1a7 7 0 100 14A7 7 0 008 1zM4 8.5a.5.5 0 010-1h3.5V5a.5.5 0 011 0v3a.5.5 0 01-.5.5H4z"/></svg>',
882
+ databricks: '<svg viewBox="0 0 16 16"><path d="M8 1L2 4.5v2L8 10l6-3.5v-2L8 1zM2 7.5v2L8 13l6-3.5v-2L8 10 2 7.5zM2 10.5v2L8 16l6-3.5v-2L8 13l-6-2.5z"/></svg>',
882
883
  };
883
884
 
884
885
  // \u2500\u2500 Client Icons (inline SVG) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
@@ -902,8 +903,6 @@ function getWizardHtml() {
902
903
  state.availableMcps = data.availableMcps || [];
903
904
  state.enabledMcps = data.enabledMcps || ['m365'];
904
905
  state.selectedMcps = (data.enabledMcps || ['m365']).slice();
905
- state.sonanceBrand = data.sonanceBrand || null;
906
- state.includeSonanceBrand = true;
907
906
  state.detectedClients = data.detectedClients || [];
908
907
  state.configuredClients = (data.config && data.config.configuredClients) || [];
909
908
  } catch (err) {
@@ -1070,12 +1069,16 @@ function getWizardHtml() {
1070
1069
  powerbi: 'Build dashboards and run data queries on your reports',
1071
1070
  bestbuy: 'Search products, compare prices, and find store locations',
1072
1071
  databricks: 'Query data warehouses, explore Unity Catalog, and manage jobs',
1073
- 'sonance-brand': 'Brand guidelines, design tokens, component library, and logo assets for Sonance, IPORT, and Blaze Audio',
1072
+ sonance_brand: 'Brand guidelines, design tokens, component library, and logo assets for Sonance, IPORT, and Blaze Audio',
1074
1073
  };
1075
1074
 
1076
1075
  function renderMcpList(container) {
1077
1076
  var enabledList = (state.enabledMcps && state.enabledMcps.length > 0)
1078
1077
  ? state.enabledMcps : ['m365'];
1078
+ // Sonance Brand is always enabled for all users
1079
+ if (enabledList.indexOf('sonance_brand') === -1) {
1080
+ enabledList.push('sonance_brand');
1081
+ }
1079
1082
  var enabledMcps = state.availableMcps.filter(function(m) { return enabledList.indexOf(m.name) !== -1; });
1080
1083
  var disabledMcps = state.availableMcps.filter(function(m) { return enabledList.indexOf(m.name) === -1; });
1081
1084
 
@@ -1103,28 +1106,6 @@ function getWizardHtml() {
1103
1106
  html += '</div></div>';
1104
1107
  }
1105
1108
 
1106
- // Sonance Brand \u2014 internal design system MCP (always available)
1107
- if (state.sonanceBrand) {
1108
- var sbChecked = state.includeSonanceBrand !== false;
1109
- html += '<div class="mcp-section">';
1110
- html += '<div class="mcp-section-title">Internal Tools</div>';
1111
- html += '<div class="mcp-section-subtitle">Standalone tools bundled with setup</div>';
1112
- html += '<div class="mcp-list">';
1113
- html += '<label class="mcp-item' + (sbChecked ? ' checked' : '') + '" data-mcp="sonance-brand">' +
1114
- (MCP_TOOLTIPS['sonance-brand'] ? '<span class="mcp-tooltip">' + MCP_TOOLTIPS['sonance-brand'] + '</span>' : '') +
1115
- '<input type="checkbox" value="sonance-brand"' + (sbChecked ? ' checked' : '') + '>' +
1116
- (MCP_ICONS['sonance-brand'] ? '<div class="mcp-icon">' + MCP_ICONS['sonance-brand'] + '</div>' : '') +
1117
- '<div class="mcp-check"><span class="mcp-check-icon">&#10003;</span></div>' +
1118
- '<div class="mcp-info">' +
1119
- '<span class="mcp-name">' + escapeHtml(state.sonanceBrand.displayName) +
1120
- '<span class="mcp-badge company">internal</span>' +
1121
- '</span>' +
1122
- '<span class="mcp-desc">' + escapeHtml(state.sonanceBrand.description) + '</span>' +
1123
- '</div>' +
1124
- '</label>';
1125
- html += '</div></div>';
1126
- }
1127
-
1128
1109
  if (disabledMcps.length > 0) {
1129
1110
  html += '<div class="mcp-section">';
1130
1111
  html += '<div class="mcp-section-title">Coming Soon</div>';
@@ -1203,18 +1184,8 @@ function getWizardHtml() {
1203
1184
 
1204
1185
  function saveMcps() {
1205
1186
  var checkboxes = document.querySelectorAll('.mcp-item:not(.disabled) input[type="checkbox"]');
1206
- var selected = [];
1207
- var includeBrand = false;
1208
- Array.from(checkboxes).forEach(function(cb) {
1209
- if (!cb.checked) return;
1210
- if (cb.value === 'sonance-brand') {
1211
- includeBrand = true;
1212
- } else {
1213
- selected.push(cb.value);
1214
- }
1215
- });
1187
+ var selected = Array.from(checkboxes).filter(function(cb) { return cb.checked; }).map(function(cb) { return cb.value; });
1216
1188
  state.selectedMcps = selected;
1217
- state.includeSonanceBrand = includeBrand;
1218
1189
  goToStep('clients');
1219
1190
  }
1220
1191
 
@@ -1264,9 +1235,12 @@ function getWizardHtml() {
1264
1235
 
1265
1236
  el.innerHTML = html;
1266
1237
 
1238
+ var manualTypes = ['perplexity', 'stdio'];
1267
1239
  el.querySelectorAll('.client-item:not(.disabled):not(.already-configured)').forEach(function(item) {
1268
- // Auto-select all detected clients on first setup
1269
- item.classList.add('checked');
1240
+ // Auto-select detected clients, but NOT manual/additional ones (Perplexity, OpenClaw)
1241
+ if (manualTypes.indexOf(item.dataset.client) === -1) {
1242
+ item.classList.add('checked');
1243
+ }
1270
1244
  item.addEventListener('click', function(e) {
1271
1245
  e.preventDefault();
1272
1246
  item.classList.toggle('checked');
@@ -1303,7 +1277,7 @@ function getWizardHtml() {
1303
1277
  var resp = await fetch('/api/clients/configure', {
1304
1278
  method: 'POST',
1305
1279
  headers: { 'Content-Type': 'application/json' },
1306
- body: JSON.stringify({ clients: state.selectedClients, mcps: state.selectedMcps, includeSonanceBrand: state.includeSonanceBrand !== false }),
1280
+ body: JSON.stringify({ clients: state.selectedClients, mcps: state.selectedMcps }),
1307
1281
  });
1308
1282
  var data = await resp.json();
1309
1283
 
@@ -1661,10 +1635,6 @@ function detectClients() {
1661
1635
  });
1662
1636
  return clients;
1663
1637
  }
1664
- function buildSonanceBrandEntry() {
1665
- const isWindowsTarget = getPlatform() === "windows" || isWSL();
1666
- return isWindowsTarget ? { command: "cmd", args: ["/c", ...SONANCE_BRAND_CONFIG.args] } : { command: SONANCE_BRAND_CONFIG.command, args: [...SONANCE_BRAND_CONFIG.args] };
1667
- }
1668
1638
  function buildHttpEntries(serverUrl, apiKey, mcps) {
1669
1639
  const entries = {};
1670
1640
  for (const mcp of AVAILABLE_MCPS) {
@@ -1676,7 +1646,7 @@ function buildHttpEntries(serverUrl, apiKey, mcps) {
1676
1646
  }
1677
1647
  return entries;
1678
1648
  }
1679
- function configureClaudeDesktop(_serverUrl, apiKey, _mcps, includeSonanceBrand = true) {
1649
+ function configureClaudeDesktop(_serverUrl, apiKey, _mcps) {
1680
1650
  const configPath = getClaudeDesktopConfigPath();
1681
1651
  const dir = dirname(configPath);
1682
1652
  if (!existsSync(dir)) {
@@ -1712,14 +1682,11 @@ function configureClaudeDesktop(_serverUrl, apiKey, _mcps, includeSonanceBrand =
1712
1682
  }
1713
1683
  const servers = config.mcpServers;
1714
1684
  for (const key of Object.keys(servers)) {
1715
- if (key.startsWith("cortex-") || key === "cortex" || key === SONANCE_BRAND_CONFIG.name) {
1685
+ if (key.startsWith("cortex-") || key === "cortex") {
1716
1686
  delete servers[key];
1717
1687
  }
1718
1688
  }
1719
1689
  servers["cortex"] = cortexEntry;
1720
- if (includeSonanceBrand) {
1721
- servers[SONANCE_BRAND_CONFIG.name] = buildSonanceBrandEntry();
1722
- }
1723
1690
  writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
1724
1691
  if (getPlatform() === "windows") {
1725
1692
  const storePath = getStoreClaudePath();
@@ -1743,12 +1710,9 @@ function configureClaudeDesktop(_serverUrl, apiKey, _mcps, includeSonanceBrand =
1743
1710
  }
1744
1711
  const altServers = altConfig.mcpServers;
1745
1712
  for (const key of Object.keys(altServers)) {
1746
- if (key.startsWith("cortex-") || key === "cortex" || key === SONANCE_BRAND_CONFIG.name) delete altServers[key];
1713
+ if (key.startsWith("cortex-") || key === "cortex") delete altServers[key];
1747
1714
  }
1748
1715
  altServers["cortex"] = cortexEntry;
1749
- if (includeSonanceBrand) {
1750
- altServers[SONANCE_BRAND_CONFIG.name] = buildSonanceBrandEntry();
1751
- }
1752
1716
  writeFileSync(altPath, JSON.stringify(altConfig, null, 2) + "\n");
1753
1717
  } catch {
1754
1718
  }
@@ -1783,7 +1747,7 @@ function configureClaudeDesktop(_serverUrl, apiKey, _mcps, includeSonanceBrand =
1783
1747
  `Failed to write config to ${configPath}. Claude Desktop may be overwriting the file. Please close Claude Desktop completely (quit from the system tray), then re-run setup.`
1784
1748
  );
1785
1749
  }
1786
- function configureClaudeCode(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1750
+ function configureClaudeCode(serverUrl, apiKey, mcps) {
1787
1751
  for (const mcp of AVAILABLE_MCPS) {
1788
1752
  if (!mcps.includes(mcp.name)) continue;
1789
1753
  const url = `${serverUrl}/mcp/${mcp.name}`;
@@ -1796,18 +1760,8 @@ function configureClaudeCode(serverUrl, apiKey, mcps, includeSonanceBrand = true
1796
1760
  { stdio: "pipe" }
1797
1761
  );
1798
1762
  }
1799
- if (includeSonanceBrand) {
1800
- try {
1801
- execSync(`claude mcp remove ${SONANCE_BRAND_CONFIG.name}`, { stdio: "pipe" });
1802
- } catch {
1803
- }
1804
- execSync(
1805
- `claude mcp add ${SONANCE_BRAND_CONFIG.name} -- ${SONANCE_BRAND_CONFIG.command} ${SONANCE_BRAND_CONFIG.args.join(" ")}`,
1806
- { stdio: "pipe" }
1807
- );
1808
- }
1809
1763
  }
1810
- function configureCursor(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1764
+ function configureCursor(serverUrl, apiKey, mcps) {
1811
1765
  const configPath = getCursorConfigPath();
1812
1766
  const dir = dirname(configPath);
1813
1767
  if (!existsSync(dir)) {
@@ -1825,18 +1779,15 @@ function configureCursor(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1825
1779
  }
1826
1780
  const servers = config.mcpServers;
1827
1781
  for (const key of Object.keys(servers)) {
1828
- if (key.startsWith("cortex-") || key === SONANCE_BRAND_CONFIG.name) {
1782
+ if (key.startsWith("cortex-")) {
1829
1783
  delete servers[key];
1830
1784
  }
1831
1785
  }
1832
1786
  const entries = buildHttpEntries(serverUrl, apiKey, mcps);
1833
1787
  Object.assign(servers, entries);
1834
- if (includeSonanceBrand) {
1835
- servers[SONANCE_BRAND_CONFIG.name] = buildSonanceBrandEntry();
1836
- }
1837
1788
  writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
1838
1789
  }
1839
- function configureVSCode(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1790
+ function configureVSCode(serverUrl, apiKey, mcps) {
1840
1791
  const configPath = getVSCodeMcpConfigPath();
1841
1792
  const dir = dirname(configPath);
1842
1793
  if (!existsSync(dir)) {
@@ -1854,18 +1805,15 @@ function configureVSCode(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1854
1805
  }
1855
1806
  const servers = config.mcpServers;
1856
1807
  for (const key of Object.keys(servers)) {
1857
- if (key.startsWith("cortex-") || key === SONANCE_BRAND_CONFIG.name) {
1808
+ if (key.startsWith("cortex-")) {
1858
1809
  delete servers[key];
1859
1810
  }
1860
1811
  }
1861
1812
  const entries = buildHttpEntries(serverUrl, apiKey, mcps);
1862
1813
  Object.assign(servers, entries);
1863
- if (includeSonanceBrand) {
1864
- servers[SONANCE_BRAND_CONFIG.name] = buildSonanceBrandEntry();
1865
- }
1866
1814
  writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
1867
1815
  }
1868
- function configureAntigravity(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1816
+ function configureAntigravity(serverUrl, apiKey, mcps) {
1869
1817
  const configPath = getAntigravityConfigPath();
1870
1818
  const dir = dirname(configPath);
1871
1819
  if (!existsSync(dir)) {
@@ -1883,18 +1831,15 @@ function configureAntigravity(serverUrl, apiKey, mcps, includeSonanceBrand = tru
1883
1831
  }
1884
1832
  const servers = config.mcpServers;
1885
1833
  for (const key of Object.keys(servers)) {
1886
- if (key.startsWith("cortex-") || key === SONANCE_BRAND_CONFIG.name) {
1834
+ if (key.startsWith("cortex-")) {
1887
1835
  delete servers[key];
1888
1836
  }
1889
1837
  }
1890
1838
  const entries = buildHttpEntries(serverUrl, apiKey, mcps);
1891
1839
  Object.assign(servers, entries);
1892
- if (includeSonanceBrand) {
1893
- servers[SONANCE_BRAND_CONFIG.name] = buildSonanceBrandEntry();
1894
- }
1895
1840
  writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
1896
1841
  }
1897
- function configureCodex(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1842
+ function configureCodex(serverUrl, apiKey, mcps) {
1898
1843
  const configPath = getCodexConfigPath();
1899
1844
  const dir = dirname(configPath);
1900
1845
  if (!existsSync(dir)) {
@@ -1908,7 +1853,7 @@ function configureCodex(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1908
1853
  }
1909
1854
  }
1910
1855
  const cleaned = existingContent.replace(
1911
- /\[mcp_servers\.(?:cortex-[^\]]*|sonance-brand)\][^[]*(?=\[|$)/g,
1856
+ /\[mcp_servers\.cortex-[^\]]*\][^[]*(?=\[|$)/g,
1912
1857
  ""
1913
1858
  ).trim();
1914
1859
  const tomlEntries = [];
@@ -1920,17 +1865,10 @@ url = "${serverUrl}/mcp/${mcp.name}"
1920
1865
  http_headers = { "x-api-key" = "${apiKey}" }`
1921
1866
  );
1922
1867
  }
1923
- if (includeSonanceBrand) {
1924
- tomlEntries.push(
1925
- `[mcp_servers.${SONANCE_BRAND_CONFIG.name}]
1926
- command = "${SONANCE_BRAND_CONFIG.command}"
1927
- args = [${SONANCE_BRAND_CONFIG.args.map((a) => `"${a}"`).join(", ")}]`
1928
- );
1929
- }
1930
1868
  const newContent = (cleaned ? cleaned + "\n\n" : "") + tomlEntries.join("\n\n") + "\n";
1931
1869
  writeFileSync(configPath, newContent);
1932
1870
  }
1933
- function configurePerplexity(serverUrl, _apiKey, mcps, _includeSonanceBrand = true) {
1871
+ function configurePerplexity(serverUrl, _apiKey, mcps) {
1934
1872
  const lines = [
1935
1873
  "Add each MCP as a separate connector in Perplexity:",
1936
1874
  " Settings \u2192 Connectors \u2192 Add custom connector",
@@ -1947,11 +1885,9 @@ function configurePerplexity(serverUrl, _apiKey, mcps, _includeSonanceBrand = tr
1947
1885
  lines.push(` Transport: Streamable HTTP`);
1948
1886
  lines.push("");
1949
1887
  }
1950
- lines.push("Note: Sonance Brand MCP requires stdio transport (npx sonance-brand-mcp).");
1951
- lines.push("Perplexity may not support stdio \u2014 use Claude Desktop or Claude Code for brand tools.");
1952
1888
  return lines.join("\n");
1953
1889
  }
1954
- function generateStdioSnippet(_apiKey, includeSonanceBrand = true) {
1890
+ function generateStdioSnippet(_apiKey) {
1955
1891
  const isWindowsTarget = getPlatform() === "windows" || isWSL();
1956
1892
  const config = {
1957
1893
  mcpServers: {
@@ -1964,9 +1900,6 @@ function generateStdioSnippet(_apiKey, includeSonanceBrand = true) {
1964
1900
  }
1965
1901
  }
1966
1902
  };
1967
- if (includeSonanceBrand) {
1968
- config.mcpServers[SONANCE_BRAND_CONFIG.name] = buildSonanceBrandEntry();
1969
- }
1970
1903
  return JSON.stringify(config, null, 2);
1971
1904
  }
1972
1905
  function resetClaudeDesktop() {
@@ -1978,7 +1911,7 @@ function resetClaudeDesktop() {
1978
1911
  const servers = config.mcpServers;
1979
1912
  let removed = false;
1980
1913
  for (const key of Object.keys(servers)) {
1981
- if (key.startsWith("cortex-") || key === "cortex" || key === SONANCE_BRAND_CONFIG.name) {
1914
+ if (key.startsWith("cortex-") || key === "cortex") {
1982
1915
  delete servers[key];
1983
1916
  removed = true;
1984
1917
  }
@@ -2000,7 +1933,7 @@ function resetCursor() {
2000
1933
  const servers = config.mcpServers;
2001
1934
  let removed = false;
2002
1935
  for (const key of Object.keys(servers)) {
2003
- if (key.startsWith("cortex-") || key === "cortex" || key === SONANCE_BRAND_CONFIG.name) {
1936
+ if (key.startsWith("cortex-") || key === "cortex") {
2004
1937
  delete servers[key];
2005
1938
  removed = true;
2006
1939
  }
@@ -2022,11 +1955,6 @@ function resetClaudeCode() {
2022
1955
  } catch {
2023
1956
  }
2024
1957
  }
2025
- try {
2026
- execSync(`claude mcp remove ${SONANCE_BRAND_CONFIG.name}`, { stdio: "pipe" });
2027
- removed = true;
2028
- } catch {
2029
- }
2030
1958
  return removed;
2031
1959
  }
2032
1960
  function resetCodex() {
@@ -2035,7 +1963,7 @@ function resetCodex() {
2035
1963
  try {
2036
1964
  const content = readFileSync(configPath, "utf-8");
2037
1965
  const cleaned = content.replace(
2038
- /\[mcp_servers\.(?:cortex-[^\]]*|sonance-brand)\][^[]*(?=\[|$)/g,
1966
+ /\[mcp_servers\.cortex-[^\]]*\][^[]*(?=\[|$)/g,
2039
1967
  ""
2040
1968
  ).trim();
2041
1969
  if (cleaned !== content.trim()) {
@@ -2047,31 +1975,31 @@ function resetCodex() {
2047
1975
  return false;
2048
1976
  }
2049
1977
  }
2050
- function configureClient(clientType, serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1978
+ function configureClient(clientType, serverUrl, apiKey, mcps) {
2051
1979
  switch (clientType) {
2052
1980
  case "claude-desktop": {
2053
- const path = configureClaudeDesktop(serverUrl, apiKey, mcps, includeSonanceBrand);
1981
+ const path = configureClaudeDesktop(serverUrl, apiKey, mcps);
2054
1982
  return `Claude Desktop configured (${path})`;
2055
1983
  }
2056
1984
  case "claude-code":
2057
- configureClaudeCode(serverUrl, apiKey, mcps, includeSonanceBrand);
1985
+ configureClaudeCode(serverUrl, apiKey, mcps);
2058
1986
  return "Claude Code configured";
2059
1987
  case "cursor":
2060
- configureCursor(serverUrl, apiKey, mcps, includeSonanceBrand);
1988
+ configureCursor(serverUrl, apiKey, mcps);
2061
1989
  return "Cursor configured";
2062
1990
  case "vscode":
2063
- configureVSCode(serverUrl, apiKey, mcps, includeSonanceBrand);
1991
+ configureVSCode(serverUrl, apiKey, mcps);
2064
1992
  return "VS Code configured";
2065
1993
  case "antigravity":
2066
- configureAntigravity(serverUrl, apiKey, mcps, includeSonanceBrand);
1994
+ configureAntigravity(serverUrl, apiKey, mcps);
2067
1995
  return "Antigravity configured";
2068
1996
  case "codex":
2069
- configureCodex(serverUrl, apiKey, mcps, includeSonanceBrand);
1997
+ configureCodex(serverUrl, apiKey, mcps);
2070
1998
  return "Codex configured";
2071
1999
  case "perplexity":
2072
- return configurePerplexity(serverUrl, apiKey, mcps, includeSonanceBrand);
2000
+ return configurePerplexity(serverUrl, apiKey, mcps);
2073
2001
  case "stdio":
2074
- return "Add this to your client config:\n\n" + generateStdioSnippet(apiKey, includeSonanceBrand);
2002
+ return "Add this to your client config:\n\n" + generateStdioSnippet(apiKey);
2075
2003
  }
2076
2004
  }
2077
2005
 
@@ -2213,11 +2141,6 @@ async function handleApiRoute(path, searchParams, req, res, options, onComplete)
2213
2141
  description: m.description,
2214
2142
  authMode: m.authMode
2215
2143
  })),
2216
- sonanceBrand: {
2217
- name: SONANCE_BRAND_CONFIG.name,
2218
- displayName: SONANCE_BRAND_CONFIG.displayName,
2219
- description: SONANCE_BRAND_CONFIG.description
2220
- },
2221
2144
  detectedClients: clients
2222
2145
  });
2223
2146
  return true;
@@ -2311,7 +2234,6 @@ async function handleApiRoute(path, searchParams, req, res, options, onComplete)
2311
2234
  const body = await parseBody(req);
2312
2235
  const clients = body.clients || [];
2313
2236
  const mcps = body.mcps || [...DEFAULT_MCPS];
2314
- const includeSonanceBrand = body.includeSonanceBrand !== false;
2315
2237
  const apiKey = getState().apiKey;
2316
2238
  const results = [];
2317
2239
  for (const clientType of clients) {
@@ -2320,8 +2242,7 @@ async function handleApiRoute(path, searchParams, req, res, options, onComplete)
2320
2242
  clientType,
2321
2243
  options.serverUrl,
2322
2244
  apiKey,
2323
- mcps,
2324
- includeSonanceBrand
2245
+ mcps
2325
2246
  );
2326
2247
  results.push({ client: clientType, success: true, message: msg });
2327
2248
  } catch (err2) {
@@ -4345,7 +4266,7 @@ program.command("disconnect <provider>").description("Remove your personal OAuth
4345
4266
  }
4346
4267
  });
4347
4268
  program.command("connect-mobile").description("Connect Cortex to Claude on mobile \u2014 opens setup page in browser").action(async () => {
4348
- const { DEFAULT_SERVER_URL: DEFAULT_SERVER_URL3 } = await import("./constants-76SAPZ3D.js");
4269
+ const { DEFAULT_SERVER_URL: DEFAULT_SERVER_URL3 } = await import("./constants-66VQYSV7.js");
4349
4270
  const { openBrowser: openBrowser2 } = await import("./browser-AJPM6AK7.js");
4350
4271
  const url = `${DEFAULT_SERVER_URL3}/connect`;
4351
4272
  console.log("\nOpening Cortex connect page...");