@opennous/mcp 0.57.0 → 0.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/server.js +27 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opennous/mcp",
3
- "version": "0.57.0",
3
+ "version": "0.58.0",
4
4
  "description": "Nous — the Context Graph for AI Agents.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
package/src/server.js CHANGED
@@ -95,7 +95,7 @@ export function createServer() {
95
95
  // keeps the surface locked to these seven — a stray non-primitive registration is
96
96
  // dropped, not exposed. See docs/revenue-plugin/README.md §2–3.
97
97
  const PLUGIN_TOOLS = new Set([
98
- "record", "record_insight", "get_context", "get_account", "query", "score", "whoami",
98
+ "record", "record_insight", "get_context", "get_account", "query", "score", "whoami", "set_icp",
99
99
  ]);
100
100
  const _tool = server.tool.bind(server);
101
101
  const tool = (name, ...rest) => {
@@ -420,6 +420,32 @@ export function createServer() {
420
420
  }
421
421
  );
422
422
 
423
+ // ===========================================================================
424
+ // TOOL: set_icp — POST /v2/foundations/icp
425
+ // Establish/replace the workspace's ICP (the scoring model). ICP setup happens
426
+ // entirely in onboarding: the agent authors the buyer definition + scoring rules
427
+ // and writes them here; the engine compiles the model that `score` reads.
428
+ // ===========================================================================
429
+ tool(
430
+ "set_icp",
431
+ "Set (or replace) this workspace's ICP — the scoring model every account is judged against. Pass " +
432
+ "the full ICP as markdown (body_md): who the ideal customer is, plus the scoring rules (a base, " +
433
+ "persona weights, firmographic weights, observed-signal boosts/cuts, and hard disqualifiers). The " +
434
+ "engine compiles it into the model `score`, get_context, and the reports use. Use this during " +
435
+ "onboarding to establish the ICP for a fresh workspace — whoami's setup.has_icp tells you whether " +
436
+ "one exists. Writing replaces the prior ICP, so if one already exists, read/confirm before " +
437
+ "overwriting. Authoring guide + required sections: the onboard skill's icp-authoring reference.",
438
+ {
439
+ body_md: z.string().describe("the full ICP as markdown — the buyer definition + the scoring rules (see the icp-authoring reference for the required sections)"),
440
+ },
441
+ async ({ body_md }) => {
442
+ const r = await post("/v2/foundations/icp", { body_md });
443
+ return { content: [{ type: "text", text:
444
+ `ICP saved${r.version ? ` (v${r.version})` : ""} — the scoring model is compiling from it. ` +
445
+ `score / get_context now judge accounts against this ICP.` }] };
446
+ }
447
+ );
448
+
423
449
  // ===========================================================================
424
450
  // TOOL: query — POST /v2/query
425
451
  // Retrieve a corpus of activity across many people. You do the analysis.