Quick prompts
Operations & monitoring (cross-app)- “Show me the last 5 in-review sessions across all my apps.” →
didit_session_search - “How many people tried phone verification but dropped off in the last 15 days?” →
didit_analytics(one call; reads the feature funnel) - “Find the customer with vendor_data
user_8842and tell me which app and status.” →didit_vendor_user_search - “What’s my credit balance and this month’s conversion rate?” →
didit_org_get_balance+didit_analytics
- “Create a KYC workflow with ID scan + liveness and give me a verification link.” →
didit_workflow_create→didit_session_create - “Create an ID-verification workflow that only accepts passports, then a selfie liveness.” →
didit_workflow_create— just saydocuments_allowed: ["PASSPORT"]; the MCP expands it to passport-only for every country (see Advanced → feature configs). - “New workflow: scan a passport; if the ID is declined, decline the session; if the stated profession is ≈ ‘Software Engineer’ (≥60%), run a liveness check; otherwise ask for proof of address in Spanish; then auto-decide.” →
didit_workflow_get_field_definitions→didit_workflow_validate_graph→didit_workflow_set_graph(a branch onkyc.statusplus afuzzy_matchonkyc.extra_fields.profession, with an else path to a POA step) - “In workflow
26d33c04…, after ID verification: if it’s declined, decline the session; if the profession is ≥80% similar to ‘Software Engineer’, add a proof-of-funds Document-AI step; then continue.” →didit_workflow_search→didit_workflow_get_graph→didit_workflow_edit_graph(small ops, saved as a reviewable draft — preserves the existing pipeline + allow-lists) - “Register a webhook for status updates and show me the signing secret.” →
didit_webhook_create
- “Screen this wallet for AML and add it to the blocklist if it hits.” →
didit_transaction_screen_wallet+didit_blocklist_add - “Open a case for session
…and assign it to me.” →didit_case_create→didit_case_manage
End-to-end: stand up verification
You: “Set up Didit identity verification for my app with ID scan and liveness.” Agent: I’ll create the workflow. (callsdidit_workflow_createwith ID scan + passive liveness) — Published “Standard KYC”,workflow_id = 6f2c…. Here’s how to create a session from your backend:Redirect the user toresponse.url. (Thatx-api-keyis your application’s REST API key, used by your backend to create sessions — it’s separate from how you signed in to this MCP, which uses Log in with Didit.) Want me to register the webhook destination too? You: “Yes — my endpoint ishttps://myapp.com/webhooks/didit.” Agent: (callsdidit_webhook_createwithwebhook_version: "v3",subscribed_events: ["status.updated"]) — Done. Store this signing secret asDIDIT_WEBHOOK_SECRET:whsec_…. Verify theX-Signature-V2header on each delivery before trusting it.
Session results are asynchronous
didit_session_create returns a session_id, a session_token, and a hosted url — but the verification hasn’t happened yet. The user opens url and completes the flow. The final decision arrives via:
- A
status.updatedwebhook (recommended), or didit_session_get_decision(polling, as a fallback).
node_id per entry:
id_verification, liveness) — they only ship when a destination is explicitly pinned to webhook_version: "V2". See Data models for the per-feature field reference and Advanced → Webhooks for verification and retry rules.
Pair it with the one-prompt integration
The MCP is great for running Didit. To have an agent write a full integration (backend route + frontend SDK + webhook handler + DB schema), hand it the Integration Prompt — it walks the seven steps and calls MCP tools to create the workflow, session, and webhook live.Tools reference
Everything the agent can call.
Advanced & troubleshooting
Scopes, cross-app behavior, webhooks, self-hosting.