Documentation Index
Fetch the complete documentation index at: https://docs.mnemom.ai/llms.txt
Use this file to discover all available pages before exploring further.
mnemom verify-card is the operator-facing CLI for offline verification of a Mnemom-published canonical card’s AAP attestation token + Merkle inclusion proof. It needs no Mnemom credentials — only the agent_id and the public JWKS, both of which are publicly reachable.
Install
Verify the current live posture
~/.mnemom/cache/aap-jwks.json for 1 hour), and verifies the JWS signature + Merkle inclusion proof. The output is a machine-readable JSON envelope on stdout plus a care-framed status line on stderr.
Verify the historic posture at a specific time
composed_at is the greatest at-or-before the timestamp, then verifies the signed attestation + the inclusion proof. Works regardless of whether the token’s exp has passed — the log row’s signed_attestation continues to verify as long as the signing key is in the JWKS (active or retired-within-window).
Verify the protection card
alignment; pass --card-kind protection to verify the protection card’s identity instead.
Strict mode
--strict bypasses the JWKS cache (refetches /v1/.well-known/jwks.json every invocation) and exits non-zero on any verification gap (signature, expiry, proof, root signature). Use this in CI/CD pipelines that need a clean signal.
Custom API base
https://api.mnemom.ai. Use the --api flag to point at a staging or self-hosted Mnemom instance.
What gets verified
- JWS signature — Ed25519 over the canonical header + payload, against the matching
kidin the JWKS. - Token expiry —
now() < exp. (For--atqueries, this check is informational: the durable proof of historic posture is the transparency-log row, not the token’s TTL.) - Merkle inclusion proof — reconstructs the signed root from the leaf + sibling hashes.
findings[] array. The CLI exits 0 only when every check passes; non-zero on any gap (or when --strict and the JWKS fetch failed).
How verification works without credentials
The verifier needs:<api>/v1/.well-known/jwks.json— public; no auth.<api>/v1/agents/{id}/a2a-agent-card— public; no auth (per-agent opt-in gate).<api>/v1/transparency/log/{id}/...— public; no auth.<api>/v1/transparency/root— public; no auth.
Programmatic verification
If a CLI isn’t a fit, the verification logic is small and reproducible:- Parse the JWS into header + payload + signature (RFC 7515 base64url).
- Verify the Ed25519 signature against the matching key from the JWKS.
- Decode the payload and check
iss+exp. - Compute the Merkle leaf hash from
(agent_id, card_kind, content_hash, version, composed_at)and verify the inclusion proof against the signed root.