{
  "markdown": "# Wisepanel MCP Server\n\n**The decision-intelligence layer between frontier models and high-consequence decisions.**\n\n[Wisepanel](https://wisepanel.ai) takes a question, builds a panel of AI agents around it, and\nhas them argue it out. You get back the positions that survived the argument, the reasoning\nbehind each one, and the disagreements that never resolved.\n\nThis MCP server exposes that to [Claude Code](https://docs.anthropic.com/en/docs/claude-code)\nand any MCP-compatible client.\n\n## Why\n\nA single model gives you one answer, fluently, whether or not it is right. That is fine for\nmost questions. It is a bad property for the ones where being wrong is expensive.\n\nThe failure usually isn't ignorance. A model commits to a framing early and then argues for\nit, so you never see the objection, the alternative, or the assumption doing the work. Ask\nagain and you get the same framing in different words. Ask three models separately and you get\nthree confident answers with no way to choose between them.\n\n## How it works\n\nWisepanel builds disagreement in deliberately, at three levels.\n\n**One — each agent is handed a conflict to resolve.** Roles are derived from your question, and\neach is defined by two forces that genuinely oppose each other: cost against access, speed\nagainst safety, proven against new. The agent can't champion one side. It has to reach a\nposition that answers both, so it arrives with something worked through rather than a talking\npoint.\n\n**Two — every agent resolved a different conflict, so their positions don't match.** The agent\nholding cost against access lands somewhere the one holding speed against safety does not.\nThese aren't two sides of an argument. They are several honest resolutions of the same\nquestion that disagree about what mattered most, and between them they cover the ground the\nquestion actually occupies.\n\n**Three — the structure makes them contend.** Agents are placed on the *edges* of a\npolyhedron, so each one works at two vertices — two separate conversations. At its second\nvertex an agent is not merely a participant but a delegate from the first, instructed to\nrepresent what its co-participants concluded there alongside its own position. Every vertex\ntherefore hears whole conversations it was not part of, argued by someone who was.\n\nThat last part is what makes a small panel go further than its headcount. Six agents means\ntwelve seats, and each seat imports another discussion — so a point raised anywhere reaches\nthe entire panel within a few hops, with no aggregator, no summarizer and no bottleneck.\nSpeaking order is balanced, so no agent frames the discussion first or takes the last word.\n[Details](#topology).\n\n## Isn't this just asking three models?\n\nPasting the same question into Claude, GPT and Gemini is a real technique, and it works for a\nreal reason: different labs train on different data with different methods, so their priors\ngenuinely differ. Wisepanel does the same thing — roles are spread across Anthropic, OpenAI,\nGoogle and Perplexity by default, so no single lab's blind spots go unchallenged.\n\nBut the model is only one of the places bias enters. There are four, and doing it by hand\nreaches one.\n\n**Your framing goes to everyone unchanged.** You paste the same words three times, so you\nsample three training substrates against a single reading of the question. When the question\ncarries an assumption — and questions about decisions usually do — you get three confident\nanswers to the wrong question.\n[`wisepanel_magic_prompt`](#wisepanel_magic_prompt) rewrites the framing before the panel sees\nit.\n\n**Each model answers as itself.** You get Claude's median take, GPT's median take, Gemini's\nmedian take, and medians cluster. A model asked a neutral question gives a balanced answer;\nit will not volunteer the strongest case against your plan, because that isn't what it was\nasked for. Assigning a role changes what the model is optimising for, which produces arguments\nnone of them offer unprompted.\n\n**Bouncing answers between models makes anchoring worse, not better.** Feed A's response to B\nand B now reasons inside A's framing — models tend to accept a stated position and refine it\nrather than discard it and start over. So the sequential version is more biased than three\nindependent queries, and whichever model you happened to open first sets the terms. Wisepanel\nbalances speaking order and spreads the conversation across vertices precisely so no single\nposition gets to be the one everyone reacts to.\n\n**The reconciliation lands on you.** Three answers arrive; nothing has compared them. You do\nthat work yourself, with your own priors, usually at the end of a long day on a decision you\nalready lean one way about. A panel does the contending first and hands you what survived it.\n\nThen there is the part that doesn't scale by hand. Three models is three samples. A panel is\n6 to 30 roles chosen to span the question, each holding an opposition, each carrying a second\nconversation to its other vertex — twelve seats at the smallest size. You are not going to\nhand-run that, and you are certainly not going to do it consistently on every decision that\ndeserves it.\n\n**Where doing it by hand wins:** it's free, it's immediate, and you keep complete control of\nthe wording. For most questions that is the right trade. This is for the ones where it isn't.\n\n## Checks around the argument\n\n- **The question is checked for bias first.**\n  [`wisepanel_magic_prompt`](#wisepanel_magic_prompt) rewrites loaded framing, embedded\n  assumptions and false binaries before the panel sees them. A biased question produces a\n  confident answer to the wrong thing.\n- **Reasoning is auditable.** Agents attribute claims, surface assumptions and flag each\n  other's gaps — on by default. See [`show_and_audit_reasoning`](#wisepanel_start).\n- **Claims can be checked against sources.** Optional native web search verifies dates,\n  citations, figures and rules instead of trusting recall. See\n  [`web_search_enabled`](#wisepanel_start).\n\n## When to use it\n\n**When being wrong is expensive** — architecture calls you'll live with for years, migrations,\nsecurity and privacy trade-offs, vendor selection, anything where you want the strongest case\nagainst your instinct before you commit. It is slower and costs more than a single query. That\nis the trade you are making.\n\n**Don't use it** for questions with a known answer, or where you would not act differently\ngiven a dissenting view.\n\nRuns stream live, so you watch the argument develop rather than waiting for a verdict.\nCompleted deliberations can also be published to the\n[Wisepanel Commons](https://wisepanel.ai/commons).\n\n## Quick Start\n\nGet your API key at [wisepanel.ai/settings](https://wisepanel.ai/settings), then:\n\n```bash\nclaude mcp add wisepanel --scope user \\\n  --env WISEPANEL_API_KEY=wp_sk_ExampleOnly0000-replace-with-your-own-key \\\n  -- npx -y wisepanel-mcp\n```\n\nPaste the key **exactly as shown on the settings page** — the whole `wp_sk_…` string and\nnothing else. Quotes around it are optional and harmless. Do **not** add a `Bearer` prefix:\nthe server sends `Authorization: Bearer <your-key>` itself, so including it yields\n`Bearer Bearer wp_sk_…` and auth fails.\n\nRestart Claude Code and run `/mcp` — `wisepanel` should show as connected.\n\n`✔ Connected` only means the server process launched. Your API key isn't checked\nuntil the first call, so a bad key still shows as connected. To confirm auth\nactually works, run a deliberation and check that it returns a `run_id`.\n\n> **This is a stdio server, not a remote one.** There is no HTTP endpoint —\n> `claude mcp add --transport http` will not work no matter what URL you give it.\n> Everything after the `--` is the command that launches the server locally.\n\n<details>\n<summary>Other MCP clients (manual config)</summary>\n\nAdd to your client's config file — `~/.claude.json` for Claude Code, or the\nequivalent for Cursor, Windsurf, Claude Desktop, etc.:\n\n```json\n{\n  \"mcpServers\": {\n    \"Wisepanel\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"wisepanel-mcp\"],\n      \"env\": {\n        \"WISEPANEL_API_KEY\": \"your-api-key\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n### Configuration\n\n| Variable | Required | Default |\n|---|---|---|\n| `WISEPANEL_API_KEY` | yes | — |\n| `WISEPANEL_API_URL` | no | `https://api.wisepanel.ai` |\n\n### Troubleshooting\n\n**`'url' is not a valid URL`** — the server was added with `--transport http`.\nRemove it and re-add using the stdio command above:\n\n```bash\nclaude mcp remove wisepanel --scope user\n```\n\n**`WISEPANEL_API_KEY environment variable is required`** — the key didn't reach\nthe server process. Pass it with `--env` as shown, not as an `Authorization`\nheader; headers apply to remote servers only.\n\n**`API 401` / not authenticated despite a valid key** — check the stored value with\n`claude mcp get wisepanel`. It must be the bare `wp_sk_…` string. A `Bearer ` prefix, a\ntrailing space, or a partial paste are the usual causes.\n\n**Not authenticated** — verify the key is active at\n[wisepanel.ai/settings](https://wisepanel.ai/settings). Keys are secrets: never\npaste them into chat, issues, or screenshots. If one leaks, revoke and reissue it.\n\n## Tools\n\n### `wisepanel_start`\n\nStart a deliberation. Convenes a panel of AI models to debate a question from assigned perspectives. Returns `run_id` immediately.\n\n| Parameter | Type | Description |\n|---|---|---|\n| `question` | string (required) | The topic for the panel to deliberate |\n| `topology` | string | Panel size — see [Topology](#topology). `small` (6 agents, default), `medium` (12), `large` (30) |\n| `model_group` | string | See [Model groups](#model-groups). Default `smart` |\n| `rounds` | number | Polyhedron traversals (1-5). Default `1` — see [Rounds](#rounds) |\n| `context` | string | Additional framing context |\n| `context_file` | string | Path to a file used as context, for payloads too large to pass inline. Concatenated after `context` if both are given |\n| `compression` | string | Context compression: `none`, `moderate`, `aggressive` (default) |\n| `short_responses` | boolean | Request concise panelist responses. Default `false` |\n| `show_and_audit_reasoning` | boolean | Reasoning-quality scaffolding + cross-agent audit. **Server default is on** — omit to accept it, pass `false` to opt out. ~1.45x cost |\n| `web_search_enabled` | boolean | Let agents verify factual claims via native provider web search. Requires `smart`. Default `false`. ~3.25x cost, ~6.5x combined with audit |\n\n<a name=\"topology\"></a>\n#### Topology\n\nAgents sit on the polyhedron's **edges**, so the agent count is the edge count:\n\n| `topology` | Polyhedron | Vertices | Agents | Responses per round |\n|---|---|---|---|---|\n| `small` | tetrahedron | 4 | 6 | ~12 |\n| `medium` | octahedron | 6 | 12 | ~24 |\n| `large` | icosahedron | 12 | 30 | ~60 |\n\nTime and cost scale with agent count — `large` is 5× `small`. Escalate when a question needs\nmore genuinely distinct perspectives, not when you want a better answer from the same ones.\n\n**Why edges rather than vertices.** Every edge of a Platonic solid is equivalent under the\nsolid's symmetry group, and speaking order is balanced so no agent consistently anchors or\nconsistently gets the last word. There is no hub and no privileged seat. Graph diameter stays\nsmall — 1, 2 and 3 respectively — so an insight raised anywhere reaches the whole panel in a\nfew hops. Because each agent sits on an edge, it is simultaneously a participant and a bridge:\npropagation is a side effect of participation, with no messenger or aggregator role.\n\n| Structure | Uniform influence | Fast propagation | Cost |\n|---|---|---|---|\n| Hub-and-spoke | ✗ one position frames everything | ✓ | linear |\n| Chain / round-robin | ✗ anchoring, last-word advantage | ✗ | linear |\n| All-to-all | ✓ | ✓ | O(n²) |\n| **Polyhedral edges** | **✓** | **✓** | **linear** |\n\nAll-to-all buys the same reach and uniformity at quadratic cost. Edge assignment on a regular\npolyhedron is the structure that gets both at linear cost.\n\n<a name=\"model-groups\"></a>\n#### Model groups\n\nCost is relative to `smart`, the default:\n\n| Group | Relative cost | Use when |\n|---|---|---|\n| `smart` | 1× (baseline) | default; current flagships (Opus 5, GPT-5.6 Sol, Gemini 3.1 Pro Preview) |\n| `cheap` / `fast` | ~¼× | small models; `fast` optimises latency, `cheap` optimises cost — same tier |\n| `mixed` | < 1× | random across all providers; cheaper on average, quality varies seat to seat |\n| `informed` | ~1× | search-capable models incl. Perplexity Sonar; the answer turns on current facts |\n| `large` | varies | largest context windows — for big context payloads, not better answers |\n| `anthropic-fable` | ~2× | Claude Fable 5 on every seat; only when maximum capability is explicitly wanted |\n\nSingle-provider groups (`openai`, `anthropic`, `google`, `perplexity`) pin every seat to one\nvendor, which removes cross-vendor diversity — usually the point of a panel.\n\n<a name=\"rounds\"></a>\n#### Rounds\n\nAgents sit on the **edges** of the polyhedron, not the vertices. Each agent connects two\nvertices (conversation nodes) and contributes at **both** endpoints every round — so\n`rounds: 1` already produces roughly `num_agents × 2` responses.\n\nRounds are full polyhedron traversals, not chat turns. `rounds: 1` is already substantial\ndeliberation. Use 2+ only when agents need to react to other agents' *completed* positions —\ne.g. a binary strategic decision with sharply opposing arguments.\n\n### `wisepanel_magic_prompt`\n\nRewrite a question to remove framing that would bias the panel toward a predetermined\nanswer — loaded wording, embedded assumptions, false binaries — while preserving intent.\nOptional pre-step before `wisepanel_start`.\n\n| Parameter | Type | Description |\n|---|---|---|\n| `question` | string (required) | The question to rewrite, as the user wrote it |\n\nReturns one of three outcomes. The original question is echoed back in every case, so you\ncan always fall back to it:\n\n| `outcome` | Meaning | Billed |\n|---|---|---|\n| `transformed` | Rewritten. Response includes `rewritten` | yes |\n| `no_change_needed` | Already unbiased — use the original | no |\n| `fail_closed` | No safe rewrite produced — use the original | no |\n\n**Show the user both versions and let them choose.** The rewrite can shift emphasis in ways\nthey may not want, so it should never be substituted silently. This mirrors the web app,\nwhere the transform runs only on an explicit click, behind a cost confirmation, with revert\navailable.\n\nBilled separately from the deliberation, and only when the text actually changes.\n\n### `wisepanel_poll`\n\nLong-polls a running deliberation (waits up to 15s for new events). Returns panelist responses as they arrive.\n\n### `wisepanel_result`\n\nRetrieve full results of a completed deliberation. Only needed if you didn't poll it live.\n\n### `wisepanel_cancel`\n\nCancel a running deliberation.\n\n### `wisepanel_publish`\n\nPublish a completed deliberation to the [Wisepanel Commons](https://wisepanel.ai/commons). Makes it publicly viewable and shareable.\n\n### `wisepanel_list_runs`\n\nList all deliberation runs in the current session.\n\n## Typical Flow\n\n```\n1. wisepanel_start    -> returns run_id\n2. wisepanel_poll     -> (repeat) returns panelist responses as they arrive\n3. On completion, poll includes publish_available: true\n4. wisepanel_publish  -> publishes to Commons, returns public URL\n```\n\n## Environment Variables\n\n| Variable | Required | Description |\n|---|---|---|\n| `WISEPANEL_API_KEY` | Yes | Your Wisepanel API key |\n| `WISEPANEL_API_URL` | No | API base URL (defaults to `https://api.wisepanel.ai`) |\n\n## Development\n\n```bash\ngit clone https://github.com/ikoskela/wisepanel-mcp.git\ncd wisepanel-mcp\nnpm install\nnpm run dev\n```\n\n## Patent pending\n\nWisepanel's multi-agent deliberation architecture — including the polyhedral topology and the\nreasoning-audit and verification subsystems — is the subject of pending US patent applications\nassigned to QuROI, Inc.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nThe MIT license covers the client in this repository only. It grants no license, express or\nimplied, to any patent, or to the Wisepanel platform and the methods it implements.\n",
  "bytes": 16217,
  "sha": "a3b854674504f4973144f216bbd3778961c23bbd5f0b1da17ef0f16759699329",
  "repo_slug": "ikoskela/wisepanel-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_ikoskela_wisepanel_mcp_e5cf5da7/readme"
}