@opennous/mcp 0.40.0 → 0.41.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 +19 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opennous/mcp",
3
- "version": "0.40.0",
3
+ "version": "0.41.0",
4
4
  "description": "Nous — the Context Graph for AI Agents.",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
package/src/server.js CHANGED
@@ -117,12 +117,19 @@ Nous first even when the user never says "Nous":
117
117
  - A fact looks stale before you act on it -> verify
118
118
  - Our ICP, market, pricing, positioning -> get_gtm_profile
119
119
  - Our ICP/positioning lives in our own files -> get_icp (file → graph) / get_icp_model (graph → file)
120
- - Our own GTM shifted (repriced, repositioned) -> edit the context file, then re-run get_icp
120
+ - You edited an ICP / context / playbook file -> re-sync THIS turn: get_icp (ICP/context) or sync_playbook (a playbook)
121
121
  - A brief / note / transcript on a contact -> save_note / search_notes
122
122
  - What's set up here and what to do next -> get_workspace_status
123
123
 
124
124
  Read get_gtm_profile at the start of GTM work and write back what changed at the
125
- end. After every interaction you help with, call record so the record stays current.`;
125
+ end. After every interaction you help with, call record so the record stays current.
126
+
127
+ CRITICAL — edits don't apply until you sync. Editing an ICP / context / playbook
128
+ file (context/icp.md, positioning.md, references/voice.md, …) does NOT change the
129
+ ICP score, the exclusions, or what any other agent reads until it is synced into
130
+ the graph. After ANY such edit you MUST call get_icp (for ICP/context files) or
131
+ sync_playbook (for a playbook) in the SAME turn. Never leave an edited file
132
+ unsynced — an unsynced edit is silently inert.`;
126
133
 
127
134
  // ─── factory ──────────────────────────────────────────────────────────────────
128
135
 
@@ -670,9 +677,11 @@ export function createServer() {
670
677
  `Synced the ${r.playbook?.kind || kind} playbook into Nous (v${r.playbook?.version}). Other agents now read the same rules.` }] };
671
678
  };
672
679
  server.tool("sync_playbook",
673
- "Push a playbook's content into Nous so the graph stays current. Call this AFTER you edit a policy file " +
674
- "in the repo (e.g. context/icp/icp.md, references/voice.md), passing the file's new content and its path, " +
675
- "so Nous mirrors it and every other agent obeys the same rules.",
680
+ "Push a playbook's content into Nous so the graph stays current. You MUST call this in the SAME turn " +
681
+ "whenever you edit a policy file in the repo (e.g. references/voice.md, outreach rules), passing the " +
682
+ "file's new content and its path, so Nous mirrors it and every other agent obeys the same rules. An " +
683
+ "edited playbook file that isn't synced is silently inert — other agents keep reading the old rules. " +
684
+ "(For the ICP/context files specifically, get_icp is the sync — use that one.)",
676
685
  syncPlaybookSchema, syncPlaybookHandler);
677
686
 
678
687
  // The GTM context is no longer written through a dedicated MCP tool. In the file
@@ -994,9 +1003,11 @@ export function createServer() {
994
1003
  "repo — context/icp.md, positioning.md, pricing.md, market.md, competitors.md, gtm-motion.md — " +
995
1004
  "filled from what the user tells you plus your own research of their website (write them with your " +
996
1005
  "file tools), then call this on those files — so their GTM context lives in their repo where they'll " +
997
- "keep editing it. At minimum create context/icp.md if that's all they'll give you. Re-run this after " +
998
- "the user edits any context file to re-sync. The ICP section's source_path matters most (it's the " +
999
- "write-back target for get_icp_model).",
1006
+ "keep editing it. At minimum create context/icp.md if that's all they'll give you. " +
1007
+ "MANDATORY RE-SYNC: whenever you (or the user) edit the ICP/context file add or change an exclusion, " +
1008
+ "reword the ICP, retarget — you MUST call get_icp again in the SAME turn. The edit does NOT change the " +
1009
+ "ICP score, the exclusions, or the scoring model until you do; an unsynced file edit is silently inert. " +
1010
+ "The ICP section's source_path matters most (it's the write-back target for get_icp_model).",
1000
1011
  {
1001
1012
  sections: z.array(z.object({
1002
1013
  section: z.enum(["ICP", "Market", "Product", "Pricing", "Competitors", "Positioning", "GTM Motion", "Notes"])