nodebench-mcp 2.39.0 → 2.40.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.
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io)
8
8
  [![Tools](https://img.shields.io/badge/Tools-338-orange.svg)](https://www.npmjs.com/package/nodebench-mcp)
9
9
 
10
- **Operating intelligence for founders — turn messy context into decision-ready packets, memos, and delegation briefs.**
10
+ **Entity intelligence for any company, market, or question — turn messy context into decision-ready packets, memos, and delegation briefs.**
11
11
 
12
12
  338 tools across 55 domains. You start with 15 (starter preset). Call `discover_tools` to find what you need, then `load_toolset` to activate it. No context bloat, no IDE crashes.
13
13
 
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * dogfoodRunner.ts — 4-scenario MCP dogfood harness
4
+ *
5
+ * Imports tool handlers directly (no MCP transport), runs each scenario
6
+ * sequentially, records telemetry via record_dogfood_telemetry, and
7
+ * prints a summary table.
8
+ *
9
+ * Usage:
10
+ * cd packages/mcp-local && npx tsx src/benchmarks/dogfoodRunner.ts
11
+ */
12
+ export {};
@@ -0,0 +1,421 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * dogfoodRunner.ts — 4-scenario MCP dogfood harness
4
+ *
5
+ * Imports tool handlers directly (no MCP transport), runs each scenario
6
+ * sequentially, records telemetry via record_dogfood_telemetry, and
7
+ * prints a summary table.
8
+ *
9
+ * Usage:
10
+ * cd packages/mcp-local && npx tsx src/benchmarks/dogfoodRunner.ts
11
+ */
12
+ import { dogfoodJudgeTools } from "../tools/dogfoodJudgeTools.js";
13
+ import { createMetaTools } from "../tools/metaTools.js";
14
+ import { createProgressiveDiscoveryTools } from "../tools/progressiveDiscoveryTools.js";
15
+ import { loadToolsets, ALL_DOMAIN_KEYS, TOOLSET_MAP } from "../toolsetRegistry.js";
16
+ import { getDb } from "../db.js";
17
+ import { _setDbAccessor } from "../tools/toolRegistry.js";
18
+ // ── Helpers ──────────────────────────────────────────────────────────────
19
+ /** Find a tool by name in a flat array */
20
+ function findTool(tools, name) {
21
+ const t = tools.find((t) => t.name === name);
22
+ if (!t)
23
+ throw new Error(`Tool "${name}" not found. Available: ${tools.map((t) => t.name).join(", ").slice(0, 200)}...`);
24
+ return t;
25
+ }
26
+ /** Safely call a handler, returning { ok, result, error, ms } */
27
+ async function callTool(tool, args = {}) {
28
+ const start = Date.now();
29
+ try {
30
+ const result = await tool.handler(args);
31
+ return { ok: true, result, ms: Date.now() - start };
32
+ }
33
+ catch (err) {
34
+ return {
35
+ ok: false,
36
+ result: null,
37
+ error: err?.message ?? String(err),
38
+ ms: Date.now() - start,
39
+ };
40
+ }
41
+ }
42
+ /** Extract text from MCP content blocks */
43
+ function extractText(result) {
44
+ if (!result)
45
+ return "(null)";
46
+ if (typeof result === "string")
47
+ return result;
48
+ if (Array.isArray(result)) {
49
+ const texts = result
50
+ .filter((b) => b?.type === "text")
51
+ .map((b) => b.text);
52
+ if (texts.length)
53
+ return texts.join("\n");
54
+ }
55
+ if (typeof result === "object") {
56
+ return JSON.stringify(result).slice(0, 500);
57
+ }
58
+ return String(result);
59
+ }
60
+ // ── Main ─────────────────────────────────────────────────────────────────
61
+ async function main() {
62
+ console.log("=== NodeBench MCP Dogfood Runner ===\n");
63
+ // Init DB (creates ~/.nodebench/ if needed)
64
+ getDb();
65
+ _setDbAccessor(getDb);
66
+ // Load all toolsets so we have the full catalog for meta/discovery tools
67
+ console.log("Loading all toolsets...");
68
+ const domainTools = await loadToolsets(ALL_DOMAIN_KEYS);
69
+ console.log(` Loaded ${domainTools.length} domain tools across ${ALL_DOMAIN_KEYS.length} domains\n`);
70
+ // Build meta tools (check_mcp_setup etc.)
71
+ const metaTools = createMetaTools(domainTools);
72
+ // Build progressive discovery tools
73
+ const allToolsFlat = [...domainTools, ...metaTools, ...dogfoodJudgeTools];
74
+ const discoveryTools = createProgressiveDiscoveryTools(allToolsFlat.map((t) => ({ name: t.name, description: t.description })));
75
+ // Grand combined tool list
76
+ const allTools = [...allToolsFlat, ...discoveryTools];
77
+ console.log(`Total tools assembled: ${allTools.length}\n`);
78
+ const results = [];
79
+ // ════════════════════════════════════════════════════════════════════
80
+ // Scenario 1: Setup sanity + preset confirmation
81
+ // ════════════════════════════════════════════════════════════════════
82
+ {
83
+ console.log("── Scenario 1: Setup sanity + preset confirmation ──");
84
+ const scenarioStart = Date.now();
85
+ const errors = [];
86
+ let toolCalls = 0;
87
+ // 1a. check_mcp_setup
88
+ const setup = await callTool(findTool(allTools, "check_mcp_setup"), {});
89
+ toolCalls++;
90
+ if (!setup.ok)
91
+ errors.push(`check_mcp_setup: ${setup.error}`);
92
+ else
93
+ console.log(` check_mcp_setup: OK (${setup.ms}ms)`);
94
+ // 1b. list_available_toolsets — this tool is inline in index.ts,
95
+ // so we simulate it by listing TOOLSET_MAP keys
96
+ const toolsetNames = ALL_DOMAIN_KEYS;
97
+ const loadedToolsets = Object.keys(TOOLSET_MAP);
98
+ toolCalls++;
99
+ console.log(` list_available_toolsets (simulated): ${loadedToolsets.length} loaded of ${toolsetNames.length} total (${0}ms)`);
100
+ // 1c. discover_tools
101
+ const discover = await callTool(findTool(allTools, "discover_tools"), {
102
+ query: "preset recommendation founder operator banker researcher starter",
103
+ });
104
+ toolCalls++;
105
+ if (!discover.ok)
106
+ errors.push(`discover_tools: ${discover.error}`);
107
+ else
108
+ console.log(` discover_tools: OK (${discover.ms}ms)`);
109
+ // 1d. Record telemetry
110
+ const telemetry = await callTool(findTool(allTools, "record_dogfood_telemetry"), {
111
+ scenarioId: "mcp_setup_sanity",
112
+ userRole: "founder",
113
+ primaryPrompt: "Setup sanity check: verify MCP health, list presets, discover preset-related tools",
114
+ surface: "mcp",
115
+ toolsInvoked: ["check_mcp_setup", "list_available_toolsets", "discover_tools"],
116
+ toolCallCount: toolCalls,
117
+ latencyMs: Date.now() - scenarioStart,
118
+ });
119
+ toolCalls++;
120
+ if (!telemetry.ok)
121
+ errors.push(`record_dogfood_telemetry: ${telemetry.error}`);
122
+ const totalMs = Date.now() - scenarioStart;
123
+ const pass = errors.length === 0;
124
+ results.push({ scenarioId: "mcp_setup_sanity", userRole: "founder", surface: "mcp", toolCalls, totalMs, errors, pass });
125
+ console.log(` Result: ${pass ? "PASS" : "FAIL"} (${totalMs}ms, ${toolCalls} calls, ${errors.length} errors)\n`);
126
+ }
127
+ // ════════════════════════════════════════════════════════════════════
128
+ // Scenario 2: Founder preset weekly reset
129
+ // ════════════════════════════════════════════════════════════════════
130
+ {
131
+ console.log("── Scenario 2: Founder preset weekly reset ──");
132
+ const scenarioStart = Date.now();
133
+ const errors = [];
134
+ let toolCalls = 0;
135
+ // 2a. founder_deep_context_gather
136
+ const gather = await callTool(findTool(allTools, "founder_deep_context_gather"), {
137
+ rawInput: "NodeBench is the local-first operating-memory and entity-context layer for agent-native businesses. We just shipped Phase 10-14: causal memory, ambient intelligence, provider bus, dogfood judge system, dynamic imports, starter preset. Main contradiction: too many surfaces before proving the 3 core habits (weekly reset, pre-delegation brief, important-change review). Public narrative still lags internal thesis.",
138
+ });
139
+ toolCalls++;
140
+ if (!gather.ok)
141
+ errors.push(`founder_deep_context_gather: ${gather.error}`);
142
+ else
143
+ console.log(` founder_deep_context_gather: OK (${gather.ms}ms)`);
144
+ // 2b. extract_variables
145
+ const extractVars = await callTool(findTool(allTools, "extract_variables"), {
146
+ context: extractText(gather.result),
147
+ });
148
+ toolCalls++;
149
+ if (!extractVars.ok)
150
+ errors.push(`extract_variables: ${extractVars.error}`);
151
+ else
152
+ console.log(` extract_variables: OK (${extractVars.ms}ms)`);
153
+ // 2c. build_claim_graph
154
+ const claimGraph = await callTool(findTool(allTools, "build_claim_graph"), {
155
+ variables: extractText(extractVars.result),
156
+ });
157
+ toolCalls++;
158
+ if (!claimGraph.ok)
159
+ errors.push(`build_claim_graph: ${claimGraph.error}`);
160
+ else
161
+ console.log(` build_claim_graph: OK (${claimGraph.ms}ms)`);
162
+ // 2d. rank_interventions
163
+ const rankInt = await callTool(findTool(allTools, "rank_interventions"), {
164
+ claimGraph: extractText(claimGraph.result),
165
+ });
166
+ toolCalls++;
167
+ if (!rankInt.ok)
168
+ errors.push(`rank_interventions: ${rankInt.error}`);
169
+ else
170
+ console.log(` rank_interventions: OK (${rankInt.ms}ms)`);
171
+ // 2e. render_decision_memo
172
+ const memo = await callTool(findTool(allTools, "render_decision_memo"), {
173
+ interventions: extractText(rankInt.result),
174
+ context: extractText(gather.result),
175
+ });
176
+ toolCalls++;
177
+ if (!memo.ok)
178
+ errors.push(`render_decision_memo: ${memo.error}`);
179
+ else
180
+ console.log(` render_decision_memo: OK (${memo.ms}ms)`);
181
+ // 2f. founder_packet_validate
182
+ // This tool requires Convex gateway. Treat gateway-missing as soft pass.
183
+ const validate = await callTool(findTool(allTools, "founder_packet_validate"), {
184
+ packet: extractText(memo.result),
185
+ });
186
+ toolCalls++;
187
+ if (!validate.ok) {
188
+ const isGatewayMissing = validate.error?.includes("Cannot call Deep Sim backend") || validate.error?.includes("CONVEX");
189
+ if (isGatewayMissing) {
190
+ console.log(` founder_packet_validate: SKIP (no Convex gateway — expected in local-only mode, ${validate.ms}ms)`);
191
+ }
192
+ else {
193
+ errors.push(`founder_packet_validate: ${validate.error}`);
194
+ }
195
+ }
196
+ else {
197
+ // Also handle gateway error returned as a successful result with error flag
198
+ const resultStr = JSON.stringify(validate.result);
199
+ if (resultStr.includes('"error":true') && resultStr.includes("Cannot call Deep Sim backend")) {
200
+ console.log(` founder_packet_validate: SKIP (no Convex gateway — expected in local-only mode, ${validate.ms}ms)`);
201
+ }
202
+ else {
203
+ console.log(` founder_packet_validate: OK (${validate.ms}ms)`);
204
+ }
205
+ }
206
+ // 2g. Record telemetry
207
+ const telemetry = await callTool(findTool(allTools, "record_dogfood_telemetry"), {
208
+ scenarioId: "founder_weekly_reset",
209
+ userRole: "founder",
210
+ primaryPrompt: "Founder weekly reset: deep context gather -> extract variables -> claim graph -> rank interventions -> decision memo -> validate",
211
+ surface: "mcp",
212
+ toolsInvoked: [
213
+ "founder_deep_context_gather", "extract_variables", "build_claim_graph",
214
+ "rank_interventions", "render_decision_memo", "founder_packet_validate",
215
+ ],
216
+ toolCallCount: toolCalls,
217
+ latencyMs: Date.now() - scenarioStart,
218
+ });
219
+ toolCalls++;
220
+ if (!telemetry.ok)
221
+ errors.push(`record_dogfood_telemetry: ${telemetry.error}`);
222
+ const totalMs = Date.now() - scenarioStart;
223
+ const pass = errors.length === 0;
224
+ results.push({ scenarioId: "founder_weekly_reset", userRole: "founder", surface: "mcp", toolCalls, totalMs, errors, pass });
225
+ console.log(` Result: ${pass ? "PASS" : "FAIL"} (${totalMs}ms, ${toolCalls} calls, ${errors.length} errors)\n`);
226
+ }
227
+ // ════════════════════════════════════════════════════════════════════
228
+ // Scenario 3: Banker blank-state company search
229
+ // ════════════════════════════════════════════════════════════════════
230
+ {
231
+ console.log("── Scenario 3: Banker blank-state company search ──");
232
+ const scenarioStart = Date.now();
233
+ const errors = [];
234
+ let toolCalls = 0;
235
+ // 3a. run_recon
236
+ const recon = await callTool(findTool(allTools, "run_recon"), {
237
+ target: "Anthropic",
238
+ scope: "company",
239
+ });
240
+ toolCalls++;
241
+ if (!recon.ok)
242
+ errors.push(`run_recon: ${recon.error}`);
243
+ else
244
+ console.log(` run_recon: OK (${recon.ms}ms)`);
245
+ // 3b. extract_variables
246
+ const extractVars = await callTool(findTool(allTools, "extract_variables"), {
247
+ context: extractText(recon.result),
248
+ });
249
+ toolCalls++;
250
+ if (!extractVars.ok)
251
+ errors.push(`extract_variables: ${extractVars.error}`);
252
+ else
253
+ console.log(` extract_variables: OK (${extractVars.ms}ms)`);
254
+ // 3c. build_claim_graph
255
+ const claimGraph = await callTool(findTool(allTools, "build_claim_graph"), {
256
+ variables: extractText(extractVars.result),
257
+ });
258
+ toolCalls++;
259
+ if (!claimGraph.ok)
260
+ errors.push(`build_claim_graph: ${claimGraph.error}`);
261
+ else
262
+ console.log(` build_claim_graph: OK (${claimGraph.ms}ms)`);
263
+ // 3d. rank_interventions
264
+ const rankInt = await callTool(findTool(allTools, "rank_interventions"), {
265
+ claimGraph: extractText(claimGraph.result),
266
+ });
267
+ toolCalls++;
268
+ if (!rankInt.ok)
269
+ errors.push(`rank_interventions: ${rankInt.error}`);
270
+ else
271
+ console.log(` rank_interventions: OK (${rankInt.ms}ms)`);
272
+ // 3e. render_decision_memo (banker lens)
273
+ const memo = await callTool(findTool(allTools, "render_decision_memo"), {
274
+ interventions: extractText(rankInt.result),
275
+ context: extractText(recon.result),
276
+ lens: "banker",
277
+ });
278
+ toolCalls++;
279
+ if (!memo.ok)
280
+ errors.push(`render_decision_memo: ${memo.error}`);
281
+ else
282
+ console.log(` render_decision_memo: OK (${memo.ms}ms)`);
283
+ // 3f. Record telemetry
284
+ const telemetry = await callTool(findTool(allTools, "record_dogfood_telemetry"), {
285
+ scenarioId: "banker_anthropic_search",
286
+ userRole: "banker",
287
+ primaryPrompt: "Banker blank-state company search: recon Anthropic -> extract variables -> claim graph -> rank interventions -> decision memo (banker lens)",
288
+ surface: "mcp",
289
+ toolsInvoked: [
290
+ "run_recon", "extract_variables", "build_claim_graph",
291
+ "rank_interventions", "render_decision_memo",
292
+ ],
293
+ toolCallCount: toolCalls,
294
+ latencyMs: Date.now() - scenarioStart,
295
+ });
296
+ toolCalls++;
297
+ if (!telemetry.ok)
298
+ errors.push(`record_dogfood_telemetry: ${telemetry.error}`);
299
+ const totalMs = Date.now() - scenarioStart;
300
+ const pass = errors.length === 0;
301
+ results.push({ scenarioId: "banker_anthropic_search", userRole: "banker", surface: "mcp", toolCalls, totalMs, errors, pass });
302
+ console.log(` Result: ${pass ? "PASS" : "FAIL"} (${totalMs}ms, ${toolCalls} calls, ${errors.length} errors)\n`);
303
+ }
304
+ // ════════════════════════════════════════════════════════════════════
305
+ // Scenario 4: Public-doc drift detection
306
+ // ════════════════════════════════════════════════════════════════════
307
+ {
308
+ console.log("── Scenario 4: Public-doc drift detection ──");
309
+ const scenarioStart = Date.now();
310
+ const errors = [];
311
+ let toolCalls = 0;
312
+ // 4a. founder_deep_context_gather
313
+ const gather = await callTool(findTool(allTools, "founder_deep_context_gather"), {
314
+ rawInput: "Internal thesis: NodeBench is the operating memory for agent-native businesses — local-first, MCP-native, 304 tools with progressive discovery. Public positioning (README, landing page, npm description): still says 'Development Methodology Edition' and '6-Phase Verification'. The internal product has evolved past the public narrative. Need to detect and flag this drift before it causes confusion with early adopters.",
315
+ });
316
+ toolCalls++;
317
+ if (!gather.ok)
318
+ errors.push(`founder_deep_context_gather: ${gather.error}`);
319
+ else
320
+ console.log(` founder_deep_context_gather: OK (${gather.ms}ms)`);
321
+ // 4b. extract_variables
322
+ const extractVars = await callTool(findTool(allTools, "extract_variables"), {
323
+ context: extractText(gather.result),
324
+ });
325
+ toolCalls++;
326
+ if (!extractVars.ok)
327
+ errors.push(`extract_variables: ${extractVars.error}`);
328
+ else
329
+ console.log(` extract_variables: OK (${extractVars.ms}ms)`);
330
+ // 4c. build_claim_graph
331
+ const claimGraph = await callTool(findTool(allTools, "build_claim_graph"), {
332
+ variables: extractText(extractVars.result),
333
+ });
334
+ toolCalls++;
335
+ if (!claimGraph.ok)
336
+ errors.push(`build_claim_graph: ${claimGraph.error}`);
337
+ else
338
+ console.log(` build_claim_graph: OK (${claimGraph.ms}ms)`);
339
+ // 4d. render_decision_memo
340
+ const memo = await callTool(findTool(allTools, "render_decision_memo"), {
341
+ claimGraph: extractText(claimGraph.result),
342
+ context: extractText(gather.result),
343
+ });
344
+ toolCalls++;
345
+ if (!memo.ok)
346
+ errors.push(`render_decision_memo: ${memo.error}`);
347
+ else
348
+ console.log(` render_decision_memo: OK (${memo.ms}ms)`);
349
+ // 4e. flag_important_change
350
+ const flag = await callTool(findTool(allTools, "flag_important_change"), {
351
+ changeCategory: "contradiction_found",
352
+ impactScore: 0.85,
353
+ impactReason: "Internal product thesis (operating memory for agent-native businesses, 304 tools, progressive discovery, causal memory) has diverged from public-facing copy (Development Methodology Edition, 6-Phase Verification). Public narrative lags by ~3 major phases.",
354
+ affectedEntities: [
355
+ { entityType: "document", entityId: "nodebench-readme" },
356
+ { entityType: "document", entityId: "nodebench-landing-page" },
357
+ { entityType: "document", entityId: "npm-package-description" },
358
+ ],
359
+ suggestedAction: "Update README, landing page hero copy, and npm description to reflect current product identity: operating memory for agent-native businesses.",
360
+ });
361
+ toolCalls++;
362
+ if (!flag.ok)
363
+ errors.push(`flag_important_change: ${flag.error}`);
364
+ else
365
+ console.log(` flag_important_change: OK (${flag.ms}ms)`);
366
+ // 4f. Record telemetry
367
+ const telemetry = await callTool(findTool(allTools, "record_dogfood_telemetry"), {
368
+ scenarioId: "public_doc_drift",
369
+ userRole: "founder",
370
+ primaryPrompt: "Public-doc drift detection: deep context gather about internal vs public positioning mismatch -> extract variables -> claim graph -> decision memo -> flag important change",
371
+ surface: "mcp",
372
+ toolsInvoked: [
373
+ "founder_deep_context_gather", "extract_variables", "build_claim_graph",
374
+ "render_decision_memo", "flag_important_change",
375
+ ],
376
+ toolCallCount: toolCalls,
377
+ latencyMs: Date.now() - scenarioStart,
378
+ });
379
+ toolCalls++;
380
+ if (!telemetry.ok)
381
+ errors.push(`record_dogfood_telemetry: ${telemetry.error}`);
382
+ const totalMs = Date.now() - scenarioStart;
383
+ const pass = errors.length === 0;
384
+ results.push({ scenarioId: "public_doc_drift", userRole: "founder", surface: "mcp", toolCalls, totalMs, errors, pass });
385
+ console.log(` Result: ${pass ? "PASS" : "FAIL"} (${totalMs}ms, ${toolCalls} calls, ${errors.length} errors)\n`);
386
+ }
387
+ // ════════════════════════════════════════════════════════════════════
388
+ // Summary Table
389
+ // ════════════════════════════════════════════════════════════════════
390
+ console.log("╔══════════════════════════════╦═══════════╦═══════════╦════════════╦════════╗");
391
+ console.log("║ Scenario ║ Tool Calls║ Latency ║ Errors ║ Result ║");
392
+ console.log("╠══════════════════════════════╬═══════════╬═══════════╬════════════╬════════╣");
393
+ for (const r of results) {
394
+ const name = r.scenarioId.padEnd(28);
395
+ const calls = String(r.toolCalls).padStart(9);
396
+ const ms = `${r.totalMs}ms`.padStart(9);
397
+ const errs = String(r.errors.length).padStart(10);
398
+ const status = r.pass ? " PASS " : " FAIL ";
399
+ console.log(`║ ${name} ║${calls} ║${ms} ║${errs} ║${status}║`);
400
+ }
401
+ console.log("╚══════════════════════════════╩═══════════╩═══════════╩════════════╩════════╝");
402
+ const totalPass = results.filter((r) => r.pass).length;
403
+ const totalFail = results.filter((r) => !r.pass).length;
404
+ console.log(`\nTotal: ${totalPass} passed, ${totalFail} failed out of ${results.length} scenarios`);
405
+ // Print errors if any
406
+ for (const r of results) {
407
+ if (r.errors.length > 0) {
408
+ console.log(`\n Errors in ${r.scenarioId}:`);
409
+ for (const e of r.errors) {
410
+ console.log(` - ${e}`);
411
+ }
412
+ }
413
+ }
414
+ console.log("\nDone. Telemetry recorded to ~/.nodebench/nodebench.db");
415
+ process.exit(totalFail > 0 ? 1 : 0);
416
+ }
417
+ main().catch((err) => {
418
+ console.error("Fatal error:", err);
419
+ process.exit(2);
420
+ });
421
+ //# sourceMappingURL=dogfoodRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dogfoodRunner.js","sourceRoot":"","sources":["../../src/benchmarks/dogfoodRunner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebench-mcp",
3
- "version": "2.39.0",
3
+ "version": "2.40.0",
4
4
  "mcpName": "io.github.HomenShum/nodebench",
5
5
  "description": "338 MCP tools across 55 domains. Operating intelligence for founders: decision packets, structured research, agent verification, quality gates, progressive discovery with 8-mode hybrid search + neural embeddings, TOON encoding, Agent-as-a-Graph bipartite search. Starter: 15 tools. Core: 81 tools. Full: 338 tools.",
6
6
  "type": "module",