collapsed state and can be expanded into children on demand. You can assess the risk and effort of any node, update its status as you work through it, and kick off a Forge run to produce a pull request directly from the node’s spec.
Node shape
Every endpoint that returns node data uses this structure. Nestedchildren contain nodes of the same shape.
string
required
UUID of the node.
string
required
UUID of the containing build graph.
string | null
required
UUID of the parent node, or
null for root nodes.string
required
Dot-notation path describing the node’s position in the hierarchy, e.g.
"auth.oauth".number
required
Zero-indexed depth in the tree. Root nodes have
depth: 0.number
required
Relative order among siblings. Lower values appear first.
string
required
"green", "yellow", or "red" — AI-assessed implementation risk at creation time.string
required
Lifecycle state of the node:
"collapsed"— has not been expanded yet"expanding"— expansion is in progress"expanded"— children have been generated"leaf"— terminal node, cannot be expanded further"implementing"— a Forge run is in progress for this node
string
required
"pending", "in_progress", "done", or "skipped" — your manually tracked progress.string | null
AI-assessed confidence after a risk assessment:
"low", "medium", or "high". null until assessed.string | null
AI-assessed effort after a risk assessment:
"small", "medium", "large", or "very_large". null until assessed.string[] | null
Open questions or ambiguities the AI identified during risk assessment.
object | null
Detailed implementation spec, populated when the node is expanded.
POST /build-nodes//expand
Expand acollapsed node into children. The expansion runs as a background task — listen to GET /build-graphs/{graph_id}/events to receive expand_start and expand_done events.
200 response
Auto-suggested Forge cards on expand. When expansion completes, the server scans the new leaf children and posts a Subscribe on the
card.forge_ready event to the project’s most recent chat session for each child where risk is green or low, effort is small, and confidence ≥ 0.7. At most 3 cards are posted per expansion to bound fan-out. Each card carries the suggested repository, branch, and a 300-character preview of the node’s emitted_prompt, plus a Ship it action that pre-fills start_implementation with the node’s spec. Cards are skipped silently when there is no GitHub connection, no default repository, no chat session, or an existing Forge run already covers the node.Card payload shape:chat channel for the project’s active session to receive these cards. iOS clients must ignore unknown event types so older builds remain forward-compatible.POST /build-nodes//re-expand
Re-run expansion for a node that was previously expanded. The old children are archived and a new revision is generated. Use this when you want a fresh decomposition of a node after updating your idea or constraints.200 response
number
The new revision number. Starts at 2 for the first re-expansion.
number
How many children were archived from the previous revision. Use this to verify the diff via
GET /build-nodes/{node_id}/diff.POST /build-nodes//assess
Run a synchronous LLM risk assessment on a node. This populates theconfidence, effort, and unknowns fields on the node row and returns the results immediately.
200 response
string
"low", "medium", or "high" — how confident the AI is in its implementation estimate.string
"small", "medium", or "large" — AI-estimated implementation effort.string[]
Open questions and ambiguities that could affect the estimate.
PATCH /build-nodes/
Update a node’s tracking status, display order, name, or description. All fields are optional.string
Your tracking status for this node. One of
"pending", "in_progress", "done", or "skipped".number
Position among siblings. Lower values appear first.
string
Override the node name. Maximum 500 characters.
string
Override the node description. Maximum 5,000 characters.
GET /build-nodes//diff
Compare the current expansion revision to the previous one. Useful after a re-expand to see what changed.200 response (diff available)
200 response (no previous revision)
boolean
required
true when a previous revision exists to compare against.object[]
Nodes present in the current revision but not the previous one.
object[]
Nodes present in the previous revision but not the current one.
object[]
Nodes that exist in both revisions but have field-level differences.
number
Count of nodes identical across both revisions.
string
Human-readable diff summary.
POST /build-nodes/suggest-prerequisites
Given a node, ask the AI to suggest prerequisite work items that should be completed before tackling this node. Useful for identifying infrastructure, data model changes, or security work that gates the node.string
required
UUID of the node for which to generate prerequisite suggestions.
200 response
object[]
POST /build-nodes//implement
Kick off a Forge run that produces a pull request from this node’semitted_prompt. The node transitions to implementing status immediately. If you supply notes, ManticScore first refines the prompt using your guidance before handing off to Forge.
string
required
Target GitHub repository in
owner/name format. You must have push access to this repository.string | null
Branch to base the implementation on. Defaults to the repository’s default branch when
null.string | null
Optional guidance that Forge uses to refine the node’s emitted prompt before coding begins. Use this to steer the implementation without editing the node spec directly.
string
default:"create_pr"
How Forge should handle the task:
"create_pr"— generate code and open a PR automatically"autonomous"— generate code and pause for your approval before creating the PR"generate_patch"— produce code edits without creating a PR"analyze_only"— produce a plan without writing any code
200 response
POST /build-nodes//ticket
Create a tracked issue in Linear or Jira from this node. ManticScore automatically maps the node’s effort assessment to a priority and uses your saved integration defaults for team, project, and assignee.string
required
Issue tracker to create the ticket in. Either
"linear" or "jira".string | null
Linear team ID. Falls back to your saved Linear default when omitted.
string | null
Jira project key. Falls back to your saved Jira default when omitted.
number | null
Explicit numeric priority override. When
null, ManticScore maps the node’s effort assessment to an appropriate priority automatically.200 response
POST /build-nodes//doc
Export this node to Notion as a structured page containing the objective, acceptance criteria, test checklist, and implementation prompt.string
default:"notion"
Export destination. Currently only
"notion" is supported.string | null
Notion page or database ID to create the new page under. Uses your saved Notion default when
null.200 response