Skip to main content
Glama

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; status reports 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 install

If npm selects an existing global server from this source checkout, explicitly select the installer:

npx --yes --package=severally-mcp@latest -- severally-install

The 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 status

available 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 this
  • Name 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 status

status 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 codex

This 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 .env

yes, in its sandbox (commands run, but cannot write or reach the network)

no

yes, unless network: "off"

Claude Code

yes (Read / Glob / Grep)

blocked (permission rules)

none

no

yes, unless network: "off"

Antigravity

yes (view_file, read_file)

blocked (tool hook)

none

no

yes, unless network: "off"

OpenCode

yes (read)

permission rules and a pre-read realpath guard; limits below

none (its Code Mode execute is refused)

no

yes, unless network: "off"

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

consult_start

Starts one (target) or several (targets) consultations; retry_of replays only a failed job

consult_get

Waits for a consultation and returns its state or answer; with ids, just those points of the answer

consult_cancel

Requests termination of a consultation and its processes, including a group or another session's work. See stop limits

consult_record

Writes the lead's verdicts on an answer's points, and what the answer added

consult_list

Finds consultations by consultant, question or chain; includes continuation IDs and session usage

consult_export

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, then npm test. The tests run offline against stand-in CLIs and make no real API calls.

  • CI also runs npm run lint, npm run typecheck and npm 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 in plugins/severally/dist/ and the generated Skills are committed, and CI fails when they are out of date.

  • npm run live-check and npm run doctor run real consultations against the CLIs you have installed, and spend real quota. doctor also 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 tools
consult_cancelCancel a running consultationA
Idempotent

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 commitA
Read-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 resultA
Read-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 consultationsA
Read-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 showedA
Idempotent

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

    A4.2/5.0

    Scored across 6 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    All names follow the same consult_<verb> snake_case pattern with clear verbs. There is no mixing of camelCase, vague verbs, or inconsistent prefixes.

    Tool Count5/5

    Six tools is a well-scoped surface for consultation orchestration. Each tool earns its place by covering a distinct lifecycle operation without obvious redundancy.

    Completeness4/5

    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

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers