Skip to main content

API surface — MCP tools, REST endpoints, and coverage

The current catalog of MCP tools and REST endpoints exposed by the Studio Host, plus which surface (the VS Code extension, autonomous agents, or neither) actually reaches each one. Ground truth: 66 nm_v1_* MCP tools, 42 of them dispatched in-process to autonomous agents, 13 nms_v1_* external-caller tools, and 112 REST routes.
Frozen design principles, request/response schemas, and the error envelope format live in the internal MCP v1 contract — this page is the practical, currently-verified catalog and supersedes tool counts anywhere they’ve drifted.

External caller surface (nms_v1_*)

These 13 tools are the recommended entry point for external MCP clients — Claude Code, Cursor, scripts, CI agents. They cover the full human-in-the-loop lifecycle at a goal-centric level, without requiring knowledge of work units, branches, or the internal DAG.
Naming: nms_v1_* (NodalMerge Studio v1) vs. nm_v1_* (NodalMerge v1). The extra s marks the Studio-level abstraction layer. Both namespaces share the same host and the same error envelope format.

Goal management

ToolPurpose
nms_v1_goal_runStart a new goal — creates a work unit, execution session, and enqueues the orchestrator in one call. Returns goalId and sessionId.
nms_v1_goal_listList all goals with current status.
nms_v1_goal_statusDetailed status for one goal, including pending clarifications and session state.
nms_v1_goal_cancelCancel a goal and its entire subtree. Completed or merged work units are left untouched.
nms_v1_goal_pausePause a goal and all its active agents.
nms_v1_goal_resumeResume a paused goal. Optionally inject a steering message.

Clarifications

ToolPurpose
nms_v1_clarification_respondAnswer a pending agent clarification request.

Results

ToolPurpose
nms_v1_results_getList merge proposals for a goal with status, summary, confidence, and files touched.
nms_v1_results_applyApply an approved proposal (ReadyForReview or Approved).

Repository registration

ToolPurpose
nms_v1_repo_registerRegister a local git repository path. Returns a repositoryId. Idempotent.
nms_v1_repo_listList all registered repositories and their IDs.

Workspace / feedback

ToolPurpose
nms_v1_workspace_statusGoal counts by status, active agent count, pending clarification count.
nms_v1_feedback_recordRecord a human feedback note as a durable Constraint artifact.

Typical external-caller flow

1. nms_v1_repo_register        → repositoryId
2. nms_v1_goal_run             → goalId, sessionId
3. poll nms_v1_goal_status     → check status / pendingClarifications
4. nms_v1_clarification_respond (if needed)
5. nms_v1_results_get          → proposalId when status = ReadyForReview
6. nms_v1_results_apply        → done
REST equivalents exist for all these operations (/studio/goals, /studio/merges, /studio/repositories, /studio/clarifications), but the nms_v1_* MCP surface is the preferred path for MCP-native clients.

How the transports relate

VS Code Extension  ──HTTP──▶  REST endpoints  ──┐
                                                  ├──▶  Shared command services  ──▶  NodalMerge DAG
External MCP client ──MCP───▶  MCP tools  ───────┘
Orchestrator/Worker loops ──in-process call──▶  same MCP tool handlers
A capability that has both a REST endpoint and an MCP tool calls the same command service either way — they can’t drift in behavior. Agents never make HTTP calls to their own host’s REST API; they call the tool dispatcher in-process. A REST endpoint with no frontend caller can still be heavily used — just by agents, via the MCP tool it shares a command service with.

MCP tool catalog

✅ = dispatched in-process to orchestrator/worker agents · — = MCP-client, REST, or extension only.

Projection

ToolDispatchedPurpose
nm_v1_projection_getGet a projection by type and compression level
nm_v1_projection_listList available projection types and levels

Work unit

ToolDispatchedPurpose
nm_v1_workunit_createCreate a work unit (goal + branch, optional parent/scope/deps/reviewPolicy)
nm_v1_workunit_getGet a work unit by id
nm_v1_workunit_updateUpdate status or assigned agent
nm_v1_workunit_listList work units, optionally filtered by branch

Task

ToolDispatchedPurpose
nm_v1_task_createCreate a task (intent only) under a work unit
nm_v1_task_updateUpdate task title/description/status/priority
nm_v1_task_listList tasks, optionally by work unit
nm_v1_task_assignAssign a task to an agent

Branch

ToolDispatchedPurpose
nm_v1_branch_createCreate a branch
nm_v1_branch_checkoutCheck out a branch
nm_v1_branch_listList branches
nm_v1_branch_statusBranch status for agents

Merge

ToolDispatchedPurpose
nm_v1_merge_proposeSubmit a proposal — diff, lineage, execution event, status transition
nm_v1_merge_validateValidate a draft proposal, moves it to ReadyForReview
nm_v1_merge_reviewApprove/reject (supports automated=true for the reviewer-agent path)
nm_v1_merge_applyApply an approved proposal — runs review-policy/promotion-branch gate logic

Replay

ToolDispatchedPurpose
nm_v1_replay_rangeInspect a history range for a branch
nm_v1_replay_rollbackRoll back a branch to a known-good state
nm_v1_replay_inspectHuman-friendly replay summary

State / Known Good

ToolDispatchedPurpose
nm_v1_state_markKnownGoodMark current branch state as known-good
nm_v1_state_findKnownGoodFind known-good states for a branch
nm_v1_state_checkoutKnownGoodRestore a branch to a known-good state

Snapshot

ToolDispatchedPurpose
nm_v1_snapshot_getAgent execution snapshot (goal, task, failure count, next action)
nm_v1_snapshot_compareCompare two agents’ snapshots

Agent

ToolDispatchedPurpose
nm_v1_agent_spawnSpawn an agent for a work unit
nm_v1_agent_pausePause an agent
nm_v1_agent_resumeResume a paused agent
nm_v1_agent_statusGet agent status
nm_v1_agent_stopStop an agent
Agents cannot pause/resume themselves or each other — those are human/extension-only actions today.

Workspace — file I/O, execution, semantic navigation, and profile

ToolDispatchedPurpose
nm_v1_workspace_read / _write / _delete / _list / _diff / _exists✅ allBranch-scoped file operations (write/delete respect fileScope)
nm_v1_workspace_summaryControl-tower summary (active work units, agents, merges, failures)
nm_v1_workspace_symbol_definition / _symbol_references / _symbol_implementation✅ allCompiler-backed symbol navigation
nm_v1_workspace_build / _test / _exec / _run / _run_stop✅ allRun build / test / build+test+lint / app run / run-stop on a branch
nm_v1_workspace_exec_statusLatest persisted execution result for a branch
nm_v1_workspace_pathBranch working-directory filesystem path
nm_v1_workspace_profile_get / _profile_rescan✅ bothDetected project roots/stacks and resolved build/test/run command profile
Routing rule: when semantic tools are allowed in a profile, they are the authoritative path for symbol definition/reference/implementation questions. Use nm_v1_workspace_search for text/content questions, not symbol relationship resolution.

Scheduler

ToolDispatchedPurpose
nm_v1_scheduler_enqueueQueue a work unit for a profile (parallel execution, used by Experiments)
nm_v1_scheduler_pendingList pending scheduler queue items
nm_v1_clarification_requestRequest human clarification and optionally pause execution

Intent

ToolDispatchedPurpose
nm_v1_intent_recordRecord a change intent for conflict detection

Artifact

ToolDispatchedPurpose
nm_v1_artifact_recordRecord a knowledge note (Research/Decision/Constraint)
nm_v1_artifact_querySearch artifacts by type/keyword across a work unit’s ancestry
nm_v1_artifact_listFull artifact chain for a work unit, ancestors included by default

Goal, Decision, Evidence, Trajectory, Hypothesis (Phase 6.7+)

NamespaceToolsPurpose
nm_v1_goal_*create, listDecision-centric goal nodes
nm_v1_decision_*record, listRecord Accepted/Rejected/Deferred/Superseded against a proposal
nm_v1_evidence_*attach, listAttach/list build/test evidence for a work unit
nm_v1_trajectory_*create, replayRecord lifecycle phases; replay in Linear / BranchExplorer / Counterfactual mode
nm_v1_hypothesis_*fork, listFork a work unit/proposal with a typed fork (Code/Reasoning/Model/Research/Architecture/Library/Product)
None of these are dispatched to autonomous agents yet. Phase 7 capabilities (Experiments, Steering, Counterfactuals, Review Policy, Promotion Branches) are REST-only — see Concepts → Trust & autonomy.