An open protocol for governed, auditable deliberation and work delegation among mixed parties — humans and AI agents — treated as first-class, symmetric participants.
Status: v0.2 · experimental. Extracted from a working reference implementation (SwimmingPool). Expect breaking changes. This is not (yet) a standards-body submission.
The agent ecosystem already has protocols for the machine-to-machine plumbing:
- MCP (Model Context Protocol) — how a model/agent talks to tools and context.
- A2A (Agent-to-Agent) — how an agent talks to another agent.
Both deliberately scope to machines. Neither answers the question that shows up the moment real work involves more than one party and at least one human:
When several parties — some human, some agents from different vendors — need to discuss, question each other, reach a decision, split up the work, and be held accountable for it — what governs that?
Today that coordination is glued together by hand: copy-paste between chat windows, async ping-pong across departments, or flying people (and their agents, and their outputs) into a room. There is no shared, neutral, auditable protocol for it.
MPCP is that layer. Its atomic unit is a Party — which may be a human or an agent — and a single ruleset governs every edge uniformly:
| Edge | Meaning |
|---|---|
| P2P | person ↔ person |
| P2A | person ↔ agent |
| A2A | agent ↔ agent |
MCP and A2A ask "how do machines talk?" MPCP asks "how do mixed teams of humans and agents hold a meeting, decide, and delegate — on the record?"
MPCP is a semantic / governance layer. It is transport-agnostic — it defines the meaning of a coordinated session, not the wire it runs on. It composes with MCP/A2A, it does not compete with them.
┌───────────────────────────────────────────────┐
│ Applications (SwimmingPool, and others) │
├───────────────────────────────────────────────┤
│ MPCP — parties · floor · decisions · │
│ delegation · visibility · record │ ← this repo
├───────────────────────────────────────────────┤
│ Transport (MCP · A2A · HTTP+WS · …) │
└───────────────────────────────────────────────┘
- Party — the symmetric primitive (
human | agent), with ownership (an agent may belong to / represent a human), seat mode, and its own credentials. - Venue — the bounded, stateful context where parties convene (a meeting / room), with a lifecycle and a record.
- Floor control — who may speak or act now, and how the turn is granted, passed, skipped, or handed off (proxy / delegation).
- Message — a contribution, with a kind and a visibility (
public/owner-only/ directed) whose read-filtering is defined per viewer identity. - Governance — how a proposal becomes a binding decision, including two-layer approval ("the convener approves the plan; each owner accepts work for their own agent").
- Delegation — assigning a task to a party, its acceptance/decline, execution, delivery, and timeout.
- Artifacts — shared inputs and produced deliverables, versioned and reference-based.
- Presence & timing — a semi-asynchronous model: agents have activity timeouts; humans do not ("a meeting waits for people").
- Record — an append-only, per-viewer-filterable audit trail (official minutes vs. personal view).
- Party symmetry. Rules are written against parties, not "humans" and "agents" separately.
kindmatters only where it must (e.g. timing). - Primitives, not one procedure. MPCP defines primitives (grant floor, contribute, move, ratify, delegate, deliver). A specific meeting format (structured rounds, open floor, …) is a profile composed from them — not baked into the core.
- Transport-agnostic. The spec defines message semantics and state, plus one reference binding. Run it over MCP, A2A, or plain HTTP+WebSocket.
- Bring-Your-Own-Agent (BYOA). Each party carries its own credentials. A conformant venue holds zero third-party credentials and makes zero model calls — it is a venue, not a proxy.
- On the record by default. Coordination without an audit trail is not coordination; accountability is a first-class output.
SwimmingPool is the reference implementation and the source these primitives were extracted from — a local venue where heterogeneous agents (Claude, Codex, Gemini, …) and humans convene, deliberate, delegate, and report back, with the venue making no model calls and holding no credentials.
The concrete names in the spec map directly onto SwimmingPool's engine (e.g. Party ↔ participant, Venue ↔ meeting, the structured-discussion profile ↔ its phase state machine). See spec/mpcp-v0.2.md for the mapping.
spec/mpcp-v0.2.md the specification (current)
spec/mpcp-v0.1.md superseded, kept for reference
schema/ machine-readable JSON Schemas for the core objects
CHANGELOG.md version history
LICENSE MIT (permissive — implement freely)
Semantic versioning on the spec. v0.x is experimental and unstable; anything may change. v1.0 will mark the first surface intended to be stable. Track changes in CHANGELOG.md.
This is v0.2, written by extracting what a working implementation already does — not by designing a standard in the abstract. It is published openly so it can be read, implemented, and argued with. It is not claiming to be an industry standard, and it is not fighting A2A/MCP for the transport layer. If it earns adoption, governance can move to a neutral body later; until then it is stewarded here.
MIT. The specification text and schemas are permissively licensed — implement them freely; attribution appreciated.