MPL: Meaning Protocol Layer
Contracts, quality measurement, and audit trails for AI agent communication.
MPL sits between your agents and their tools. It makes every interaction typed, measurable, and provable — so you can move from prototype to production without rewriting your stack.
┌─────────────────────────────────────────────────────────┐
│ Your Agent Logic │
├─────────────────────────────────────────────────────────┤
│ MPL (this layer) │
│ Contracts · Quality Metrics · Policies · Proofs │
├─────────────────────────────────────────────────────────┤
│ MCP (client-server) | A2A (peer-to-peer) │
└─────────────────────────────────────────────────────────┘
Get Running in 2 Minutes
Your agents keep working exactly as before — MPL observes, validates, and records everything passing through. Open http://localhost:9080 for the dashboard.
When you're ready to enforce:
Now malformed requests get blocked before they reach your server.
What This Does For You
| Your problem | How MPL helps |
|---|---|
| Agent outputs are unpredictable | Define contracts for every message type — invalid payloads are caught immediately |
| "It worked in testing" doesn't satisfy compliance | Every interaction gets a tamper-proof hash and quality score you can point to |
| Breaking changes surface in production | Schema validation catches structural errors at the protocol layer |
| No visibility into what agents actually did | Full provenance chain — which agent, what intent, which inputs, what quality score |
| Compliance review blocks your deployment | Audit trails map directly to SOX, GDPR, HIPAA, and EU AI Act requirements |
This Is Not a Guardrail
Guardrails are reactive safety nets — they block bad outputs after generation. MPL is different:
| Guardrails | MPL | |
|---|---|---|
| When | After the agent responds | Before, during, and after |
| What | Filters harmful content | Defines what correct looks like, measures quality, records proof |
| Scope | Single agent output | Entire communication chain across agents |
| Output | Pass/block decision | Typed contracts, quality scores, provenance records, audit trails |
| Adapts to | Safety policies | Your domain schemas, your quality thresholds, your compliance requirements |
MPL doesn't ask "is this safe?" — it asks "did this meet the contract, and can you prove it?"
Adapt It To Your Domain
Define Your Own Contracts
Create a schema for any message type your agents handle:
Save it as registry/stypes/org/support/Ticket/v1/schema.json — done. Your agents now validate against it.
Set Your Own Quality Thresholds
Pick which metrics matter for your use case:
# qom-my-profile.json
name: "my-production-profile"
metrics:
schema_fidelity: # Must match contract perfectly
instruction_compliance: # Must follow constraints
groundedness: # Claims must cite sources
Write Your Own Policies
Enforce organizational rules at the protocol layer:
policies:
- name: "require-provenance"
match:
rules:
- deny_if_missing:
- require_profile: "my-production-profile"
25+ Contracts Ship Out of the Box
Get started without defining anything — use the pre-built types and extend from there:
| Namespace | Examples |
|---|---|
org.* |
Calendar events, task plans, tool calls, workflows |
data.* |
Tables, records, queries, file metadata |
eval.* |
RAG queries, search results, feedback |
ai.* |
Prompt templates, completions, reasoning traces |
SDK Examples
Python
= await
# True — matched the contract
# True — met quality thresholds
# The response payload
TypeScript
import { MplClient, Mode } from '@mpl/sdk';
const client = new MplClient('http://localhost:9443', { mode: Mode.Production });
const result = await client.call('calendar.create', {
title: 'Quarterly Review',
start: '2025-03-15T14:00:00Z',
end: '2025-03-15T15:00:00Z',
});
result.valid; // true — matched the contract
result.qomPassed; // true — met quality thresholds
Docker
&&
How It Works
1. Contracts
Every message declares what it is — a versioned identifier backed by a JSON Schema:
If the payload doesn't match the contract, it's rejected before reaching the server.
2. Quality Measurement
Six metrics you can mix and match into profiles:
| Metric | What it answers |
|---|---|
| Schema Fidelity | Does the payload match the contract? |
| Instruction Compliance | Were the constraints followed? |
| Groundedness | Are claims backed by sources? |
| Determinism | Is the output stable across runs? |
| Ontology Adherence | Are domain rules respected? |
| Tool Outcome | Did the side effects match expectations? |
Use qom-basic while developing. Switch to qom-strict-argcheck for production. Or define your own.
3. No Code Changes Required
MPL runs as a proxy alongside your existing setup:
Agent ──▶ MPL Proxy ──▶ MCP/A2A Server
│
├── Validates contracts
├── Measures quality
├── Applies policies
└── Records everything
Start in transparent mode (observe only), graduate to strict (enforce) when you're ready.
4. Compliance You Can Point To
Every message through MPL carries a BLAKE3 hash (tamper detection), provenance metadata (who did what), and a quality report (did it meet thresholds). These map to:
| Requirement | What MPL provides |
|---|---|
| Tamper-evident records (SOX) | Cryptographic hash on every payload |
| Data handling proof (GDPR) | Consent references + policy enforcement |
| Accuracy controls (HIPAA) | Quality thresholds on clinical outputs |
| Transparency (EU AI Act) | Quality scores + full provenance chain |
Documentation
Full docs at skelf-research.github.io/mpl
| I want to... | Start here |
|---|---|
| Get running quickly | Quick Start |
| Understand the architecture | How It Works |
| Follow a tutorial end-to-end | Guides |
| Create my own contracts | Custom SType Tutorial |
| Look up SDK methods | Python / TypeScript |
| Deploy to Kubernetes | Deployment |
| Understand the compliance story | Security & Compliance |
Status
| Phase | What's in it |
|---|---|
| Phase 1 — Complete | Core protocol, Python SDK, Sidecar Proxy, Schema Registry |
| Phase 2 — Complete | TypeScript SDK, Registry API, Helm Chart, Policy Engine |
| Phase 3 — In Progress | Conformance suite, A2A hardening, Production readiness |
Repository
crates/mpl-protocol/ Core protocol (Rust)
crates/mpl-proxy/ Sidecar proxy
crates/mplx/ CLI tooling
python/ Python SDK
typescript/ TypeScript SDK
registry/stypes/ Pre-built contract definitions
helm/mpl-proxy/ Kubernetes Helm chart
examples/ Tutorials and demos
documentation/ Documentation site (MkDocs)
Contributing
See the Contributing Guide for development setup and workflow.
License
MIT — Open an issue if you have questions.