mpl
Open source (MIT) — Rust protocol layer

Typed, measurable, and provable
agent communication

mpl — the Meaning Protocol Layer — is a sidecar proxy that sits between your agents and their tools. Every message is validated against a contract, scored against a quality profile, and hashed into an audit trail you can hand to a regulator.

$ cargo install mplx
mpl audit record
// one hop through the proxy, recorded
{
  "stype": "org.calendar.Event.v1",
  "valid": true,
  "qom_passed": true,
  "sem_hash": "blake3:9f2c…a41e",
  "provenance": { "agent_id": "scheduler-1", "intent": "book_meeting" }
}

What is mpl?

mpl is a protocol layer for trustworthy AI agent communication, written in Rust. It runs as a sidecar proxy between your agents and their tools, on top of the transports you already use — MCP for client–server, A2A for peer–peer, or plain HTTP. At every hop it validates a contract, scores quality, applies policy, and writes a tamper-evident record.

A guardrail asks…

“Is this safe?”

Guardrails filter harmful content after generation. Useful — and a different layer of the stack. mpl runs alongside them, not instead of them.

mpl asks…

“Did this meet the contract, and can you prove it?”

Before, during, and after every hop: a typed contract, a quality score, and a BLAKE3-hashed record with provenance. Correctness you can demonstrate, not just hope for.

Envelope
stype · payload · sem_hash · provenance
Transports
MCP · A2A · HTTP
Language
Rust core, Python & TS SDKs
License
MIT — run the proxy yourself

The problems mpl solves

These aren’t model problems. They’re protocol problems — and they show up the moment a chain of agents has to be trusted in production.

📐

Untyped JSON over the wire

The problem

Agent-to-agent and agent-to-tool calls are usually a JSON blob. The receiver hopes the shape is right, the values are sane, and that someone wrote it down.

What mpl does

Every payload declares a versioned stype backed by a JSON Schema in a shared registry. Malformed messages are rejected at the boundary, not deep in a handler.

How contracts work →
📊

Pass/fail is not quality

The problem

“The tool returned a value or it raised” tells you nothing about whether the message was grounded, deterministic, or compliant with upstream instructions.

What mpl does

Six QoM metrics score every message. Compose them into profiles and enforce a threshold per stype glob — drift shows up before it becomes an outage.

The six metrics →
🔏

No proof for the auditor

The problem

When a regulator asks “show me what the agent did and prove it wasn’t tampered with,” application logs are not tamper-evident and rarely carry provenance.

What mpl does

Each envelope gets a BLAKE3 content hash, a provenance block, and its QoM report, written to an append-only record. Point the auditor at that.

Reading audit trails →
🧩

Validation scattered per receiver

The problem

If every tool server implements its own checks, contracts drift, coverage is uneven, and a new agent can quietly skip validation altogether.

What mpl does

A sidecar proxy enforces one contract and one policy language across the whole fabric. Agents don’t change; they point at the proxy and it forwards.

The sidecar model →

One line at the boundary

Your agents keep their logic. The mpl SDK returns valid, qom_passed, and the payload — and every call is recorded.

Raw tool call — untyped, unscored, unrecorded
// agent calls a tool, hopes for the best
const res = await mcp.call("create_event", payload);

// is the shape right?      ¯\_(ツ)_/¯
// is it grounded?          unknown
// who asked for it?        not recorded
// can you prove it later?  no
Through mpl — typed, scored, provable
// same agent, pointed at the mpl proxy
from mpl_sdk import Client

client = Client("http://localhost:9080")
result = client.send(
    stype="org.calendar.Event.v1",
    payload=event,
    profile="qom-strict-argcheck",
)

assert result.valid            # contract met
assert result.qom_passed       # quality threshold met
# + a BLAKE3-hashed audit record, written

Python: pip install mpl-sdk · TypeScript: npm install @mpl/sdk

Where mpl sits

A thin layer between your agent logic and the transport. The proxy speaks MCP, A2A, or HTTP on the wire; the contracts and quality measurement happen in the layer above.

Agents don’t change — they point at the proxy address and the proxy forwards. See the full flow →

Four jobs at every hop

Contracts, quality, audit, and operations — the primitives that turn agent traffic into something you can validate, measure, and prove.

6
quality-of-message metrics
composed into profiles
4
registry namespaces
org · data · eval · ai
3
transports supported
MCP · A2A · HTTP
144
tests passing
as of the README

Phase 1 & 2 complete (core protocol, SDKs, proxy, registry API, Helm chart, policy engine). Phase 3 in progress.

Put mpl in front of your agents

mpl is open source (MIT). Install the proxy, start in transparent mode, learn your schemas from live traffic, then lock them in. Your agents don’t change.