MRP Schemas
Canonical JSON Schemas
Each message type SHOULD have a versioned JSON Schema ($id per type + version).
Implementations MUST validate against these schemas to claim conformance.
This repo now includes starter schemas under:
skills/moltrouter-protocol/schemas/envelope.schema.jsonmanifest.schema.jsonpayloads/*.schema.jsontypes/*.schema.json
Capability Manifest (application/mrp-manifest+json)
{
"capability_id": "capability:summarize",
"capability": "summarize",
"version": "1.0",
"tags": ["text:summarization", "format:markdown"],
"inputs": [
{"type": "text", "schema_ref": "schema://mrp/types/text@1.0"},
{"type": "url", "schema_ref": "schema://mrp/types/url@1.0"}
],
"outputs": [
{"type": "markdown", "schema_ref": "schema://mrp/types/markdown@1.0"}
],
"constraints": {
"max_input_tokens": 8000,
"policy": ["no_pii", "consent_required"]
},
"cost": {"unit": "usd", "estimate": 0.01},
"latency": {"p50": "200ms"},
"proofs_required": ["attestation", "rate_limit"],
"endpoints": {
"discover": "/mrp/discover",
"negotiate": "/mrp/negotiate",
"execute": "/mrp/execute"
}
}
Artifact Reference
{
"type": "artifact",
"uri": "https://storage.example.com/artifacts/abc",
"hash": "sha256:...",
"size": 1048576,
"mime": "application/pdf"
}
DISCOVER Payload
{
"intent": "extract pricing from vendor docs",
"inputs": [
{"type": "url", "value": "https://example.com/pricing"}
],
"constraints": {
"max_cost": 0.05,
"max_latency_ms": 500,
"data_residency": "us",
"policy": ["no_pii", "no_training"]
},
"proofs_required": ["attestation"]
}
OFFER Payload
{
"offers": [
{
"route_id": "route-123",
"capability": "summarize",
"confidence": 0.89,
"cost": {"unit": "usd", "estimate": 0.02},
"latency": {"p50": "250ms"},
"proofs": ["attestation"],
"policy": ["no_pii"],
"risk": {
"data_retention_days": 0,
"training_use": "none",
"subprocessors": []
},
"endpoint": "/mrp/negotiate"
}
]
}
NEGOTIATE Payload
{
"route_id": "route-123",
"constraints": {
"max_cost": 0.02,
"policy": ["no_pii"],
"allowed_domains": ["example.com"]
},
"proofs": ["attestation"],
"inputs": [{"type": "url", "value": "https://example.com/pricing"}]
}
EXECUTE Payload
{
"route_id": "route-123",
"inputs": [
{"type": "url", "value": "https://example.com/pricing"},
{"type": "artifact", "uri": "https://storage.example.com/input.pdf", "hash": "sha256:..."}
],
"output_format": "markdown"
}
EVIDENCE Payload
{
"route_id": "route-123",
"outputs": [
{"type": "markdown", "value": "..."},
{"type": "artifact", "uri": "https://storage.example.com/output.md", "hash": "sha256:..."}
],
"provenance": {
"source_hashes": ["sha256:..."],
"citations": ["https://example.com/pricing"],
"timestamp": "2025-01-01T00:00:00Z"
},
"attestations": ["attestation"]
}
PAYMENT INTENT (NEGOTIATE)
{
"payment_intent": {
"intent_id": "pi_123",
"currency": "usd",
"max_amount": 0.05,
"pricing_model": "per_request"
}
}
JOB_ACCEPTED Payload
{
"job_id": "job-123",
"status": "accepted",
"status_url": "/mrp/status/job-123"
}
JOB_STATUS Payload
{
"job_id": "job-123",
"status": "running",
"progress": 0.6
}
STREAM_CHUNK Payload
{
"stream_id": "stream-abc",
"sequence": 1,
"final": false,
"chunk": {"type": "markdown", "value": "..."}
}
ERROR Payload
{
"code": "MRP_RATE_LIMITED",
"message": "Rate limit exceeded",
"retryable": true,
"retry_after_ms": 5000
}