igrantio-eu-age-verificationlisted
Install: claude install-skill L3-iGrant/skills
# EU Age Verification (EUDI Wallet)
## When to use
Prove an age threshold (18, 21, 65, any `age_over_NN`) without revealing
birthdate or identity. The attestation is an **ISO/IEC 18013-5 mdoc**,
doctype **`eu.europa.ec.av.1`**, with boolean `age_over_NN` claims and
selective disclosure.
**Before you build**: run the integrator intake in `igrantio-ows-overview` - environment, API key, tenancy, backend host, webhooks, frontend - one question at a time, a recommended default with each.
## Workflow
**Issuer side (once per user):**
1. Create a credential definition: format `mso_mdoc`, doctype
`eu.europa.ec.av.1`, claims such as `age_over_18`, `age_over_21`,
`age_over_65`.
2. Issue **InTime** with the boolean claim values, e.g.
`{ "age_over_18": true, "age_over_21": false, "age_over_65": false }`.
The response carries `CredentialExchangeId` + the
`openid-credential-offer://` QR/deeplink (render with
`igrantio-qr-code`). Completion signal: webhook
`openid.credential.credential_acked`.
**Verifier side (per check):**
3. Create a presentation definition (DCQL) for `mso_mdoc` /
`eu.europa.ec.av.1` requesting only the needed boolean, e.g.
`age_over_18`.
4. Send the verification request (v3) with that
`presentationDefinitionId`; render the `openid4vp://` QR / deeplink.
5. Wallet discloses only the boolean; done on
`openid.presentation.presentation_acked.v3` with `verified === true`.
Endpoints, payload shapes, and response fields: `igrantio-ows-overvie