MPAC: A Multi-Principal Agent Coordination Protocol for Interoperable Multi-Agent Collaboration
Organizations: University of Colorado Denver (CU Denver)
Abstract
The AI agent ecosystem has converged on two protocols: the Model Context Protocol (MCP) for tool invocation and Agent-to-Agent (A2A) for single-principal task delegation. Both assume a single controlling principal, meaning one person or organization that owns every agent. When independent principals' agents must coordinate over shared state, such as engineers' coding agents editing the same repository, family members planning a shared trip, or agents from different organizations negotiating a joint decision, neither protocol applies, and coordination collapses to ad-hoc chat, manual merging, or silent overwrites. We present MPAC (Multi-Principal Agent Coordination Protocol), an application-layer protocol that fills this gap with explicit coordination semantics across five layers: Session, Intent, Operation, Conflict, and Governance. MPAC makes intent declaration a precondition for action, represents conflicts as first-class structured objects, and supports human-in-the-loop arbitration through a pluggable governance layer. The specification defines 21 message types, three state machines with normative transition tables, Lamport-clock causal watermarking, two execution models, three security profiles, and optimistic concurrency control on shared state. We release two interoperable reference implementations in Python and TypeScript with 223 tests, a JSON Schema suite, and seven live multi-agent demos. A controlled three-agent code review benchmark shows a 95 percent reduction in coordination overhead and a 4.8 times wall-clock speedup versus a serialized human-mediated baseline, with per-agent decision time preserved. The speedup comes from eliminating coordination waits, not compressing model calls. Specification, implementations, and demos are open source.
Figures & tables
| Layer | Message types |
|---|---|
| Session | HELLO , SESSION_INFO , HEARTBEAT , GOODBYE , SESSION_CLOSE , COORDINATOR_STATUS |
| Intent | INTENT_ANNOUNCE , INTENT_UPDATE , INTENT_WITHDRAW , INTENT_CLAIM , INTENT_CLAIM_STATUS |
| Operation | OP_PROPOSE , OP_COMMIT , OP_REJECT , OP_SUPERSEDE , OP_BATCH_COMMIT |
| Conflict | CONFLICT_REPORT , CONFLICT_ACK , CONFLICT_ESCALATE , RESOLUTION |
| Error | PROTOCOL_ERROR |
| Implementation | Source LOC | Test files | Test cases |
|---|---|---|---|
| Python | 3,500 | 12 | 122 (including 34 adversarial) |
| TypeScript | 2,900 | 11 | 101 (including 32 adversarial) |
| Scenario | Agents | Key protocol features exercised |
|---|---|---|
| Concurrent code editing | 2 | INTENT_ANNOUNCE , scope-overlap CONFLICT_REPORT , optimistic concurrency control via state_ref_before , STALE_STATE_REF rejection and rebase |
| Family trip planning | 3 | task_set scope overlap on itinerary days and budget categories, natural-language CONFLICT_ACK negotiation, atomic OP_BATCH_COMMIT |
| Overhead comparison | 3 | Back-to-back Traditional vs MPAC runs on the same workload with per-segment timing |
| Pre-commit + fault recovery | 3 | OP_PROPOSE authorization OP_COMMIT , INTENT_UPDATE , INTENT_WITHDRAW + OP_REJECT , agent crash liveness timeout INTENT_CLAIM with governance approval |
| Conflict escalation to arbiter | 3 | Disputed CONFLICT_ACK , CONFLICT_ESCALATE , Claude-powered arbiter RESOLUTION , multi-level governance authority chain |
| Interactive remote (pip-packaged) | 2+ | Two humans on different machines each give tasks to a local agent; coordinator runs on one side, WebSocket over LAN or ngrok |
| Metric | Traditional | MPAC | Change |
|---|---|---|---|
| Wall-clock time (s) | 131.76 | 27.38 | (4.8 speedup) |
| Decision time (s) | 63.11 | 57.13 | (preserved) |
| Coordination overhead (s) | 68.65 | 3.02 | |
| Overhead as % of wall-clock | 52.1% | 11.0% | pp |
Multi-Agent Coordination
Multi-agent coordination studies how autonomous agents align actions, share information, and divide work to achieve individual or collective goals.
See all 501 papers