Didit MCP Server
me.diditPublished by didit.meOfficial publisherv5.0.1Updated Oct 24, 2026
KYC, KYB, AML, wallet screening, transaction monitoring, and fraud workflows for AI agents.
Overview
Didit's hosted MCP server lets an AI assistant run KYC, KYB, AML, wallet screening and fraud workflows and manage verification sessions in a Didit workspace.
- What you can do
- Search and inspect sessions, transactions, vendor users and cross-app analytics, and create or update sessions with reviews, bulk import and webhook logs and resends. Run verification checks such as ID, AML, face match and KYB registry search. Build and edit branching verification workflows, including feature configuration and country catalog lookups. Manage compliance: transaction monitoring, rules with backtesting, lists, cases, reports, audit logs and alerts. Administer the workspace: questionnaires, webhooks, members, billing and branding.
- When to use it
- Use it when an assistant should operate a Didit identity-verification workspace: triaging sessions, running checks, configuring workflows or handling compliance cases, without writing REST calls by hand.
- Requirements
- Remote endpoint at mcp.didit.me over streamable HTTP. OAuth sign-in through the Didit console in a browser on first connect; no API-key mode. A Didit account with the relevant organization role. File inputs use base64 against the hosted endpoint; path inputs only work for local runs. Self-hosting needs Docker or Node.
Installation
In SourceWeft
- Open Didit MCP Server in the dashboard and add it to a workspace.
- Connect the required credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/me.didit%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.
{
"mcpServers": {
"didit": {
"type": "http",
"url": "https://mcp.didit.me/mcp"
}
}
}README
Didit MCP Server
The official Model Context Protocol server for Didit — bring KYC, KYB, AML screening, transaction monitoring, biometrics, and full workspace operations to Claude, Cursor, VS Code, Windsurf, Zed, and any MCP client.
- 140+ tools across sessions, workflows, vendor users/businesses, transactions, networks, the standalone verification APIs, lists, cases, reports, webhooks, and billing.
- Auth is "Log in with Didit" (OAuth 2.1 + PKCE) — the MCP acts as the signed-in user with their role's permissions. There is no API-key mode: every tool calls the user-scoped console endpoints, which only accept a Bearer token.
- Tools call Didit REST endpoints. Session PDF generation returns a temporary download URL for the original PDF.
Full documentation: https://docs.didit.me/integration/mcp/overview
Session PDF downloads
didit_session_generate_pdf returns download_url, expires_at (UTC), and
expires_in (300 seconds). Fetch the URL without an Authorization header to save
the original Didit PDF. The server checks PDF access before issuing the link and
fetches the original report again at download time using the same user and organization.
It does not reconstruct the report from session data. If the session changes between
issuance and download, the download reflects the current report. Revoked or expired
user access can invalidate a link before its five-minute expiry.
Deployments must set MCP_PDF_DOWNLOAD_KEY to 32 cryptographically random bytes
encoded as 64 hexadecimal characters, shared across all replicas, and set
MCP_RESOURCE_URI to the public HTTPS MCP endpoint. Route
/downloads/session-report.pdf to this HTTP server. The authenticated-encryption
key protects the credentials embedded in the session-scoped link; rotating it
invalidates outstanding links. Treat links as secrets and redact the token query
parameter in proxy/access logs. Responses use Cache-Control: no-store.
Stdio deployments need a reachable HTTP deployment with the same key, API base URL,
and MCP_RESOURCE_URI; stdio alone cannot serve download links. Missing key
configuration produces an actionable tool error instead of inline PDF data.
Quick start
Hosted (recommended)
No install, no API key — point your client at the hosted URL and sign in via the browser:
Claude Code
Cursor (~/.cursor/mcp.json)
Windsurf / Zed (via the mcp-remote bridge)
See per-client setup for Claude Desktop and VS Code.
Authentication
The MCP is an OAuth 2.1 resource server; the Didit console (business.didit.me) is the authorization server. On first connect your client opens a browser, you Log in with Didit and approve the scopes, and the MCP then acts as you — across every organization you belong to, with your role's permissions. Tokens are short-lived and refreshed automatically.
Scopes: didit:management (workspace operations), didit:verification (running checks) and didit:staff (Didit staff accounts only; the authorization server never issues it to anyone else). Your console role is enforced server-side on every call.
There is no API-key mode. Every tool targets the user-scoped console endpoints (
/organization/{org}/application/{app}/…), which authorize a Bearer token with per-role privileges and rejectx-api-key. (For raw REST access with an application API key — e.g. creating sessions from your backend — use the REST API directly, not this server.)
See Authentication.
Tools
140+ tools, grouped by area. The full catalogue with read/write/destructive markers is in docs/TOOLS.md and at docs.didit.me. Highlights:
- Discovery & cross-app:
didit_context_get,didit_session_search,didit_transaction_search,didit_vendor_user_search,didit_analytics— aggregate across every org/app in one call. - Sessions: create, list, get decision, update status, reviews, bulk import, webhook delivery log + resend (
didit_session_webhookswaits for a sandbox session's webhook so an integration can be verified end to end). - Verification APIs:
didit_verify_id,didit_verify_aml,didit_verify_face_match,didit_verify_kyb_search, … - Workflows (incl. branching graphs):
didit_workflow_search,didit_workflow_get_graph,didit_workflow_edit_graph— build conditional/branching workflows (fuzzy-match conditions, Document-AI steps) by sending small ops; large feature configs are kept server-side, never resent.didit_workflow_get_id_verification_methods_cataloganddidit_workflow_get_kyb_registry_cataloganswer the server-driven questions a config write depends on (which countries offer non-doc lookup / wallets, which KYB data tiers and monitoring a country's registries sell). - Compliance: transaction monitoring, custom and preset rule management with backtesting, lists/blocklist/allowlist, cases, reports, audit logs, alerts.
- Workspace: questionnaires, webhooks, members, billing, branding.
File inputs
Tools that consume files (face upload, ID/PoA/liveness/face/age verification, branding) accept the file in one of two forms:
*_path— an absolute path on the machine running the MCP server. Only works for local/stdio runs (e.g. Claude Code with a local server), where your files and the server share a filesystem.*_base64— the file content inline, as raw base64 or adata:URL. Use this against the hosted endpoint; it is how the Didit Console Copilot passes chat attachments (its agent resolves attachment references likeatt_1into base64 before the call reaches the MCP).
Both forms enforce the same 15MB cap and magic-bytes allow-list (png/jpg/jpeg/webp/gif/bmp/ico/pdf). The hosted transport's JSON body limit is 25MB (MCP_JSON_BODY_LIMIT).
Run it yourself
The hosted server above is the easy path — no install. To self-host, clone this repo and run it with Docker or Node. It authenticates the user the same way (OAuth, or a user Bearer token for headless runs); there is no API-key mode.
All Didit base URLs and OAuth endpoints are environment variables with public defaults (verification.didit.me, apx.didit.me, business.didit.me) — override them for a private deployment. See ARCHITECTURE.md and .env.example for the full reference.
Workflow feature configuration
Every workflow feature node takes a config object. The tables below are the complete
contract - what didit_workflow_create, didit_workflow_update, didit_workflow_validate_graph,
didit_workflow_set_graph and didit_workflow_edit_graph accept, and what the API stores.
A key that is not listed here is not part of the contract and is dropped silently on save.
didit_workflow_get_feature_config_schema returns the same data as JSON at runtime.
Generated from schema/feature-config-schema.json (contract sha256:a2c413a50107faf3ea47fa187089a930ac17d3d04893e24176f494a58470e982, schema version 1), which is a copy of the artifact service-didit-verification generates from its feature-config serializers. Do not edit by hand — run npm run schema:readme.
AGE_ESTIMATION
Configuration for Age Estimation feature.
AML
Configuration for AML feature (used for both KYC AML and KYB Company AML).
BANK_VERIFICATION
Configuration for Bank Verification feature.
Bank Verification confirms who owns a bank account against an identity ANOTHER step established - it is not identity proof on its own. Put ID Verification, Database Validation or a questionnaire before it; first in a graph it has nothing to compare against and can only return
unknown. The node is opt-in and runs nothing whilebank_countriesis empty.
DATABASE_VALIDATION
Configuration for Database Validation feature.
The node is opt-in and does nothing while
database_validation_countriesis empty - the editor blocks publishing in that state and the compliance check reports it as a gap. Place it after the step that produces its inputs (usually OCR), and usedatabase_validation_field_sourcesonly for inputs no upstream step can fill.
DOCUMENT_AI
Configuration for the Document AI feature.
At most 3 documents per node, field keys unique within a document, and at most one field per document may set
is_full_name(it is optional - a document may mark none).
EMAIL_VERIFICATION
Configuration for Email Verification feature.
FACE_MATCH
Configuration for Face Match feature.
GEOLOCATION
Configuration for the Precise Location (GEOLOCATION) feature. Every threshold is bounded here rather than in the client: the browser and the native SDKs are told what to collect by the step data this config produces, and a value the server would refuse must never reach a user as a request their device cannot satisfy. The action keys all default to Review rather than Decline. A denied permission, a wide radius or a stale fix is not evidence of fraud, and a default that declined them would make the step a conversion trap.
IP_ANALYSIS
Configuration for Device & IP Analysis feature.
KYB_DOCUMENTS
KYB_KEY_PEOPLE
The workflow ids here point at separate KYC workflows: a KYB graph verifies the company, and the people behind it are verified by the linked person workflows.
KYB_REGISTRY
LIVENESS
Configuration for Liveness feature.
NFC
Configuration for NFC/ePassport feature.
OCR
Configuration for OCR/ID Verification feature.
Omitting
documents_allowedstores the full country/document catalog, so the node accepts everything. Put OCR before any feature that reads identity data from the document (FACE_MATCH, NFC, DATABASE_VALIDATION).
PHONE_VERIFICATION
Configuration for Phone Verification feature.
PROOF_OF_ADDRESS
Configuration for Proof of Address feature.
QUESTIONNAIRE
Configuration for Questionnaire feature.
Contributing
The feature-config contract above is generated - never hand-write a config key into a tool description. See CONTRIBUTING.md for the regeneration workflow and the checks that enforce it.
Issues and PRs welcome — see CONTRIBUTING.md. Run the hosted server at mcp.didit.me/mcp, or self-host from this repo (Docker / Node) — see Run it yourself.
License
MIT © Didit Protocol
Source: README.md at commit b8c8e77
Tools
0Version history
1- v5.0.1LatestSep 16, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
