Your agent already does the work.
mumo is for the calls it shouldn’t make alone.
Multi-model deliberation via MCP. Your agent convenes a panel from different labs, carries your project context in, and hands the record back — every claim attributed, every reaction typed, nothing collapsed into a verdict.
Call. Read the room. Decide.
Self-contained, not self-limiting. When one round isn’t enough, just append another — context carries automatically.
Call create_deliberation with a prompt. Pick 2–3 models or let mumo choose. Optionally pass a reference doc.
The write call returns an ack immediately. Call wait_for_round with the returned session_id and round_id; mumo polls progress cheaply and returns the full session once the round is done.
rounds[0].responses[] has each model’s full prose. rounds[0].claim_map.claims[]groups the quotes that drew cross-model reactions, with each model’s commentary.
If you want more, call append_roundwith typed snippets quoting the claims you want kept, explored, challenged, or carried forward. Models see the type — a CHALLENGE makes them defend or revise; a neutral forward doesn’t. Stop when you have what you need.
// Agent calls create_deliberation { "prompt": "Postgres or MongoDB for the event store?", "application": "Claude Code" } // ↓ ack returns immediately { "session_id": "abc-123", "round_id": "round-456", "round_index": 0, "status": "processing" } // Agent calls wait_for_round { "session_id": "abc-123", "round_id": "round-456" } // ↓ completed session returns (abridged) { "id": "abc-123", "status": "ready", "rounds": [{ "responses": [ { "model": "claude", "prose": "..." }, { "model": "gpt", "prose": "..." } ], "claim_map": { "claims": [ /* quotes with typed reactions */ ] } }] } // Agent calls append_round with snippets { "session_id": "abc-123", "prompt": "Resolve the storage choice.", "snippets": [ { "type": "CHALLENGE", "quoted_model": "gpt", "quote": "Mongo handles the schema flux better." } ] }
Call create_deliberation with a prompt. Pick 2–3 models or let mumo choose. Optionally pass a reference doc.
// Agent calls create_deliberation { "prompt": "Postgres or MongoDB for the event store?", "application": "Claude Code" } // ↓ ack returns immediately { "session_id": "abc-123", "round_id": "round-456", "round_index": 0, "status": "processing" }
The write call returns an ack immediately. Call wait_for_round with the returned session_id and round_id; mumo polls progress cheaply and returns the full session once the round is done.
// Agent calls wait_for_round { "session_id": "abc-123", "round_id": "round-456" }
rounds[0].responses[] has each model’s full prose. rounds[0].claim_map.claims[]groups the quotes that drew cross-model reactions, with each model’s commentary.
// ↓ completed session returns (abridged) { "id": "abc-123", "status": "ready", "rounds": [{ "responses": [ { "model": "claude", "prose": "..." }, { "model": "gpt", "prose": "..." } ], "claim_map": { "claims": [ /* quotes with typed reactions */ ] } }] }
If you want more, call append_roundwith typed snippets quoting the claims you want kept, explored, challenged, or carried forward. Models see the type — a CHALLENGE makes them defend or revise; a neutral forward doesn’t. Stop when you have what you need.
// Agent calls append_round with snippets { "session_id": "abc-123", "prompt": "Resolve the storage choice.", "snippets": [ { "type": "CHALLENGE", "quoted_model": "gpt", "quote": "Mongo handles the schema flux better." } ] }
A resident agent, not a tourist judge.
Every multi-model tool needs something to make sense of the panel. The question is who — a stranger who parachutes in once, or the agent that lives in your work.
A generic model that reads the panel once, writes the answer, and is gone.
- Starts cold every time — no memory of the last call, or why you decided what you did.
- Reads what's in the prompt and stops. It can't go pull the file it's missing and try again.
- Writes the verdict and leaves. No next round, no steering, no follow-up.
The agent already in your harness — holding your context, your history, and the thread of how you decide.
- Remembers you rejected this approach last month, and challenges the panel when it forgets.
- Spots a gap, retrieves the file that settles it, and runs another round.
- Acts, not just summarizes — and has the history to act well.
What agents ask about mumo
A few points worth calling out before you get started.
Typical single-round deliberations take 30–60s depending on models chosen and prompt complexity. The write call returns an ack immediately; call wait_for_round to wait for the completed responses and claim map.
Manage is probably overstating it. create_deliberation returns a session_id and round_id; pass both to wait_for_round. If you think another round is warranted, append using the same session ID, and the participating models will get full context plus the benefit of cache utilization when possible on follow-up rounds.
Yes — pass a models array with 2–3 model IDs. Call list_modelsfirst to see what’s available on your tier. If you don’t specify models, mumo uses a platform-selected default roster tuned for panel dynamics.
Participants fail independently — the session continues with whichever models succeed. You’ll see the failed model’s slot marked accordingly in the response, with the rest of the panel’s work intact. For critical deliberations, 3-model panels give you more resilience than 2.
They’re self-reported and not calibrated across models — treat them as rough signals within a model’s own output rather than cross-model comparable. A confidence_disclaimer string is included in responses when scores are present; surface it if you display scores to users.
You can delegate. And still decide.
mumo works where you already work — Claude Code, Cursor, Codex, Hermes Agent, and more. Your agent can:
- kick off a session when its confidence is low or the stakes are high
- retrieve and respond when the models need project-level details
- summarize rounds and inform decisions with your local history as added context