severally
You can orchestrate separate peer consultations with installed coding-agent CLIs and keep their answers, checks, and history as local records.
Start a consultation with a named consultant, several targets, or
allavailable consultants, with optional modes (explore,review,debate), context, constraints, success criteria, and local prediction.Retry failed jobs and continue completed consultations with follow-ups, re-exposing current files as needed.
Expose code changes, paths, artifacts, and other context; files are copied read-only, secrets masked, and web access can be turned off.
Wait for, poll, and retrieve consultation status or answers, including individual points such as findings, unknowns, and proposed checks.
Cancel running consultations or fan-outs, including other severally servers where supported.
Record verdicts, evidence, decision effects, and reflections against answer point IDs; confirmed does not mean adopted.
List recent consultations across sessions and export a consultation with answers and verdicts as Markdown.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@severally Ask Codex, Claude, and Antigravity for independent opinions on this refactoring plan."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
A plugin that lets your AI agent ask other coding agents for independent opinions, returned separately.
The consultants are Codex, Claude Code, Antigravity and OpenCode. Your agent (the lead) consults when an investigation stalls or two options look equally good. You can also ask for a consultation yourself: "ask Codex".
Each consultant's answer stays separate. The lead checks the findings and the reasons behind disagreements itself, then carries on from what it found. For an important decision, such as a change that is hard to reverse, it consults before asking you to approve it, and asks you only about what is yours to decide.
For example, a cache review can reveal that member-specific prices would leak to other users. The lead checks the pricing assumptions, chooses what can be cached, and records what remains unverified. When the code changes, it sends those checks and the current files to the same consultant. The worked example follows the separate recommendations through that decision.
Consultations send the brief, exposed files and anything the consultant reads to that CLI's model. Asking everyone spends quota per consultant. Read restrictions have CLI-specific gaps and untested environments; turning off the web still sends material to the model. See what is sent and the protection limits.
Contents
Related MCP server: Senior Consult MCP
Install
Requirements
Node.js 22 or newer. Some OpenCode 2.x authentication recovery needs
node:sqlite;statusreports whether it is available. Normal login can still work without it. See recovery requirements.At least one of the four CLIs, installed and logged in. One is enough: with only Claude Code, you can still ask a fresh Claude Code session.
Windows 10+ with built-in PowerShell 5.1 and permission to use .NET
Add-Type; see platform requirements.
Prepare the CLI you want to consult using the installation and login links.
Installing
The command below installs severally and registers it with existing CLIs; it does not install or log in to those CLIs. One line, on macOS, Linux and Windows (PowerShell or Command Prompt):
npx -y severally-mcp@latest installIf npm selects an existing global server from this source checkout, explicitly select the installer:
npx --yes --package=severally-mcp@latest -- severally-installThe installer registers severally with each CLI it finds on PATH. Add --dry-run at the end to print what it
would change without changing anything.
Then restart the clients: a running session does not reload the new registration. No configuration is normally needed. Continue with the first question.
To check the registration, see CLI. Other install routes and platform-specific notes are in the installation details.
Usage
Asking
First check which consultant CLIs are detected, without starting a consultation or spending quota:
npx -y severally-mcp@latest statusavailable means the CLI was found, not that login or a live consultation has been verified.
If Codex is detected, ask in your restarted agent's chat. If only another CLI is installed, substitute its name:
Ask Codex: Our public API must return data no more than 60 seconds old.
The upstream data may already be 40 seconds old when fetched; assume zero fetch time.
Is a fixed 30-second TTL reasonable? State the conditions and the smallest useful check.An illustrative report follows. Actual answering models, point IDs and check results depend on the consultation:
Recommendation: revise the 30-second proposal; under these assumptions, use TTL <= 20 seconds.
Codex (gpt-6.1-sol, f1) said upstream age and cache residence must be added.
The lead checked the counterexample 40 + 29 = 69 seconds and rejected the 30-second proposal.
Refreshing at the expiry boundary (elapsed >= 20 seconds) has not yet been tested.Then ask: "Ask the same consultant what changes if updates must appear within five seconds."
Ask in your own words, and include the premises in your question. For code questions, name the files or the change:
> ask Codex whether this migration plan is safe
> get a second opinion on this cache design
> ask everyone before we merge thisName a consultant ("ask Codex", "ask Claude Opus") and only that one is asked. A CLI's name works, and so does a model's.
Ask for a second opinion without naming anyone, or ask everyone, and the same brief goes to every consultant, a fresh session of your own CLI included. That is one consultation's quota per consultant.
The agent also consults without being asked: when an investigation stalls, when two options look equally good, and before asking you to approve a hard-to-reverse change.
What comes back to you is the lead's report, not the consultants' answers as they arrived: what it checked and what that showed, what it recommends, and what is still unverified. The example shows one.
It is worth it for important design decisions, hard-to-reverse choices, and two or more failed attempts at the same bug. A consultation takes time and real quota, so it is not for small fixes.
CLI
Use the terminal to install or check the registration:
npx -y severally-mcp@latest install
npx -y severally-mcp@latest statusstatus shows configuration, available consultants, registrations and login without starting a consultation
or sending a prompt. It does not check remaining quota. See the output and checks,
installer options, updating and
uninstalling. Restart the clients after updating.
From a source checkout, diagnose an authenticated CLI with:
node scripts/doctor.mjs --target codexThis starts real consultations and spends quota. See what it checks and its limits. Ask for consultations, follow-ups and Markdown exports in your agent's chat.
Answers, checks and failures
The agent can work on independent tasks while it waits. Time varies with the CLI, model and load. The default
budget for the whole consultation is 30 minutes, separate from one consult_get wait; it can be configured.
When asking several consultants, the lead can check the first answers while the others continue.
Each answer includes a stance, a separate concrete recommendation, findings with grounds, unknowns and proposed checks.
Matching stances can recommend different options; older answers without a recommendation remain not declared.
A failure (usage_limit, timeout and so on) means no advice was obtained.
The lead checks the claims that could change the decision and records evidence separately from adoption. It reports each consultant's actual model, the deciding point and its ID, what the check showed, its recommendation and what remains unverified. Different conclusions stay separate. If one consultant fails, the successful answers remain usable; the agent can retry just the failed consultation when needed.
Ask "Stop the current consultation" to cancel, or "Check the answers that have arrived first" to use partial
success. A timeout can mean the brief needs narrowing or the budget needs increasing; an authentication
failure needs a login check with status before retrying. Cancellation requests process termination.
Windows uses a launch Job to stop ordinary descendants even after the CLI exits; see the
requirements and stop limits.
Follow-ups and history
Ask “Continue yesterday's cache consultation” or “Recheck that finding against the updated code.” The agent can find the saved consultation and continue with the same consultant; you do not need to copy IDs. When several candidates fit, it checks which one you mean. By default a chain permits five rounds in total. Each follow-up starts a fresh CLI session with the saved question, answer and checks; it does not resume the CLI's native session. Files are sent again in their current state, with changes and deletions noted.
Consultations and verification records stay in ~/.severally/history/. They can be updated from a later
session or exported as Markdown with verified points, decision effects and unchecked counts before the full
answers. A confirmed point means the check supported it within the recorded scope; it does not mean the lead adopted
the advice. refuted means it did not hold in that check. Partial checks stay unverified with their limits recorded.
See modes and follow-up details and
records.
Configuration
No configuration needed by default. At startup the server looks for the CLIs on PATH, and each one it finds
becomes a consultant on its default model. To turn a CLI off or add consultants on other models, put a
~/.severally/config.jsonc or config.json in place (config.jsonc takes precedence). From a clone, npm run init-config writes a template. Every key is in
CONFIG.md, and config.example.json is an example to adapt: its paths, models
and notes are made up. For separate models for everyday work and consultations, see the optional
multi-model example. Restart the client after changing the config.
To consult a model you reach with an API key (OpenRouter, or another OpenAI-compatible API) or a local model, install OpenCode and add the model as a consultant: see the four-step OpenCode setup.
What a consultant can see and do
A consultation sends the brief to that CLI's model, the same way using the CLI yourself does. It does not automatically inherit your parent session's history: anything the lead includes in the brief is sent, and files the consultant is allowed to read also go to its model. The read-only setting does not isolate what it can read. The server configures each consultant to prohibit:
writing files
using MCP
starting other agents or consulting anyone else
using the network, except for web search and browsing
Consultant | Reads files | Credential paths | Shell | Writes | Web search / browsing |
Codex | yes | blocked by path (permission profile), not by file name such as | yes, in its sandbox (commands run, but cannot write or reach the network) | no | yes, unless |
Claude Code | yes ( | blocked (permission rules) | none | no | yes, unless |
Antigravity | yes ( | blocked (tool hook) | none | no | yes, unless |
OpenCode | yes ( | permission rules and a pre-read realpath guard; limits below | none (its Code Mode | no | yes, unless |
Every consultant starts in a working directory of its own that holds only copies of the files you handed it, and
the server does not tell it where your repository is. It can still read any file your user account can read, except
the credential paths the table marks blocked. The one exception is Claude Code in a consultation that exposes files:
it can then read only those copies.
Codex cannot deny by name, so a repository's .env is readable. When the Codex executable is inside a credential
root, as the standalone install under ~/.codex/packages is, the entries already in that root are denied one by
one, and a file created there during a consultation is readable; status notes this placement.
Individually denied files replaced by rename and legacy job homes created after launch remain limitations.
Do not run pre-1.7 severally alongside current consultations. OpenCode cannot guarantee reads against a path
replacement between its guard and the read. The mechanisms, tested conditions and limits
state the CLI, OS and version scope. Arbitrary credential locations are not automatically found.
On Windows, Codex runs in its MXC sandbox; where MXC is unavailable, it falls back to the elevated sandbox, which may
need initial administrator approval.
A consultant that can both read your disk and browse could carry what it read out in a URL, for example if a
page it opens tells it to. To prevent that, the agent passes network: "off": every consultant in that round then
has no web search or browsing. To make that the rule for every consultation, set "server": { "network": "off" }
in the config file; a request cannot turn it back on. The brief, and whatever a
consultant reads, still goes to that CLI's model.
How each CLI is held to this is in docs/how-it-works.md.
API
The server has six MCP tools. Of these, only consult_start starts an external consultation, sending the brief
and exposed files to each consultant's model. Once started, a consultant can read files or browse within its
permissions; those contents can also leave the machine. The other five tools operate on local consultation
state and records. Every argument is described in the tool descriptions the agent reads.
Tool | What it does |
| Starts one ( |
| Waits for a consultation and returns its state or answer; with |
| Requests termination of a consultation and its processes, including a group or another session's work. See stop limits |
| Writes the lead's verdicts on an answer's points, and what the answer added |
| Finds consultations by consultant, question or chain; includes continuation IDs and session usage |
| Returns a consultation, follow-ups and verdicts included, as Markdown |
Arguments and file exposure are described in How it works.
Contributing
Questions and bug reports go to Issues. Pull requests are welcome; for a large change, open an issue first so we can talk it over. Everyone taking part is expected to follow the Code of Conduct.
npm install, thennpm test. The tests run offline against stand-in CLIs and make no real API calls.CI also runs
npm run lint,npm run typecheckandnpm run format:check. Run them before you open a pull request.After changing the source or the Skill template, run
npm run build. The built server inplugins/severally/dist/and the generated Skills are committed, and CI fails when they are out of date.npm run live-checkandnpm run doctorrun real consultations against the CLIs you have installed, and spend real quota.doctoralso prints each CLI's version. Before a release, run both against the CLIs on hand and put the versions, the date and the OS in the release notes.
License
Apache-2.0 © 2026 coz.a
Available Tools
6 toolsconsult_cancelCancel a running consultationAIdempotent
Stop a running consultation (job_id) or fan-out (group_id). Other severally servers receive a stop request. The process tree is signalled where the platform permits; on Windows descendants may survive if the CLI already exited.
Inputs: job_id, group_id.
consult_exportExport a consultation as a record to commitARead-only
Render one consultation (chain_id) or fan-out (group_id) as Markdown: the brief as sent, each answer as it came back, and verdicts on each point. Starts with verified points/effects/evidence and unverified count; no inferred adoption or scoring. The text is returned, not written: put it beside the code the decision is about. Reads the history, so an earlier session's consultation can be exported.
Inputs: chain_id, group_id.
consult_getGet consultation status or resultARead-only
Wait for job_id or group_id (default 45000 ms; wait_ms: 0 polls). Repeat while running; A group wait returns when another member finishes; check available advice while others run, then wait again for new completions. progress is sent every 15 s. completed has advice; failed has failure.kind and no advice. A group includes statuses and comparison.by_target: actual model, stance, concrete recommendation, conditions, points/grounds, redaction observations and truncation markers. Null observations are unknown; matching stances need not recommend the same action. network is this round's web policy; limits.network is the server default. Read grounds already present. For missing/shortened deciding points use job_id + ids: ["f2", "u1"]; job_id alone gets one whole answer. detail: full adds the brief/question. Check deciding claims, batch checked entries in consult_record, then report; unchecked points stay unverified.
Inputs: ids, detail, job_id, wait_ms, +1 more.
consult_listList recent consultationsARead-only
Recent consultations, earlier sessions' too (this_session is false), newest first, with their ids, status, summary, verdicts, latest_completed_job_id and rounds_remaining. Optional target, question (case-insensitive substring), chain_id filters apply before limit. Pass filters at the top level, not in request. usage_totals is the tokens/cost reported this session, retries included. A figure a CLI does not report is named under not_reported, not counted as zero.
Inputs: limit, target, chain_id, question.
consult_recordRecord what checking a point showedAIdempotent
Save checks against point IDs from consult_get: f1 (finding), u1 (unknown), c1 (next check). verdict = confirmed/refuted/not_applicable/unverifiable/unverified; effect = decision impact; note = checked inputs, environment, evidence and limits. Confirmed is not adoption; refuted means the claim did not hold in the recorded check. Partial checks stay unverified with their scope in note. Record only checked points; same ID replaces its entry. Use records: [{ job_id, entries, reflection? }, ...] for one fan-out batch. Invalid jobs/IDs prevent every write; write failures appear per job in results. Saved history survives restart; verdict/effect and bounded new evidence notes go to follow-ups. Legacy notes remain local until recorded again. Optional reflection describes what the answer added over your prediction.
Inputs: job_id, entries, records, reflection.
consult_startStart a peer consultationA
Start one consultant (target) or several (targets); returns job_id or group_id immediately. Available (name: CLI, model): (none -- no consultant CLI is installed) Pass the user's name/CLI/vendor/model wording; target_ambiguous lists candidates, target_unavailable lists available ones. For a user's second-opinion request without a named consultant, use targets: ["all"]; for a named consultant, use target. targets: ["all"] asks every available consultant, including your CLI (marked same lineage). Each gets an identical brief; one concurrency seat each. Model and limits are operator-owned. concurrency_limit starts nothing. Follow details: wait on already-known holders or retry_after_ms; at most two retries within 60 seconds, only if retryable. Never inspect/cancel unrelated work or replay a start receipt. followup_to: completed job_id or group_id; only question is also needed. Inherits the prior inputs; explicit fields, even empty, replace them. Files are recopied in their current state; add expose_paths or set expose_from_parent: false. retry_of: failed job_id alone replays saved inputs in a new chain, with current files and a link to the failure. Use successful group answers first; retry only failed members after fixing auth/quota causes. No other request fields. mode defaults from context: facts = explore, proposal = review, proposal + counterpoints = debate. For code: expose_diff: { repo, base? } for changes, expose_paths: [absolute paths] for relevant callers, tests and config. Files are copied read-only, secrets masked; symlinks/protected paths skipped. Caps: 20 entries, 500 files, 5 MB. Inspect files_exposed and the manifest; missing premises stay unknown. Other context: facts, artifacts (logs/test output). network: on/off controls web access, not model submission or local reads; boundary states CLI-specific enforcement. caller/caller_model identify you; initiator: user only when asked. Optional prediction: { expected, worry } stays local.
Inputs: request (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool maps to a distinct action in the consultation lifecycle: start, cancel, wait/get, list, export, and record checks. The read-oriented tools are separable by scope: consult_get waits for live results, consult_list summarizes recent runs, and consult_export renders a full Markdown artifact.
All names follow the same consult_<verb> snake_case pattern with clear verbs. There is no mixing of camelCase, vague verbs, or inconsistent prefixes.
Six tools is a well-scoped surface for consultation orchestration. Each tool earns its place by covering a distinct lifecycle operation without obvious redundancy.
The set covers starting, cancelling, waiting on, listing, exporting, and recording checks for consultations. Minor gaps remain around explicit consultant/target discovery and history cleanup or deletion, but these are mostly workable through consult_start and existing filters.
Maintenance
Related MCP Connectors
Second opinion before an irreversible agent action; signed proofs, free verify, public ledger.
A second opinion for AI agents: one prompt across several live Gonka models + roles, one call.
Coordination hub for AI coding agents: message teammates, ask humans, audit every event.
Agents message each other and partners' agents. Claude Code, Codex (beta): memory, board, key vault.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables multiple AI agents to share and read each other's responses to the same prompt, allowing them to reflect on what other LLMs said to the same question.2MIT
- AlicenseBqualityDmaintenanceEnables AI agents to consult expert models (Claude, GPT, Gemini, DeepSeek, Z.ai) for technical guidance, code reviews, and architectural advice without switching context.435 npm4MIT
- AlicenseAqualityBmaintenanceEnables one AI coding agent to delegate tasks to, and build consensus across, multiple other coding CLIs (Claude Code, Codex, etc.) by orchestrating them as headless subprocesses.1937 PyPI7MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI coding agents to consult a multi-model deliberation council before irreversible, high-stakes decisions, returning structured architectural decision records with consensus and dissenting risks.1-