Status: Living · Last reviewed 2026-04-19
Owner: Core team
Supersedes: AGENT_TRUST_INFRASTRUCTURE.md, PROGRESSIVE_DISCLOSURE_AND_MCP_DISCOVERY.md, progressive-disclosure-*, DAILY_BRIEFING_MCP_UNIFIED_IMPLEMENTATION_PLAN.md — archived.
NodeBench ships as an MCP server (nodebench-mcp on npm) with ~350 tools across 50+ domains. One-line install: claude mcp add nodebench -- npx -y nodebench-mcp. Tools are discoverable via progressive disclosure (discover_tools, get_tool_quick_ref, get_workflow_chain) to avoid overwhelming agents with a 350-item catalog.
| Reference | Pattern |
|---|---|
| Anthropic MCP protocol spec (2024-11-05) | Tool discovery + progressive loading |
| Claude Code built-in tools | Tool allowlist per agent type |
| LangChain / LlamaIndex tool registries | Hybrid search over tool catalog |
- One tool registry, many discovery paths. Tools live in
packages/mcp-local/src/tools/toolRegistry.ts. - Progressive discovery is the default. Clients never need to load all 350 at once.
- Presets gate tool visibility per use-case:
starter(15) ·founder·banker·researcher·full(350). - Related-tool cross-refs are bidirectional and auto-derived.
- Toolset gating respects Cursor's 40-tool limit with the
cursorpreset.
┌─────────────────────────────────────────────────┐
│ toolRegistry.ts (350 entries) │
│ category · tags · quickRef · phase · │
│ complexity · nextTools · relatedTools │
├─────────────────────────────────────────────────┤
│ Discovery tools (meta) │
│ discover_tools(query, offset, limit, expand) │
│ get_tool_quick_ref(tool, depth) │
│ get_workflow_chain(workflow) │
├─────────────────────────────────────────────────┤
│ Presets (`toolsetRegistry.ts`) │
│ starter · founder · banker · researcher · │
│ operator · cursor · full · + 10 domain presets│
├─────────────────────────────────────────────────┤
│ Transport │
│ stdio (default for Claude Code) │
│ WebSocket gateway (server/mcpGateway.ts) │
│ · API key auth (mcpAuth.ts) │
│ · rate limit 100/min · idle 30min │
│ · close codes 4001/4002/4003 │
└─────────────────────────────────────────────────┘
nodebench-mcp discover # run-and-exit discovery
nodebench-mcp setup # interactive setup
nodebench-mcp workflow # list workflow chains
nodebench-mcp quickref # quick ref for a tool
nodebench-mcp call # call a tool by name
nodebench-mcp demo # instant demo mode
All bypass MCP transport and call handlers directly.
# Claude Code (one-liner)
claude mcp add nodebench -- npx -y nodebench-mcp
# Cursor (mcp.json)
{
"mcpServers": {
"nodebench": {
"command": "npx",
"args": ["-y", "nodebench-mcp"]
}
}
}Also: public https://www.nodebenchai.com/agent-setup.txt as single-paste instructions for any Claude-compatible agent.
| Failure | Detection | Recovery |
|---|---|---|
| Client hits 40-tool limit (Cursor) | Preset gating | User selects cursor preset |
| Tool count drift between client + server | Handshake exchange | Reload tool list on mismatch |
| Embedding search returns empty | Fallback chain: HF → Google → OpenAI | Lexical-only search if all fail |
Adding a new MCP tool:
- Create handler in
packages/mcp-local/src/tools/<domain>/<toolName>.ts - Add schema with
{ name, description, inputSchema, handler } - Register in
toolRegistry.tswith tags + quickRef + relatedTools - Add to relevant presets in
toolsetRegistry.ts - Unit test
- AGENT_PIPELINE.md — how pipeline sub-agents use MCP tools
- DILIGENCE_BLOCKS.md — block-specific tool allowlists
| Date | Change |
|---|---|
| 2026-04-19 | Consolidated MCP integration spec |