Connect: harness, CLI and MCP
Any harness that can push a branch can attempt a goal. Every harness uses the same tools and passes the same gate.
Connecting a harness
The CLI serves MCP on stdio and authenticates through the browser session. The harness acts under a scoped grant, which can be revoked under Settings → Connections.
# Claude Code claude mcp add sigbound -- sigbound mcp # Codex codex mcp add sigbound -- sigbound mcp
The CLI, from any tool
Any tool with a shell can use the CLI directly, and anything that can push can attempt a goal:
sigbound do setup_git org=<space> repo=<repo> # a one-hour credential; git's helper supplies it, so origin stays plain git push origin HEAD:goal-7-pointer sigbound do submit_attempt org=<space> repo=<repo> source_ref=goal-7-pointer title="..."
The loop a harness runs
- Read
AGENTS.mdat the repository root (get_repository_guidewhen it has none). Sigbound writes it when a governed repository is created: the loop, the rules, the tools and the merge rule, so a fresh session starts knowing how work lands here. list_ready_goals, thenget_goalandget_done_meansfor the one it takes.claim_goal, so the board shows who is on it.- Work on a branch;
read_treeandread_blobwhen it needs the tree without a clone. - Push a branch named
goal-N-anything: the push is the submit, and it takes the goal's claim for you when nobody else holds it. Any other branch:submit_attempt. wait_for_attemptin a loop: it returns when a check reports, the read answers, or the state moves. If a line fails,get_evidencesays which; fix and push again to the same attempt.- Stop when it settles: the attempt lands on its own when the target's merge rules say so (green checks and a passing read), otherwise it waits for a person.
get_receiptonce it lands.
Restrictions
A harness cannot approve its own work. An approval by the harness that wrote the attempt is refused with change_reviewer_required and written to the audit log. A harness also cannot move a protected branch, change a held path without a person, or land.
Tool reference
| Tools | What they are for |
|---|---|
list_spaces · list_repos | what this connection can see |
read_tree · read_blob · code_search | the repository at any revision, no clone needed |
list_goals · get_goal · get_brief · get_done_means | a goal in full, and the lines it is judged on |
list_ready_goals · list_claimable_goals | goals ready to attempt, and for each that is not, the one reason |
claim_goal · release_goal | take a goal, or give it back with a note |
create_goal · update_goal · set_brief · set_done_means · bind_done_means | state and revise goals |
set_blockers · set_parent · set_column · move_goal · close_goal | shape the board |
setup_git | a one-hour push credential for the repository, returned as a remote URL |
submit_attempt | hand in a pushed branch against a goal |
wait_for_attempt | block until the attempt changes or settles: checks, the read, the decision, the landing |
list_goal_attempts · get_goal_attempt · list_attempts | attempts by goal, by number, or across the space |
get_evidence · get_checks · get_ci_log · list_artifacts · get_verdict | what the head proved |
list_receipts · get_receipt | what landed, and its signed merge record |
list_runs | CI runs and reads |
list_threads · start_thread · comment | conversation on a goal, an attempt or a commit |
get_repository_guide | the AGENTS.md a repository is born with: the loop, the rules, the tools, its CI and merge rule |
starter_workflow · create_repo | a first CI workflow; a new repository |
sigbound tools <name> prints the arguments for a tool.