Validate a decoded C2PA manifest (art-123) → verify the Content Credential signature against a caller-supplied trust posture, zero network (art-124) → resolve the ingredient provenance tree and confirm it chains back (art-125). Client-side, zero-egress, agent-callable alternative to network-dependent trust-list validation.
validate_c2pa_manifest{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "validate_c2pa_manifest",
"arguments": {
"claim_generator": "Adobe Firefly 3.0",
"claim": {
"format": "image/jpeg",
"instanceID": "xmp:iid:abc123"
},
"assertions": [
{ "label": "c2pa.actions" },
{ "label": "c2pa.hash.data" }
],
"signature": {
"present": true,
"alg": "ES256"
}
}
},
"id": 1
}
verify_content_credential_signature{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "verify_content_credential_signature",
"arguments": {
"alg": "Ed25519",
"signer_public_key_jwk": {
"kty": "OKP",
"crv": "Ed25519",
"x": "UCJluj4JmGYxBS1ecl_Q8kHKgd4ASBu6Hx6sHgfb0kk",
"alg": "Ed25519"
},
"signed_bytes_b64": "YzJwYS10ZXN0LXNpZ25lZC1jbGFpbS1ieXRlcy0yMDI2LTA2LTI1",
"signature_b64": "BSIkzTIAjJ2YVc347NUIBXJZAtx9uE5oSdhMIvA5LrL4UDdBkvpx2KSL5J8SJQOZro6M2m3iHAXbK+b7/YEBAQ==",
"trust_anchor_match": true,
"cert_not_expired": true,
"revocation_status": "good"
}
},
"id": 2
}
resolve_provenance_ingredient_tree{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "resolve_provenance_ingredient_tree",
"arguments": {
"active_manifest_hash": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"ingredients": [
{
"hashed_uri": "self#jumbf=/c2pa/urn:uuid:abc",
"nested_manifest_hash": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"relationship": "parentOf",
"redacted": false
}
]
}
},
"id": 3
}