A verifier is your own service. You embed the verifying core in your backend, or run it as a service next to it, and ask a holder, a person’s or an agent’s, to prove a fact. What comes back is a ten-second zero-knowledge presentation bound to your request and to proven chain state; what you keep is a minimal decision record, never the proof, never the person.
RUNRun it
pip install mintid-verifier-sdk
Python 3.12 or later, in your own backend or as a service next to it; the TypeScript client and the MCP server are transport-only and point at that service. MINTID_NETWORK=testnet reaches the public testnet, where a decision carries no weight.
PROOFWhat it proves, and what it does not
Proves
- The fact you asked, and nothing underneath: grade ≥ A3, over 18, credential active, a particular issuer, proven in zero knowledge against finalised chain state.
- That the answer is yours: bound to your verifier, your exact origin, your single-use challenge and your policy; valid ten seconds, never accepted twice.
- A decision with a reason code from a closed set, byte-identical in every SDK and client, so a refusal can be handled, not guessed.
Does not prove
- Not what the agent ran: which configuration it started with, where it ran, which calls it made. That is provenance, a different layer: glossary
- Not who the person is: no attribute beyond the fact you asked, and nothing of the proof or the person in your decision record.
- Not a decision taken for you: the clients and the MCP server carry no cryptography and no policy, and pointing them at somebody else’s verifier hands that party the decision.
EVIDENCEEvidence
Every claim of status on this page points at something public you can open or reproduce.