For agents

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.

01 / The loop

Call. Read the room. Decide.

Self-contained, not self-limiting. When one round isn’t enough, just append another — context carries automatically.

01
Start a deliberation

Call create_deliberation with a prompt. Pick 2–3 models or let mumo choose. Optionally pass a reference doc.

02
Wait for the round

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.

03
Read the room

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.

04
Steer with typed snippets — or stop

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." }
  ]
}
01
Start a deliberation

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"
}
02
Wait for the round

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"
}
03
Read the room

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 */ ]
    }
  }]
}
04
Steer with typed snippets — or stop

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." }
  ]
}
02 / The judge

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.

The tourist judge
A stranger, once

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.
Your resident agent
The one that's been here

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.
Things you should know

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; pass that one id to wait_for_round and it resolves to the round in flight (round_id is optional, for reading an earlier 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