{"name":"io.github.antonbabenko/deliberation","slug":"antonbabenko-deliberation","title":null,"description":"Second opinions in Claude Code and any MCP host from GPT, Gemini, Grok, and 400+ OpenRouter models.","url":"https://mcp.market/server/antonbabenko-deliberation","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":51,"stars":158,"forks":10,"downloads_week":913,"last_push_at":"2026-09-20T09:26:18.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":null,"website":null,"version":"3.14.5","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@antonbabenko/deliberation-mcp","version":"3.14.5","transport":{"type":"stdio"}}],"tools":[{"name":"analyze","description":"Analyze recent runs from the opt-in debug log (latency/tokens/reasoning-effort per model) plus the session store (verdict agreement rate), and return advisory tuning suggestions (disable a slow/redundant model in ask-all, lower an OpenRouter model's reasoning, adjust maxFanout). Two lenses reported side by side - timing and agreement are NOT joined (no shared run id). Requires `debug.enabled` for ","write_action":false,"price_micros":0,"input_schema":null},{"name":"ask-all","description":"Fan out one question to GPT, Gemini, Grok, and any configured OpenRouter models in parallel for independent second opinions, then return all results (advisory, no cross-contamination). Pass `expert` to apply a persona to every delegate. Calls external LLM providers (each needs its key/CLI; provider rate limits apply); returns a text-wrapped JSON envelope { results[], omitted[] } and persists a ses","write_action":false,"price_micros":0,"input_schema":null},{"name":"ask-one","description":"Second opinion from ONE named provider in the active panel (e.g. `codex`, `gemini`, `grok`, `openrouter:<alias>` - get the names from `panel`). Issue N in parallel (one per panel name) so each renders independently as it lands. Calls one external LLM provider (needs its key/CLI; rate limits apply); returns a text-wrapped JSON envelope { result }, or { error, panel } when the name is not in the pan","write_action":false,"price_micros":0,"input_schema":null},{"name":"consensus","description":"Run the FULL multi-round consensus convergence loop server-side with a provider arbiter (blind pass + peer fan-out -> adjudicate -> revise) and return the converged verdict. Default depth is `consensus.maxRounds` (config, default 5); pass `maxRounds` to override. Pass `synthesizeAlways:true` for a SINGLE arbiter synthesis pass instead of the loop (best for open questions, not plan convergence): it","write_action":true,"price_micros":0,"input_schema":null},{"name":"consensus-step","description":"Client-driven consensus loop where YOU (the host model) are the arbiter, one action per call: init (returns sessionId + blind prompt) -> record_blind (your pre-commit verdict) -> dispatch_peers (server fans out to the providers) -> submit_adjudication (your verdict + per-issue accept/dismiss/defer) -> submit_revision (your revised plan), looping until converged or consensus.maxRounds rounds (defau","write_action":false,"price_micros":0,"input_schema":null},{"name":"gemini","description":"Start a new Gemini expert session","write_action":false,"price_micros":0,"input_schema":null},{"name":"gemini-reply","description":"Continue an existing Gemini session","write_action":false,"price_micros":0,"input_schema":null},{"name":"grok","description":"Start a new Grok (xAI) expert session. Advisory only (no filesystem editing). Supports attaching files.","write_action":false,"price_micros":0,"input_schema":null},{"name":"grok-reply","description":"Continue an existing Grok session (in-memory; lost if the MCP server restarts).","write_action":false,"price_micros":0,"input_schema":null},{"name":"openrouter","description":"Start an OpenRouter expert session (advisory only). Pick a configured `alias`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"openrouter-list","description":"List configured OpenRouter delegates and settings. Pass mode ('ask-all'|'consensus') + optional expert to also get the resolved `selected` delegate set (selection applied server-side from the live config).","write_action":false,"price_micros":0,"input_schema":null},{"name":"openrouter-reply","description":"Continue an OpenRouter session by threadId (in-memory; lost on restart).","write_action":false,"price_micros":0,"input_schema":null},{"name":"panel","description":"Return the names of the providers `ask-all` WOULD dispatch for the current config + expert (enabled built-ins + eligible OpenRouter aliases, fanout cap applied), WITHOUT calling them. Use this to discover the panel, then issue one `ask-one` call per provider in parallel for visible per-provider progress. Local and read-only (no provider calls); returns a text-wrapped JSON envelope { providers[], o","write_action":false,"price_micros":0,"input_schema":null},{"name":"session-annotate","description":"Append a freeform note to a persisted session's audit trail - an additive local write, no provider calls. Requires sessions.persist. Returns a text-wrapped JSON envelope { session } (the updated record), or { error } when persistence is off or the id is unknown.","write_action":false,"price_micros":0,"input_schema":null},{"name":"session-get","description":"Fetch a persisted consensus/ask-all session record by id (opinions, verdict, arbiter, annotations). Requires sessions.persist; local and read-only (no provider calls). Returns a text-wrapped JSON envelope { session }, or { error } when persistence is off or the id is unknown.","write_action":false,"price_micros":0,"input_schema":null},{"name":"session-revisit","description":"Re-run a persisted session's ORIGINAL question with the CURRENT providers/config, linking the new run to its source by parentId. Requires sessions.persist; re-runs through the original tool path (which dispatches external providers) and persists a linked child record on success. Returns a text-wrapped JSON envelope (the re-run payload + parentId), or { error } when persistence is off or the id is ","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-20T11:40:32.857Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T11:40:32.764Z","components":{"code":{"score":25,"max":25,"notes":["3 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@antonbabenko/deliberation-mcp","version":"3.14.5","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":0,"publishedAt":"2026-09-04T18:36:20.326Z","repositoryUrl":"git+https://github.com/antonbabenko/deliberation.git","weeklyDownloads":913}],"repo":{"found":true,"owner":"antonbabenko","repo":"deliberation","archived":false,"pushedAt":"2026-09-20T09:26:18Z","stars":158,"forks":10,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/393243?v=4","ownerCreatedAt":"2010-09-09T12:20:36Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/393243?v=4&s=128","source":"github"},"presence":{"stars":158,"forks":10,"downloadsWeek":913,"license":"MIT","lastPushAt":"2026-09-20T09:26:18.000Z","score":51}}}},"grade_history":[],"reviews":[]}