Architecture
A sidecar on the agent path
mpl inserts a thin protocol layer between your agent logic and the transport. Here is the shape of the stack and what happens on a single hop.
What happens on one hop
Receive
The proxy receives a message from an agent on the wire (MCP, A2A, or HTTP). Nothing about the agent changes — it simply targets the proxy address.
Validate the contract
The payload is checked against the JSON Schema for its stype in the registry. In strict mode, a mismatch is rejected here.
Score quality
The message is scored against the QoM profile required for its stype. A failing score below the threshold is a policy denial.
Apply policy
Glob-pattern policies run: required profiles, mandatory provenance fields, namespace allowlists.
Record the proof
A BLAKE3 hash of the canonicalised payload, the provenance block, and the QoM report are written to an append-only audit record.
Forward
If everything passes, the proxy forwards the message to the real tool server or peer agent and returns the response.
What ships in the repo
The open-source distribution at github.com/Skelf-Research/mpl is a Rust workspace plus SDKs and a registry.
| crates/mpl-protocol | Rust core — envelope, hashing, validation |
| crates/mpl-proxy | Sidecar HTTP proxy |
| crates/mplx | CLI (mpl proxy, mpl schemas) |
| crates/mpl-registry-api | Registry service |
| python/mpl_sdk | Python SDK |
| typescript/ | TypeScript SDK (@mpl/sdk) |
| registry/stypes/ | Pre-built contracts |
| registry/profiles/ | QoM profiles |
| helm/mpl-proxy | Kubernetes Helm chart |
Frequently asked questions
What is in the envelope?
Every message carries four fields: stype (versioned semantic type), payload (validated against the schema), sem_hash (BLAKE3 hash of the canonicalised payload), and provenance (agent_id and intent).
Is the proxy a bottleneck?
It is a thin layer that validates, scores, records, and forwards. In transparent mode it never blocks; in strict mode it rejects only messages that fail the contract or policy.
How does it compose with MCP and A2A?
mpl does not replace them. The proxy speaks MCP or A2A on the wire and adds the contract, quality, and audit layer above the transport.