Certificate schema
An IntegrityCertificate has four top-level sections: subject, claims, input_commitments, and proofs.Envelope fields
Subject
Identifies the integrity checkpoint this certificate attests to.Claims
The analysis verdict and supporting evidence.Input commitments
Cryptographic commitments to the inputs used for analysis. These enable verification that the analysis was performed over the claimed inputs without revealing the inputs themselves.Proofs
Cryptographic evidence supporting the claims. Contains four proof types.proofs.signature
Ed25519 digital signature over the signed payload.
proofs.chain
Hash chain linking this checkpoint to its predecessor in the session.
proofs.merkle
Merkle tree inclusion proof. May be null if the checkpoint has not yet been added to the agent’s Merkle tree.
proofs.verdict_derivation
Zero-knowledge proof of correct verdict derivation. May be null if no ZK proof has been generated. See Verifiable Verdicts for details.
Verification URLs
Self-contained links for independent verification.Signed payload format
Thesigned_payload field contains the exact JSON string that the Ed25519 signature covers. It is constructed with deterministic key ordering (alphabetically sorted) to ensure the same payload produces the same bytes regardless of property insertion order.
The signed payload includes these fields, sorted alphabetically:
JSON.stringify(payload, Object.keys(payload).sort()), which ensures keys appear in lexicographic order. This exact string (UTF-8 encoded) is the message passed to Ed25519.sign().
Input commitment computation
Thecombined_commitment is computed as follows:
- Each input field is serialized to JSON with recursively sorted keys (deterministic stringify).
- The serialized fields are concatenated with a pipe (
|) separator in this order:- Card (full Alignment Card object)
- Conscience values array
- Window context array
- Model version string
- Prompt template version string
- The concatenated string is UTF-8 encoded and hashed with SHA-256.
- The result is the hex-encoded hash.
Verification instructions
Any party can verify an IntegrityCertificate using the following five steps. Steps 1-4 can be performed offline with the certificate and the public key. Step 5 requires a network call to the prover service.Step 1: Fetch the public key
Retrieve the signing key referenced byproofs.signature.key_id:
key_id. The public_key field is the hex-encoded Ed25519 public key.
Public keys can be cached. They rotate infrequently, and the
is_active field indicates whether a key is currently in use for new signatures.Step 2: Verify the Ed25519 signature
Verifyproofs.signature.value (base64-encoded) against proofs.signature.signed_payload (UTF-8 string) using the public key from Step 1.
Step 3: Recompute and verify the chain hash
Recompute the chain hash from the certificate fields and compare toproofs.chain.chain_hash:
expected !== proofs.chain.chain_hash, the chain link has been altered.
Step 4: Walk the Merkle inclusion proof
Ifproofs.merkle is present, verify that the checkpoint is included in the agent’s Merkle tree:
- Start with
current = proofs.merkle.leaf_hash. - For each sibling in
proofs.merkle.inclusion_proof:- If
position === "left":current = SHA-256(sibling.hash + current) - If
position === "right":current = SHA-256(current + sibling.hash)
- If
- Compare
currenttoproofs.merkle.root.
GET /v1/agents/{agent_id}/merkle-root.
Step 5: Verify the STARK proof (optional)
Ifproofs.verdict_derivation is present, the verdict was proven via an SP1 STARK proof. Verification can be performed:
- Via the API: Submit the certificate to
POST /v1/verify. The API will delegate STARK verification to the prover service. - Locally: Use the SP1 verifier with the
image_idandreceiptfrom the certificate. See Verifiable Verdicts for details.
Example certificate
Design influences
The IntegrityCertificate format draws from two established standards:- C2PA Content Credentials: The concept of a self-describing, machine-readable credential that bundles claims with cryptographic evidence. C2PA uses this pattern for media provenance; AIP adapts it for AI agent integrity.
-
W3C Verifiable Credentials: The subject/claims/proofs structure and the
@contextnamespace pattern. The certificate acts as a verifiable credential where the issuer is the Mnemom analysis service and the subject is the integrity checkpoint.
See also
- Verifiable Verdicts — Zero-knowledge proofs for verdict derivation
- AIP Specification — Attestation — Protocol-level attestation specification
- AIP Specification — Verification — Protocol-level verification specification
- Security & Trust Model — Cryptographic Guarantees — How certificates fit into the broader trust model