<!-- markdown mirror of https://mintid.net/en/sdk/getting-started — generated at build time -->

> Verifier obligations before any code, the current installation channels, and the honest status of the pipeline and the proof engine.

index — 12 documents

1.  [overviewsdk/00](/en/sdk)
2.  [getting startedsdk/01](/en/sdk/getting-started)
    *   [before any code](#verifier-obligations)
    *   [installation channels](#installation)
    *   [current status](#current-status)
    *   [the 60-second mental model](#mental-model)
3.  [python sdksdk/02](/en/sdk/python)
4.  [service modesdk/03](/en/sdk/service-mode)
5.  [typescript clientsdk/04](/en/sdk/typescript-client)
6.  [mcp serversdk/mcp](/en/sdk/mcp-server)
7.  [conformancesdk/05](/en/sdk/conformance)
8.  [reason codessdk/06](/en/sdk/reason-codes)
9.  [adr-0001 · kyc trust modeladr/0001](/en/sdk/adr-0001-kyc-trust-model)
10.  [adr-0002 · packagingadr/0002](/en/sdk/adr-0002-packaging)
11.  [adr-0003 · multi-languageadr/0003](/en/sdk/adr-0003-multilanguage)
12.  [bip-0001 · contract freezebip/0001](/en/sdk/bip-0001-verifier-service-contract)

SDK docs · sdk/01

# Getting started

Verifier obligations before any code, the current installation channels, and the honest status of the pipeline and the proof engine.

## Before any code: become a verifier

Installing an SDK does not make you a verifier. The SDK _refuses_ to accept presentations for an unregistered identity — origin resolution runs against proven on-chain state on every single decision. Complete these first:

1.  **Register on-chain and pass verifier KYC** — `MsgRegisterVerifier`; your verifier record must be ACTIVE.
2.  **Register every exact origin you present from** — `MsgRegisterVerifierOrigin`, with periodic revalidation (`MsgRenewVerifierOrigin`). Origins are exact: no wildcards, one verifier per origin, so a lookalike domain can never impersonate you.
3.  **Register request-signing keys** — `MsgRotateVerifierKey`; the key that signs your challenges must be registered for your origin.
4.  **Plan your infrastructure**: chain access (any RPC node — answers are cryptographically verified, the node is never trusted — plus a trust-anchor header source), a crash-durable nonce store (the bundled SQLite store qualifies), a disciplined clock, and a place for the decision log.

## Installation channels

**Current channel (design partners):** the SDK is consumed from the repository at a tag — packaging as platform wheels is decided and implemented (the Rust proof engine compiles into the wheel at a pinned version; `pip install` needs no Rust toolchain), and the first tagged release follows the release checklist. Talk to us to integrate as a design partner today.

**Target channel:** `pip install mintid-verifier-sdk` from a package index (private first). One wheel per platform (Linux/macOS, x86\_64/arm64), CPython ≥ 3.12. The TypeScript client ships as `@mintid/verifier-client` (Node ≥ 20, ESM + types).

Every artifact records its pins — engine version, chain store-layout vector identity, SPEC revision, conformance-suite version — readable at runtime.

pythonsdk/01 · verbatim

```
from verifier_core.build import build_info
print(build_info())
```

## Current status — read before integrating

*   The **verification pipeline is real and complete**: the nine conditions, proven chain reads, nonce store, decision records, the service, the contract and the TS client all exist and are CI-gated by a shared conformance suite.
*   The **anonymous-credential proof engine is not yet live**: until the cryptographic core lands (a separately audited milestone), SDK builds carry a pinned _stub_ engine that **refuses every proof** — fail closed, loudly marked in the artifact's own metadata (`engine_pin` carries an explicit `+stub` pre-release suffix). You can build and test a full integration against injectable test doubles today; you cannot accept real anonymous proofs until the engine milestone ships.
*   Assurance grades (A1–A4) are decided by accepted issuers within council-approved tiers; MintID does not claim conformance to any external assurance framework.

## The 60-second mental model

sdk flow

your backendcreates challenge

signed challenge · 10 s

holder walletproof bound to your exact challenge

envelope · proof + outputs

verifier SDKdecision → your business logic

proven reads (ics23)

trust anchor

the chainreads proven or they don't count

one decision, one minimal decision record, per presentation

[previous← overview](/en/sdk)[nextpython sdk →](/en/sdk/python)

---
Source: https://mintid.net/en/sdk/getting-started · Getting started — MintID verifier SDK docs
