council

MCP Quickstart

Two minutes to call your council from any MCP client — Codex, Claude Code, Cursor, your own scripts.

1. Get a token

Create a new API token. Copy the plaintext — it shows once.

2. Add the server

Two transports. Hosted is the default; the local stdio server is for when you want code mode to touch your filesystem.

Hosted (default)

Endpoint: https://api.zcouncil.com/mcp. Auth: Authorization: Bearer YOUR_TOKEN.

Codex (~/.codex/config.toml):

toml
[mcp_servers.zcouncil]command = "npx"args = ["-y", "mcp-remote", "https://api.zcouncil.com/mcp", "--header", "Authorization: Bearer YOUR_TOKEN"]

Claude Code:

bash
claude mcp add zcouncil --transport http https://api.zcouncil.com/mcp --header "Authorization: Bearer YOUR_TOKEN"

Cursor (~/.cursor/mcp.json):

json
{  "mcpServers": {    "zcouncil": {      "url": "https://api.zcouncil.com/mcp",      "headers": { "Authorization": "Bearer YOUR_TOKEN" }    }  }}

VS Code (.vscode/mcp.json):

json
{  "servers": {    "zcouncil": {      "url": "https://api.zcouncil.com/mcp",      "headers": { "Authorization": "Bearer YOUR_TOKEN" }    }  }}

Anything else (stdio fallback):

bash
npx -y mcp-remote https://api.zcouncil.com/mcp --header "Authorization: Bearer YOUR_TOKEN"

Local stdio (zcouncil mcp)

Same tool surface, but exec runs in your shell instead of the cloud sandbox — code can read your repo, run binaries, and import your modules. Council members still hit the hosted endpoints. See code mode for the trust trade-off.

Codex:

bash
codex mcp add zcouncil-local --transport stdio "npx -y @zcouncil/cli mcp"

Claude Code:

bash
claude mcp add zcouncil-local --transport stdio "npx -y @zcouncil/cli mcp"

Set ZCOUNCIL_TOKEN=... in the environment or pass --token so the local server can call the hosted API.

3. Use it

Your MCP client sees four tools:

ToolWhat it does
runPlain string in, synthesized council answer out. The default ergonomic path.
askSend one prompt to one member. No orchestration.
membersList configured council members and their routed models.
run_scriptRaw JS council code (hosted) — power-user escape hatch for the cloud sandbox.

The local stdio server (zcouncil mcp) renames run_scriptexec and runs it in your shell instead of the cloud sandbox. Same input shape, different trust tier.

Inside script code (run_script or exec):

  • council.run(input) — ask the full council
  • council.ask(memberId, input) — ask one member
  • council.members() / council.profiles() — discovery
  • ui.status(text) — progress notes streamed to the client
  • orchestrator.checkpoint({ input, schema? }) — mid-script reasoning helper (hosted only)
  • Promise.all([...]) — parallelize member calls

Verify

bash
curl https://api.zcouncil.com/mcp \  -H "Authorization: Bearer YOUR_TOKEN" \  -H "Content-Type: application/json" \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

You should see run, ask, members, run_script.

Next: the tool reference, the CLI, code mode, or the bridge if you want models to route through your local ChatGPT and Claude Code subscriptions.