{
  "generated_note": "GENERATED by scripts/build-connector-registry.cjs (MCP-tool discovery) - do not edit by hand. The MCP-tool projection: every lib/mcp/tools/*.cjs module (plus lib/mcp/tool-router.cjs and lib/mcp/contract-version.cjs) exports a `connectors` array (the SOURCE of truth); this file is the generated registry of those descriptors, also folded into data/connector-registry.json (source: \"mcp_tool\").",
  "connectors": [
    {
      "surface": "mcp:artifact_file",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "Files a markdown artifact and mints a memory_event node through navigation.cjs, plus a typed claim node with SOURCED_FROM provenance edges -- a material room-content write, not a pure read.",
      "layer": "harness",
      "layer_why": "Files a markdown artifact and mints a memory_event plus a provenance-linked claim node; a room-content/graph-infrastructure write, the rubric's own step 3 signal."
    },
    {
      "surface": "mcp:chain_resolve",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read: resolves a framework chain via composeWorkflow, no execution, no fork.",
      "layer": "graph",
      "layer_why": "Resolves a framework chain across candidate methodologies before any execution; the chain-resolution coordination step, the rubric's own step 1 signal."
    },
    {
      "surface": "mcp:chain_run",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "Executes the autonomous_safe prefix server-side (wrapping the shipped runChain) and halts at the first material step, rendering a genuine Decision-Gate fork through the SAME gate-render.cjs ladder gate_render uses, instead of executing it unattended.",
      "layer": "graph",
      "layer_why": "Executes a multi-step chain prefix and halts at the first material step; multi-step coordination over shared state, the rubric's own step 1 signal verbatim."
    },
    {
      "surface": "mcp:claim_read",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read of local claims, their checking records and the room counts; no fork and no write.",
      "layer": "harness",
      "layer_why": "Local graph read through the navigation chokepoint."
    },
    {
      "surface": "mcp:claim_verify",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "Records local verification metadata on a claim; it never promotes truth state.",
      "layer": "harness",
      "layer_why": "Local graph bookkeeping write through the navigation chokepoint."
    },
    {
      "surface": "mcp:claim_write",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "Writes a proposed DIKW claim node through the node-insert.cjs chokepoint, a material graph write (not a pure read), the same F.1 shape graph_write/memory_event/artifact_file already carry. The write itself renders no fork; the genuine Decision-Gate fork it later passes through is gate_answer, which already declares F.1 and promotes this node to confirmed.",
      "layer": "harness",
      "layer_why": "Writes a proposed DIKW claim node through the node-insert.cjs chokepoint; a graph/memory infrastructure write, the rubric's own step 3 signal."
    },
    {
      "surface": "mcp:context_assemble",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "A pure read across four local legs (room state, session fragments, graph neighborhood, projected cortex) through the navigation.cjs chokepoint -- no graph mutation, no node minted, no fork. Contrast with memory_event's F.1: this tool never writes, the read/write line RESEARCH.md 2.5 names as the load-bearing distinction this phase preserves.",
      "layer": "context",
      "layer_why": "Assembles room state, session fragments, graph neighborhood and projected cortex into one turn's context; changing what the model can see this turn, the rubric's own step 4 signal verbatim."
    },
    {
      "surface": "mcp:contract_version",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read of a pinned version constant and a static trust-boundary enum; no fork, no side effects.",
      "layer": "none",
      "layer_why": "A pure read of a pinned version constant and a static trust-boundary enum; no rung engineered, the honest none."
    },
    {
      "surface": "mcp:contradiction_check",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read: navigation.cjs findContradictions through the chokepoint, no fork.",
      "layer": "harness",
      "layer_why": "Pure graph read (findContradictions) through the navigation.cjs chokepoint; a graph-infrastructure query, not a dispatch decision."
    },
    {
      "surface": "mcp:detect_dual_path",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure classification over a string (5-feature additive score), no side effects, no graph write, no fork. Returns booleans-only telemetry-safe features (Canon Part 8), exactly what the tool description already claims.",
      "layer": "harness",
      "layer_why": "Scores a message across five additive features to classify it as upload-shaped or conversation-shaped; a measurement pass over the input, the rubric's own step 3 verb, with the actual path dispatch performed by the calling agent rather than this tool (WD-6 own-rung)."
    },
    {
      "surface": "mcp:eureka_capability_job_cancel",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Requests cooperative cancellation for a retained Eureka job.",
      "layer": "harness",
      "layer_why": "Owns the Eureka MCP worker session and job lifecycle; persistence and review remain governed by MindrianOS."
    },
    {
      "surface": "mcp:eureka_capability_job_result",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Returns result for a completed catalogued Eureka job.",
      "layer": "harness",
      "layer_why": "Owns the Eureka MCP worker session and job lifecycle; persistence and review remain governed by MindrianOS."
    },
    {
      "surface": "mcp:eureka_capability_job_status",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Reads status for jobs owned by the current MindrianOS process.",
      "layer": "harness",
      "layer_why": "Owns the Eureka MCP worker session and job lifecycle; persistence and review remain governed by MindrianOS."
    },
    {
      "surface": "mcp:eureka_capability_run",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Runs a bounded local capability on caller-supplied data; no accepted-knowledge write, external retrieval, or acceptance occurs. Async RS jobs may persist local operational state.",
      "layer": "harness",
      "layer_why": "Routes capability calls to the Eureka MCP server while exposing its readiness and schemas and leaving graph authorization and persistence in MindrianOS."
    },
    {
      "surface": "mcp:eureka_capability_start",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Starts a supported catalogued async method and retains its worker session.",
      "layer": "harness",
      "layer_why": "Owns the Eureka MCP worker session and job lifecycle; persistence and review remain governed by MindrianOS."
    },
    {
      "surface": "mcp:eureka_graph_analyze",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only graph projection and local analysis; results remain proposed, unevidenced, and unfiled.",
      "layer": "harness",
      "layer_why": "Composes MindrianOS graph authorization with a separate local analysis process while leaving persistence and review in MindrianOS."
    },
    {
      "surface": "mcp:eureka_graph_assess_category_edge_patterns",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only assessment of existing category-edge patterns; it does not propose or score missing links.",
      "layer": "harness",
      "layer_why": "Composes the authorized MindrianOS room projection with a local Eureka discovery algorithm and preserves scope and snapshot lineage."
    },
    {
      "surface": "mcp:eureka_graph_backtest",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only evaluation of historical graph relationships; output is method performance evidence, not a relation proposal or graph write.",
      "layer": "harness",
      "layer_why": "Composes the MindrianOS-authorized graph projection with Eureka temporal evaluation and preserves source snapshot lineage."
    },
    {
      "surface": "mcp:eureka_graph_compare_topics",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only comparison of host-selected corpora; topic outliers remain exploratory and are not filed or treated as novel.",
      "layer": "harness",
      "layer_why": "Composes bounded MindrianOS text selections with Eureka bidirectional topic analysis and source index lineage."
    },
    {
      "surface": "mcp:eureka_graph_find_community_bridge_pairs",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only community and bridge analysis; candidates are not accepted relationships.",
      "layer": "harness",
      "layer_why": "Composes the authorized MindrianOS room projection with a local Eureka discovery algorithm and preserves scope and snapshot lineage."
    },
    {
      "surface": "mcp:eureka_graph_find_network_holes",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only four-cycle and rewiring analysis; missing diagonals remain candidate leads.",
      "layer": "harness",
      "layer_why": "Composes the authorized MindrianOS room projection with a local Eureka discovery algorithm and preserves scope and snapshot lineage."
    },
    {
      "surface": "mcp:eureka_graph_find_shared_neighbor_gaps",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only ranking of open-triad structural candidates; no relationships are asserted or persisted.",
      "layer": "harness",
      "layer_why": "Composes the authorized MindrianOS room projection with a local Eureka discovery algorithm and preserves scope and snapshot lineage."
    },
    {
      "surface": "mcp:eureka_graph_find_similar_unlinked_items",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only lexical similarity search over selected graph text; candidates need evidence review.",
      "layer": "harness",
      "layer_why": "Composes the authorized MindrianOS room projection with a local Eureka discovery algorithm and preserves scope and snapshot lineage."
    },
    {
      "surface": "mcp:eureka_graph_genesis_plan",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Local planning only; the result requires Theo/MindrianOS review and approved broker execution before any external research.",
      "layer": "harness",
      "layer_why": "Composes the authorized MindrianOS projection, typed artifact conversion, and local Genesis planner without graph writes or network access."
    },
    {
      "surface": "mcp:eureka_graph_map_neighbourhoods",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only structural comparison; candidate inferences remain proposed, unevidenced, and unfiled.",
      "layer": "harness",
      "layer_why": "Composes MindrianOS graph authorization with Eureka's local SME mapping method and preserves snapshot lineage."
    },
    {
      "surface": "mcp:eureka_graph_opportunity_scout",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Runs RS+HSI analysis over a bounded room projection and persists local operational job state; returned leads remain unvalidated and unfiled, with no accepted MindrianOS knowledge write.",
      "layer": "harness",
      "layer_why": "Composes MindrianOS graph authorization and source-linked projection with Eureka opportunity engines while preserving host review and persistence authority."
    },
    {
      "surface": "mcp:eureka_graph_package_relationships",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Packages already-proposed links for human review; no acceptance, discovery, or graph mutation occurs.",
      "layer": "harness",
      "layer_why": "Binds caller-proposed relations and evidence references to the authorized MindrianOS graph projection before packaging."
    },
    {
      "surface": "mcp:eureka_graph_prepare_artifacts",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only projection and transformation into a typed source-linked bundle; no downstream analysis or graph write.",
      "layer": "harness",
      "layer_why": "Prepares the MindrianOS-authorized local graph view for source-bounded Eureka text engines."
    },
    {
      "surface": "mcp:eureka_graph_project",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only projection of caller-selected IDs from the already-bound room through MindrianOS navigation; no graph mutation or scope expansion.",
      "layer": "harness",
      "layer_why": "Prepares the MindrianOS-owned graph view consumed by a separately attached analysis engine."
    },
    {
      "surface": "mcp:eureka_graph_propose_relationships",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only proposal generation; candidates remain unevidenced and unfiled for MindrianOS review.",
      "layer": "harness",
      "layer_why": "Exposes the stable graph.propose_relationships alias over the authorized MindrianOS projection without creating another graph reader."
    },
    {
      "surface": "mcp:eureka_graph_rank_paths",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only ranking of host-selected paths already verified against the authorized graph snapshot; no path discovery or graph mutation occurs.",
      "layer": "harness",
      "layer_why": "Composes host-retrieved path candidates with MindrianOS identity/edge verification and Eureka ranking while preserving lineage."
    },
    {
      "surface": "mcp:eureka_graph_score_surprise",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only triage over graph claims and caller probability judgments; the output neither assesses claim truth nor writes graph state.",
      "layer": "harness",
      "layer_why": "Composes MindrianOS graph authorization and caller-owned priors/posteriors with Eureka deterministic Bayesian surprise scoring."
    },
    {
      "surface": "mcp:eureka_hsi_interpret_whitespace",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only interpretation; zone classifications inherit explicit graph mappings and proposed questions remain unfiled for Theo review.",
      "layer": "harness",
      "layer_why": "Composes MindrianOS-owned HSI outputs and an explicitly scoped framework graph projection with Eureka interpretation."
    },
    {
      "surface": "mcp:extract_shallow",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Decision D-354-SYS05 (354-CONTEXT.md): extract_shallow is a pure parse by contract, not governed persistence. Verified against lib/core/shallow-doc-parser.cjs: this tool calls extractShallow(text, sessionId) with no opts.db, so setFocus never fires (it only fires when opts.db is supplied, extractShallow:191) and the memory_event write stays inert (safeRecord no-ops unless navigation.recordMemoryEvent is a function, which it is not today). Both documented callers run before a room exists or is bound, so persisting here would either need a room that does not exist or break the never-write-before-binding rule; governed persistence already exists at claim_write (writeClaimNode, review_status proposed) once a room is bound and the navigator confirms. This call performs zero graph writes; it computes and returns an in-memory {user, venture, claims} object with persisted:false. hitl_shape reflects real, intended behaviour, with no description-versus-behavior mismatch.",
      "layer": "loop",
      "layer_why": "Runs one bounded extraction pass over a pasted document into a structured {user, venture, claims} object and returns it; a single worker cycle to a stopping condition, not a graph write today (verified inert against the actual wiring)."
    },
    {
      "surface": "mcp:framework_run",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "Resolves a framework chain via composeWorkflow; a material (non-autonomous_safe) step is a genuine Decision-Gate fork -- it halts and renders a gate rather than executing unattended.",
      "layer": "loop",
      "layer_why": "Resolves and runs one framework's chain to its material step; a single framework's own cycle to a stopping condition, the rubric's own single hitl_shape fork signal."
    },
    {
      "surface": "mcp:gate_answer",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "Ratifies a gate decision; an approve verdict routes a material write through navigation.cjs (Part 9) -- the fork the human already resolved via gate_render -- and now also writes a typed decision node with SOURCED_FROM/USES_FRAMEWORK provenance edges, promoted to confirmed via confirmNode.",
      "layer": "harness",
      "layer_why": "Ratifies a gate decision and writes a typed decision node with provenance edges through the gate ledger; a gate-ledger tool."
    },
    {
      "surface": "mcp:gate_list",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read: lists the open decision gates and one gate's state from the room's own records, no fork.",
      "layer": "harness",
      "layer_why": "Reads the gate records a gate-ledger mint left in the room through the read-only door; a gate-ledger tool that answers nothing and changes nothing."
    },
    {
      "surface": "mcp:gate_render",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "Renders the Mindrian gate superset card via the 3-rung renderer ladder for a genuine Decision-Gate fork; the F.8/F.9 shipped renderers it composes from are the same binding/reconcile HITL shapes.",
      "layer": "harness",
      "layer_why": "Renders a Decision-Gate card through the gate-ledger rendering ladder; a gate-ledger tool, the rubric's own step 3 signal."
    },
    {
      "surface": "mcp:graph_query",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read: graph neighborhood retrieval through the navigation.cjs chokepoint, no fork.",
      "layer": "harness",
      "layer_why": "Graph neighborhood retrieval through the navigation.cjs chokepoint; a graph-infrastructure read, the rubric's own step 3 signal."
    },
    {
      "surface": "mcp:graph_reason",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Every mode is a pure read through the navigation.cjs chokepoint: no node minted, no edge written, and specifically NO cross-room edge materialized (edges.cjs:45, \"Cross-room aggregation forbidden\"). Contrast with graph_write's F.1: this tool never writes, the read/write line RESEARCH.md 2.5 names as the load-bearing distinction this phase preserves.",
      "layer": "harness",
      "layer_why": "Pure graph-neighborhood reasoning through the navigation.cjs chokepoint; a graph-infrastructure read, the rubric's own step 3 signal."
    },
    {
      "surface": "mcp:graph_write",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "Mints a typed graph edge (a cascade decision, the same DEFERRED/REJECTED F.1 vocabulary navigation.cjs already writes) -- a material graph mutation, not a pure read.",
      "layer": "harness",
      "layer_why": "Mints a typed graph edge through the navigation.cjs chokepoint; a graph-infrastructure write, the rubric's own step 3 signal."
    },
    {
      "surface": "mcp:identity_write",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "Writes a durable, cross-room claim about the user's identity to a file every room reads -- a material commitment the user should confirm rather than have inferred. Contrast with graph_write's F.1 (a typed graph edge): this is the same shape (a material write with a declared fork) applied to a different, cross-room-identity surface.",
      "layer": "harness",
      "layer_why": "Writes a durable cross-room identity claim to a file every room reads; a registry-like infrastructure write, the rubric's own step 3 signal."
    },
    {
      "surface": "mcp:memory_event",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "Mints an append-only memory_event node recording an external observation -- a material graph write, not a pure read.",
      "layer": "harness",
      "layer_why": "Mints an append-only memory_event node; a memory-infrastructure write, the rubric's own step 3 signal."
    },
    {
      "surface": "mcp:question_read",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read of the room's governing question, its origin and its history; no fork and no write.",
      "layer": "harness",
      "layer_why": "Local room read through the governing-question door and the navigation chokepoint."
    },
    {
      "surface": "mcp:question_set",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "A changed question is one Decision Gate card: the officer writes what the old question got wrong (refines), says it is a new question (relocates), or cancels.",
      "layer": "harness",
      "layer_why": "Local room write through the one governing-question door and the navigation chokepoint."
    },
    {
      "surface": "mcp:reach_candidates",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pulls the full candidate-reach set through the shipped dispatchSensors path -- no navigator-facing fork. It reads the Hedge weight state through a READ-ONLY room.db handle, so the call performs no write of any kind: no schema migration, no memory_event, no weight-state snapshot.",
      "layer": "graph",
      "layer_why": "Pulls the full candidate-reach set through the dispatchSensors path; the same reach-dispatch coordination as suggest_next."
    },
    {
      "surface": "mcp:research_run",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.6",
      "hitl_why": "Deep research plans are reviewed on an F.6 Plan Review card before any fetch; quick runs ask on an F.0 grant card; filing asks on an F.8 basket.",
      "layer": "harness",
      "layer_why": "Mints gate_render payloads through gate-ledger material_step gates and persists grants on approval; a gate-ledger tool, the rubric's own step 3 signal."
    },
    {
      "surface": "mcp:room_artifact",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read: returns one artifact's markdown from the bound room for display, no fork.",
      "layer": "harness",
      "layer_why": "Local room file read inside the bound room, contained by realpath."
    },
    {
      "surface": "mcp:room_bind",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.8",
      "hitl_why": "A session with no explicit room and no cwd auto-bind is genuinely ambiguous; room_bind returns needs_binding_card:true instead of guessing, and the F.8 card asks the human which room this session writes to (fires once per session, D-03/D-05).",
      "layer": "context",
      "layer_why": "Binds the session to a room via an F.8 human choice before any write; establishes which room's context the rest of the session reads and writes, a session-binding fact, not new methodology or scaffolding."
    },
    {
      "surface": "mcp:room_changes",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read: returns ordered room changes and snapshots for the browser read copy, no fork.",
      "layer": "harness",
      "layer_why": "Local room read through the read-only door of the navigation chokepoint."
    },
    {
      "surface": "mcp:room_create",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.0",
      "hitl_why": "The navigator approves, rejects or defers the local room preview before the existing birth operation writes anything.",
      "layer": "harness",
      "layer_why": "Adapts the shared gate ledger and room birth operation to the host startup flow."
    },
    {
      "surface": "mcp:room_list",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read: enumerates room directories under MINDRIAN_ROOMS_HOME, no fork. It may carry a one-time pointer to the Eureka opt-in card, which the gate tools own; room_list itself forks nothing and returns on one path.",
      "layer": "context",
      "layer_why": "Enumerates room directories to let the navigator choose which room's context to bind; a room-context reader."
    },
    {
      "surface": "mcp:room_search",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read: bounded substring search over the session-bound room, no fork.",
      "layer": "context",
      "layer_why": "Bounded substring search over the session-bound room's own content; a room-context reader."
    },
    {
      "surface": "mcp:room_startup",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "The navigator chooses the next move after reviewing saved room understanding and unfinished work.",
      "layer": "harness",
      "layer_why": "Composes existing memory readers, a durable visit checkpoint and a shared-ledger next-move card."
    },
    {
      "surface": "mcp:room_state_bound",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read: returns the session-bound room's STATE.md, no fork. Named room_state_bound (not the bare room_state) to avoid colliding with the live Phase 52 grouped router tool of that name.",
      "layer": "context",
      "layer_why": "Reads the session-bound room's STATE.md; a room-context reader, the rubric's own step 4 signal verbatim."
    },
    {
      "surface": "mcp:rs_experts_find",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only search within the bound room; it makes no external request and does not write local knowledge.",
      "layer": "harness",
      "layer_why": "Uses the bound-session room resolver and navigation read-only database door."
    },
    {
      "surface": "mcp:rs_thesis_read",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Read-only lookup of a prior local Reverse Salient thesis; no fork, network call, or room write.",
      "layer": "harness",
      "layer_why": "Reads the bound room through the shared session resolver and navigation read-only SQLite door."
    },
    {
      "surface": "mcp:status_read",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read: composes this session's navigator status segments (including the day-one spend/cap segment) and publishes to the SSE bus, no fork.",
      "layer": "context",
      "layer_why": "Composes this session's status segments and publishes a session injection to the SSE bus; changes what the navigator sees this turn, the rubric's own step 4 signal."
    },
    {
      "surface": "mcp:stop_gate_check",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "F.1",
      "hitl_why": "The moved Stop-gate enforcement: on a genuine unanswered/relevant/novel gate it composes and returns a gate_render payload for the calling adapter to surface; a do-not-fire verdict composes nothing.",
      "layer": "harness",
      "layer_why": "Composes a gate_render payload on a genuine unanswered/relevant/novel verdict; a gate-ledger tool, the rubric's own step 3 signal."
    },
    {
      "surface": "mcp:suggest_next",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pulls the top candidate reach through the shipped dispatchSensors path -- no navigator-facing fork. It reads the Hedge weight state through a READ-ONLY room.db handle, so the call performs no write of any kind: no schema migration, no memory_event, no weight-state snapshot. Quick 260819-c8j: it may now make ONE optional read-only Brain call (chainRecommender.chainOfferForReach) when the top reach carries a brain_framework_chain companion; it passes no db handle into that call, so it still performs no write of any kind, and a Brain absence degrades to a grounded:false disclosure rather than an error.",
      "layer": "graph",
      "layer_why": "Pulls the top candidate reach through the dispatchSensors path; a reach-dispatch coordination decision, the rubric's own step 1 signal."
    },
    {
      "surface": "mcp:view_compile",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read: compiles a registered view (wiki today; others degrade honestly) for the bound room, no fork.",
      "layer": "none",
      "layer_why": "Compiles a registered view (wiki) for the bound room; a render/export of existing content, engineering no new rung, mirroring commands/vault.md's own none."
    },
    {
      "surface": "mcp:whitespace_scan",
      "source": "mcp_tool",
      "connects_to_spine": true,
      "sensor_triggers": [],
      "reach_id": null,
      "sub_mode": null,
      "framework": null,
      "posture": null,
      "hierarchy_rank": null,
      "filing": null,
      "plan_gated": false,
      "web_scope": null,
      "decision_surface": null,
      "hitl_shape": "none",
      "hitl_why": "Pure read: navigation.cjs findOpenQuestions + findUnsupportedClaims through the chokepoint, no fork.",
      "layer": "harness",
      "layer_why": "Pure graph read (findOpenQuestions/findUnsupportedClaims) through the navigation.cjs chokepoint; a graph-infrastructure query."
    }
  ]
}
