@opennous/mcp 0.23.0 → 0.24.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/server.js +21 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opennous/mcp",
3
- "version": "0.23.0",
3
+ "version": "0.24.0",
4
4
  "description": "Nous MCP Server — Customer graph for GTM agents.",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
package/src/server.js CHANGED
@@ -37,7 +37,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
37
37
  import { z } from "zod";
38
38
  import { get, post } from "./client.js";
39
39
 
40
- export const SERVER_VERSION = "0.23.0";
40
+ export const SERVER_VERSION = "0.24.0";
41
41
 
42
42
  // ─── helpers ──────────────────────────────────────────────────────────────────
43
43
 
@@ -506,13 +506,21 @@ export function createServer() {
506
506
  // ===========================================================================
507
507
  server.tool(
508
508
  "get_workspace_status",
509
- "See the whole setup state of this workspace in one call and what to set up next. Nous is " +
510
- "operated by you, the agent, not by a human clicking through the app: call this at the start of " +
511
- "a session to learn whether the workspace is onboarded, whether the GTM playbook (ICP model) is " +
512
- "built, which integrations are connected, whether CRM sync is configured, and whether webhooks/" +
513
- "triggers are live. Returns a ranked NEXT STEPS list walk the user through whatever is missing " +
514
- "(onboard them with set_workspace_profile, build the playbook with update_gtm_profile, connect " +
515
- "their tools). Use this before offering to set anything up.",
509
+ "See the whole setup state of this workspace in one call, and what to do next. Nous is operated " +
510
+ "by you, the agent: call this at the start of a session. It returns a ranked NEXT STEPS list — " +
511
+ "walk the user through it top-down. The onboarding sequence, in order: " +
512
+ "(1) profile (set_workspace_profile); " +
513
+ "(2) connect core channelsGmail/email, LinkedIn, and a meeting note-taker (Fireflies/Fathom/" +
514
+ "Calendly); (3) connect enrichment/outbound (Prospeo/Apollo/Instantly); (4) set up webhooks for " +
515
+ "the connected tools so their events flow in; (5) import first records (CSV from the CRM) on the " +
516
+ "Accounts page, then backfill enrichment; (6) build the GTM playbook (update_gtm_profile + " +
517
+ "build_scoring_model, asking for closed-won/lost domains). " +
518
+ "KNOW THE CONSTRAINTS: Gmail uses Google OAuth and LinkedIn has NO public API (Nous connects it " +
519
+ "natively via Unipile) — you CANNOT connect those yourself; tell the user to set them up on the " +
520
+ "Integrations page. Key-based tools (Prospeo, Apollo, Instantly, HubSpot token) you CAN connect " +
521
+ "with connect_integration. CSV import and CRM-page actions are done by the user in the app — guide " +
522
+ "them. Respect PLAN: never push a feature the plan doesn't include (e.g. CRM sync on free). " +
523
+ "Recommend, don't dump — surface the next 1-2 steps, not all of them at once.",
516
524
  {},
517
525
  async () => {
518
526
  const s = await get("/v2/workspace/status");
@@ -539,6 +547,11 @@ export function createServer() {
539
547
  }
540
548
  lines.push(` ${mark(setup.enrichment?.connected)} Enrichment${setup.enrichment?.provider ? `: ${setup.enrichment.provider}` : ""}`);
541
549
  lines.push(` ${mark((setup.webhooks?.count ?? 0) > 0 || (setup.triggers?.count ?? 0) > 0)} Events — ${setup.webhooks?.count ?? 0} webhook(s), ${setup.triggers?.count ?? 0} trigger(s)`);
550
+ const rec = setup.recommended ?? {};
551
+ lines.push("");
552
+ lines.push("RECOMMENDED CHANNELS (connect these first):");
553
+ lines.push(` ${mark(rec.email)} Email / Gmail ${mark(rec.linkedin)} LinkedIn ${mark(rec.meeting_notetaker)} Meeting note-taker`);
554
+ lines.push(` Records imported: ${setup.records?.count ?? 0}`);
542
555
 
543
556
  if (s.next_steps?.length) {
544
557
  lines.push("");