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 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