consensus_vote
Auto-generated from the registered MCP tool descriptions and input schemas. Do not edit by hand — run
pnpm docs:toolsto regenerate.
Execute multi-model consensus voting on a proposal. Uses 7 roles by default (or 3 with quickMode), voting with configurable strategies. Supports async dispatch (dispatch: ‘async’ returns a jobId to poll via get_job_result).
Parameters
| Parameter | Type | Required | Constraints | Description |
|---|---|---|---|---|
proposal |
string | yes | minLength 1; maxLength 4000 | Proposal text to vote on. If the proposal asks voters to choose among named alternatives, declare them in options (#4472) — otherwise the tally records approve/reject/abstain only, so every voter who engages returns approve and a 6-1 split on WHICH option persists as 7-0, 100% (#4452). This is ENFORCED AS A WARNING, not a refusal: a heuristic over the proposal text flags an apparent multi-option proposal with no options and says so on panelWarning (#5360). The wording says “declare”, not “MUST”, because the warning is what the code actually holds — it is tightened back only in the same change that promotes the warning to a refusal. |
options |
array of string | no | — | Named alternatives for a multi-option proposal (#4472). When present, the threshold must ALSO be cleared by the leading option, in addition to the ordinary approve/reject bar: unanimous requires every approver to have chosen the SAME option, and supermajority/majority measure the leading option’s share of approvers. An approving voter whose selection is absent or matches no declared option stays in the denominator and credits no option, so a degraded response can only lower the leading share, never raise it. Omit for an ordinary yes/no vote — behaviour is then unchanged. |
project |
string | no | pattern ^[A-Za-z0-9._/@-]{1,200}$ |
The project the panel is judging (#6110), e.g. acme/widgets — it replaces nexus-agents in every voter’s system prompt, so a consuming repository is not judged against this one’s mission and governance files. When omitted the name is DERIVED from the server’s working directory (the origin remote as owner/repo, else the nearest package.json name) and falls back to nexus-agents; the response discloses which on project.source. Letters, digits and ._/@- only, at most 200 characters. |
threshold |
enum | no | one of: majority | supermajority | unanimous | Voting threshold (legacy): majority, supermajority, unanimous. Use strategy instead. |
strategy |
enum | no | one of: simple_majority | supermajority | unanimous | proof_of_learning | higher_order | opinion_wise | Voting strategy: simple_majority (default), supermajority, unanimous, proof_of_learning, or higher_order (Bayesian-optimal). NOTE (#4452): thresholds are evaluated over approve/reject/abstain, not over which option a voter chose. On a multi-option proposal even unanimous clears trivially — see the proposal field description. |
errorPolicy |
enum | no | one of: reduce_denominator | count_as_abstain | fail_closed | absolute_quorum | How to treat voters that errored or timed out (#2630). Default: fail_closed for unanimous only; reduce_denominator for all other strategies incl. higher_order/opinion_wise (#3138 — a single infra timeout should not void an otherwise-unanimous vote). Opt-in absolute_quorum (#4132): an errored voter — especially the contrarian (catfish) — degrades the verdict to no_quorum (recoverable re-run) instead of being dropped from the denominator; never manufactures approved/rejected from an induced error. Regardless of policy, errors > 50% always fails. |
quickMode |
boolean | no | default false | Use 3 agents instead of the full 7-role panel for faster execution |
simulateVotes |
boolean | no | default false | TESTS ONLY — when true, voters return random decisions. Output must not be used for real decisions. (#2319) |
dispatch |
enum | no | one of: sync | async | Async dispatch (#4968). ‘sync’ (default): run inline and return the result. ‘async’: return { status: ‘pending’, jobId } immediately and run in the background; poll get_job_result({ jobId }). |
mode |
enum | no | one of: sync | async | DEPRECATED alias of dispatch (removed in the next major, #6225). Send dispatch instead; a call that sends only mode still works and returns a deprecation warning. |
idempotencyKey |
string | no | minLength 1; maxLength 256 | Replay-safe key for async-mode dispatch (#3042 Stage 1c). Same (key, inputs) returns existing jobId. |
ratifies |
string | no | minLength 1; maxLength 256 | Authority-tier ratification subject (#4004) — the loop/strategy id this vote ratifies for an authority-ladder promotion. Bound into the authentic vote record so the promotion gate can verify it. Omit for ordinary votes. |
ratifiesPr |
object | no | — | Governor-path PR ratification binding (#5130): pr is the PR number and headSha the full 40-hex head sha the panel reviewed. Bound into the authentic vote record so the committed ledger and the governor gate can verify which PR, at which head, this panel ratified. Omit for ordinary votes. |