{
 "$comment": "Machine-readable Valyd capability matrix for AI agents. Each entry maps a real integration goal to a stable id, its path, product, auth, required credentials, whether it is billable, how PII is handled, whether a proof is saved to the user's Valyd account, and the agent-fetchable .md doc (root-relative; resolve against the docs host you fetched this file from). Valyd offers TWO products: the Unique Human API (no user account — create a workflow session with NO user token via verify.sessions.create({ workflowId, redirectUrl }), redirect the person to Valyd's verification page, and read the liveness/uniqueness verdict from the decision; the result returns to you, nothing saved to an account) and Reusable Verification (Connect with Valyd via standard OIDC, read the verified data the user consents to share, and run a configured workflow session for anything missing — passed proofs save to the user's Valyd ID and are reusable). Verification runs through the SDK only. Every field is derived from the Agent Integration Guide (/ai/agent-guide) and llms.txt — nothing here is invented. Credentials cannot be minted by an agent; a human creates apps/keys in the Developer Portal.",
 "version": "2",
 "source_of_truth": "openapi",
 "capabilities": [
  {
   "id": "connect",
   "goal": "Connect a user's verified Valyd identity (standard OIDC — also usable as sign-in) and read their account (profile, licenses, verification proofs)",
   "path": "Connect with Valyd (OIDC)",
   "product": "valyd-id",
   "auth": "client-credentials",
   "credential": "client_id + client_secret (server-side)",
   "billable": false,
   "pii_mode": "proofs",
   "saves_proof": false,
   "doc": "/docs/overview.md"
  },
  {
   "id": "reusable.read",
   "goal": "Read the proofs a connected user's account already holds (id_verified, age bands, licenses) — free, no check runs",
   "path": "Reusable Verification (Account API)",
   "product": "valyd-id",
   "auth": "oidc-bearer",
   "credential": "the user's Bearer valyd_access_token (from Connect with Valyd)",
   "billable": false,
   "pii_mode": "proofs",
   "saves_proof": false,
   "doc": "/docs/user-token.md"
  },
  {
   "id": "verification.workflow",
   "goal": "Reusable Verification: run your configured workflow for a CONNECTED user — create a session via the SDK with their valyd_access_token. ALL checks are available (ID/KYC, liveness, face match, age, professional license, face uniqueness, location); passed proofs save to their Valyd ID and the raw identity data stays encrypted with Valyd — you receive the decision + proofs, never raw PII.",
   "path": "Reusable Verification (workflow session)",
   "product": "valyd-verify",
   "auth": "sdk",
   "credential": "App key (SDK, server-side) + workflow_id + the user's valyd_access_token on the session",
   "user_token": true,
   "result": "proof",
   "checks": "all",
   "billable": true,
   "pii_mode": "proofs",
   "saves_proof": true,
   "doc": "/verify/reusable.md"
  },
  {
   "id": "unique-human.liveness",
   "goal": "Unique Human API — liveness: no user account. Create a session (NO user token) for a workflow with the anti-spoof check, redirect to Valyd's verification page (live camera burst with a random on-screen action), then read verify.sessions.decision() — the antispoof check data carries human_score (0–100). The result returns to your system; nothing is saved to a Valyd account.",
   "path": "Unique Human API — Liveness",
   "product": "valyd-verify",
   "auth": "sdk",
   "credential": "App key (SDK, server-side) + workflow_id",
   "user_token": false,
   "result": "raw",
   "checks": "liveness",
   "billable": true,
   "pii_mode": "standalone",
   "saves_proof": false,
   "doc": "/verify/unique-human/antispoof.md"
  },
  {
   "id": "unique-human.uniqueness",
   "goal": "Unique Human API — uniqueness: no user account. Create a session (NO user token) for a workflow with the face-uniqueness check, redirect to Valyd's verification page, then read verify.sessions.decision() — the face_uniqueness check data carries a stable valyd_uuid plus registered: 'new' | 'existing' for duplicate-account/sybil detection. The result returns to your system.",
   "path": "Unique Human API — Uniqueness",
   "product": "valyd-verify",
   "auth": "sdk",
   "credential": "App key (SDK, server-side) + workflow_id",
   "user_token": false,
   "result": "raw",
   "checks": "uniqueness",
   "billable": true,
   "pii_mode": "standalone",
   "saves_proof": false,
   "doc": "/verify/unique-human/face-uniqueness.md"
  },
  {
   "id": "organizations",
   "goal": "Onboard and control a workforce as organization members (face-activation, owner/admin/developer/member roles, per-seat billing); track who logged in via the valyd_org_member_id claim",
   "path": "Organizations",
   "product": "valyd-id",
   "auth": "client-credentials",
   "credential": "client_id + client_secret (Connect with Valyd) + Members API headers X-Client-Id / X-Client-Secret (server-side only)",
   "billable": true,
   "pii_mode": "proofs",
   "saves_proof": true,
   "doc": "/docs/organizations.md"
  }
 ]
}