Practical guidance for implementing MC4P verification in an workflow. This section describes how agents discover certificates and apply minimal and full verification paths.
3.1 How to Verify a Product Image
image_id: UUID for the certified image (Mintall asset identifier).
current_domain: The domain where the agent observed the product page or certificate usage (hostname only).
Verification Steps
- Obtain the MC4P Certificate (JSON-LD)
Either by parsing JSON-LD embedded in the product page or by fetching the certificate from its canonical URL.
- Normalize the certificate (optional)
If the certificate was discovered inline, the agent may fetch the canonical certificate to ensure a normalized, cacheable representation.
- Verify the JWT proof
Validate the JWT signature using the cached JWKS.
- Verify domain authorization
Confirm the observed domain matches an authorized domain in the certificate. If
domainVerified is false, treat the result according to your policy.
- For full verification only
Verify the C2PA manifest against the evaluated image bytes.
3.2 Minimal Verification Path
The minimal path establishes domain-level authorization and certificate consistency via JWT verification, without verifying image provenance.
Steps
- Obtain the MC4P Certificate (JSON-LD), either from embedded page data or via the certificate endpoint (minimal or full).
- Verify the JWT proof using cached JWKS.
- Confirm the observed domain is included in
authorizedDomains. If domainVerified is false, treat the result according to your policy (for example downgrade trust, or require server-assisted verification).
Use When
- Ranking, filtering, or allowlisting decisions are required.
- Fast, low-latency verification is needed.
- Full image provenance verification is not required.
3.3 Full Verification Path
The full path establishes cryptographic provenance and strict context binding.
Steps
- Perform the minimal verification path.
- Fetch or compute the image bytes being evaluated.
- Verify the C2PA manifest against the image bytes.
- Validate all bound context fields (e.g.,
productUrl, productId) where available.
- Optionally confirm registry anchor references for audit or indexing purposes.
Notes
Registry anchor data is advisory and MUST be validated via the C2PA manifest. Registry fields surfaced in JWTs or JSON-LD MUST NOT be treated as authoritative.
3.4 What to Do on Failure
If any required check fails:
- Treat the asset as unverified in the observed context.
- Downgrade trust or exclude the asset from automated actions.
- Record which check failed (JWT, domain authorization, or C2PA verification).
- Avoid caching failures indefinitely; periodically re-check domain authorization and JWKS according to your retry policy.
Common Failure Modes
HTTP 402: Certificate paused due to plan or entitlement limits.
HTTP 404: No certificate exists for the image_id.
- JWT verification fails: Treat as untrusted.
- Domain mismatch: Observed domain not in
authorizedDomains.
- Domain not verified: Domain control not confirmed by Mintall.
- C2PA verification fails: Image bytes do not match the signed manifest or trust chain is invalid.
3.5 Common Integration Mistakes
- Verifying a certificate without verifying the domain context.
- Treating server-assisted verification as a substitute for JWT verification.
- Trusting viewer UIs instead of verifying against actual image bytes.
- Not caching JWKS and refetching keys on every request.
- Accepting certificates on subdomains not explicitly authorized.