mcpField
D
Didit MCP Server

Didit MCP Server

远程服务
didit.me安全16 天前更新

关于 Didit MCP Server

Didit MCP Server 向 AI Agent 和 MCP 客户端提供身份验证、合规、交易监控及工作区操作能力。其 140 多个工具通过 OAuth 2.1 和 PKCE 以已登录 Didit 用户的角色权限执行,而非使用 API 密钥。

主要功能

  1. 01管理验证会话和工作流
  2. 02执行身份、AML、人脸和 KYB 检查
  3. 03搜索交易、用户和组织
  4. 04管理合规规则、案件和报告
  5. 05操作工作区成员、Webhook 和账单
  6. 06生成会话 PDF 下载链接

适用场景

  1. 01执行身份和企业验证检查
  2. 02审查交易并管理合规案件
  3. 03配置带分支的验证工作流
  4. 04通过 MCP 客户端操作 Didit 工作区

MCP 相关

该服务向 MCP 客户端提供 140 多种 Didit 工具,涵盖验证、合规和工作区操作。用户通过 OAuth 2.1 和 PKCE 登录,调用权限遵循其组织角色。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.didit.me/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

Didit MCP 服务

面向 Didit 的官方 Model Context Protocol 服务 — 为 Claude、Cursor、VS Code、Windsurf、Zed 和任何 MCP 客户端提供 KYC、KYB、AML 筛查、交易监控、生物识别以及完整的工作区操作能力。

  • 140 多个工具,涵盖会话、工作流、供应商用户/企业、交易、网络、独立验证 API、名单、案件、报告、Webhook 和账单。
  • 身份验证采用“使用 Didit 登录”(OAuth 2.1 + PKCE) — MCP 以已登录的用户身份运行,并拥有其角色对应的权限。不提供 API 密钥模式:每个工具都会调用用户范围的控制台端点,这些端点只接受 Bearer 令牌。
  • 工具会调用 Didit REST 端点。会话 PDF 生成工具会返回原始 PDF 的临时下载 URL。

完整文档:https://docs.didit.me/integration/mcp/overview

会话 PDF 下载

didit_session_generate_pdf 会返回 download_url、expires_at(UTC)和 expires_in(300 秒)。获取该 URL 时无需添加 Authorization 标头,即可保存 Didit 原始 PDF。服务会在发放链接前检查 PDF 访问权限,并在下载时使用相同的用户和组织 再次获取原始报告。它不会根据会话数据重建报告。如果会话在链接发放与下载之间发生变化, 下载的内容会反映当前报告。用户访问权限被撤销或过期时,链接可能会在五分钟有效期 结束前失效。

部署时必须将 MCP_PDF_DOWNLOAD_KEY 设置为由 32 个加密安全的随机字节编码而成的 64 个十六进制字符,并在所有副本间共享;同时将 MCP_RESOURCE_URI 设置为公开的 HTTPS MCP 端点。将路由 /downloads/session-report.pdf 指向此 HTTP 服务。用于认证加密的密钥会保护会话范围链接中嵌入的凭据;轮换该密钥 会使未过期的链接失效。请将链接视为机密信息,并在代理/访问日志中 屏蔽 token 查询参数。响应使用 Cache-Control: no-store。

Stdio 部署需要一个可访问的 HTTP 部署,并使用相同的密钥、API 基础 URL 和 MCP_RESOURCE_URI;仅使用 stdio 无法提供下载链接。缺少密钥 配置时,工具会返回可执行的错误提示,而不是内嵌 PDF 数据。

快速开始

托管版(推荐)

无需安装,也无需 API 密钥 — 将客户端指向托管 URL,然后通过浏览器登录:

https://mcp.didit.me/mcp

Claude Code

claude mcp add --transport http didit https://mcp.didit.me/mcp

Cursor(~/.cursor/mcp.json)

{ "mcpServers": { "didit": { "url": "https://mcp.didit.me/mcp" } } }

Windsurf / Zed(通过 mcp-remote 桥接)

{ "mcpServers": { "didit": { "command": "npx", "args": ["-y", "mcp-remote@latest", "https://mcp.didit.me/mcp"] } } }

请参阅各客户端的设置说明,了解 Claude Desktop 和 VS Code 的配置方法。

身份验证

MCP 是一个 OAuth 2.1 资源服务器;Didit 控制台(business.didit.me)是授权服务器。首次连接时,客户端会打开浏览器,你使用 Didit 登录并批准所需权限范围,然后 MCP 便会以你的身份运行 — 覆盖你所属的所有组织,并遵循你的角色权限。令牌有效期较短,并会自动刷新。

权限范围:didit:management(工作区操作)、didit:verification(运行检查)和 didit:staff(仅适用于 Didit 员工账户;授权服务器绝不会向其他人发放此权限)。每次调用时,服务器都会强制执行你在控制台中的角色权限。

不提供 API 密钥模式。 每个工具都会调用用户范围的控制台端点(/organization/{org}/application/{app}/…);这些端点会根据角色权限验证 Bearer 令牌,并拒绝 x-api-key。(如需使用应用 API 密钥直接访问 REST API — 例如从后端创建会话 — 请直接使用 REST API,而非此服务。)

请参阅身份验证。

工具

140 多种工具,按领域分组。完整目录及读/写/破坏性操作标记见 docs/TOOLS.md 和 docs.didit.me。亮点:

  • 发现与跨应用: didit_context_get、didit_session_search、didit_transaction_search、didit_vendor_user_search、didit_analytics——一次调用即可汇总每个组织/应用的数据。
  • 会话: 创建、列出、获取决策、更新状态、审核、批量导入、Webhook 交付日志和重新发送(didit_session_webhooks 会等待沙盒会话的 Webhook,以便端到端验证集成)。
  • 验证 API: didit_verify_id、didit_verify_aml、didit_verify_face_match、didit_verify_kyb_search、…
  • 工作流(包括分支图): didit_workflow_search、didit_workflow_get_graph、didit_workflow_edit_graph——通过发送小型操作来构建条件/分支工作流(模糊匹配条件、Document-AI 步骤);大型功能配置保留在服务端,不会重复发送。didit_workflow_get_id_verification_methods_catalog 和 didit_workflow_get_kyb_registry_catalog 可回答配置写入所依赖的服务端问题(哪些国家提供非文档查询/钱包,以及哪些 KYB 数据层级和监控服务可由该国注册机构提供)。
  • 合规: 交易监控、自定义和预设规则管理及回测、名单/封锁名单/许可名单、案件、报告、审计日志、警报。
  • 工作区: 问卷、Webhook、成员、账单、品牌设置。
文件输入

使用文件的工具(人脸上传、ID/PoA/活体/人脸/年龄验证、品牌设置)支持以下两种文件形式:

  • *_path——运行 MCP 服务的机器上的绝对路径。仅适用于本地/stdio 运行(例如使用本地服务的 Claude Code),此时文件和服务共用同一文件系统。
  • *_base64——内联的文件内容,可以是原始 base64,也可以是 data: URL。将其用于托管端点;Didit Console Copilot 会以此方式传递聊天附件(其 Agent 会在调用到达 MCP 之前,将 att_1 等附件引用解析为 base64)。

两种形式都受相同的 15MB 上限和文件魔数白名单限制(png/jpg/jpeg/webp/gif/bmp/ico/pdf)。托管传输的 JSON 正文大小上限为 25MB(MCP_JSON_BODY_LIMIT)。

自行运行

上面的托管服务是最简单的方式,无需安装。若要自托管,请克隆此仓库,并使用 Docker 或 Node 运行。用户认证方式相同(OAuth,或无头运行时使用用户 Bearer token);不支持 API 密钥模式。

git clone https://github.com/didit-protocol/mcp.git && cd mcp

# Docker (recommended) — serves /mcp and /healthz on port 3000
docker build -t didit-mcp . && docker run -p 3000:3000 --env-file .env didit-mcp

# …or with Node
npm install && npm run build
node dist/http.js                                          # hosted HTTP/OAuth
DIDIT_ACCESS_TOKEN=<user-access-token> node dist/index.js  # stdio (headless)

所有 Didit 基础 URL 和 OAuth 端点都是环境变量,且带有公开默认值(verification.didit.me、apx.didit.me、business.didit.me)——可为私有部署覆盖这些值。完整参考请参阅 ARCHITECTURE.md 和 .env.example。

工作流功能配置

每个工作流功能节点都需要一个 config 对象。下表列出了完整的 契约——didit_workflow_create、didit_workflow_update、didit_workflow_validate_graph、 didit_workflow_set_graph 和 didit_workflow_edit_graph 接受的内容,以及 API 存储的内容。 此处未列出的键不属于契约,保存时会被静默丢弃。

didit_workflow_get_feature_config_schema 会在运行时以 JSON 形式返回相同数据。

由 schema/feature-config-schema.json 生成(契约 sha256:a2c413a50107faf3ea47fa187089a930ac17d3d04893e24176f494a58470e982,架构版本 1)。该文件是 service-didit-verification 根据其功能配置序列化器生成的产物副本。请勿手动编辑——运行 npm run schema:readme。

AGE_ESTIMATION

年龄估算功能的配置。

键类型接受值含义
borderline_maximum_age_thresholdinteger | nullinteger >=1 <=100
borderline_minimum_age_thresholdinteger | nullinteger >=1 <=100
enable_id_verification_fallbackboolean | nullboolean
external_capture_device_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'检测到外部采集设备时的判定。
face_audio_recording_enabledboolean | nullboolean自拍采集期间录制麦克风音频,以便审核人员听取采集过程。默认关闭。
face_liveness_duplicated_face_document_mismatch_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'对使用不同出生日期验证的用户发现重复人脸时的判定。同一人的另一份证件(例如先使用身份证,再使用护照、证件续期或另一国家的证件)不会被标记。
face_liveness_duplicated_face_name_mismatch_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'以不同姓名发现重复人脸时的判定。
face_liveness_flash_modestring | nullstring
face_liveness_max_attemptsinteger | nullinteger >=1 <=3
face_liveness_methodstring | null'ACTIVE_3D'|'FLASHING'|'PASSIVE'
face_liveness_multiple_faces_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'采集中出现多张人脸时的判定。
face_liveness_possible_duplicated_face_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'此人脸与先前出现过的用户匹配时的判定。
face_liveness_score_decline_thresholdnumber | nullnumber
face_liveness_score_review_thresholdnumber | nullnumber
face_liveness_uncertain_retry_enabledboolean | nullboolean仅适用于原生 SDK 主动活体检测。开启后,如果采集的活体检测分数严格介于 face_liveness_score_decline_threshold 和 face_liveness_score_review_threshold 之间,无论引擎为其附加了何种判定,都不会作出最终判定:系统会告知用户结果不明确,并要求重新采集。此操作每次都会进行,且不计入 face_liveness_max_attempts 限额(该限额仍适用于引擎无法评分的采集)。默认关闭;Web 流程会忽略此设置。
face_liveness_video_anomaly_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'存储的活体检测录像中包含重复移动序列,且与循环视频流相符时的判定。此项由服务器直接根据视频检测,与活体检测分数无关。此设置有意不标记冻结或几乎没有动作的采集:帧统计数据无法区分注入的静止画面与真实画面(例如主体保持静止,或闪光导致曝光过度),因此据此采取行动会拒绝真实用户。冻结或预录制的注入视频流应通过严格闪光活体检测来防范(将 face_liveness_flash_mode 设为 "1" 即可启用严格模式),该模式会将采集与每个会话独有的颜色序列挑战绑定,录像无法复现此挑战。默认为 NO_ACTION(记录证据,但不更改判定)。
face_luminance_max_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'自拍亮度高于 face_luminance_max_threshold 时的判定。
face_luminance_max_thresholdinteger | nullinteger >=0 <=100
face_luminance_min_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'自拍亮度低于 face_luminance_min_threshold 时的判定。
face_luminance_min_thresholdinteger | nullinteger >=0 <=100
face_privacy_mode_enabledboolean | nullboolean
face_quality_decline_thresholdinteger | nullinteger >=0 <=100
face_quality_review_thresholdinteger | nullinteger >=0 <=100
face_search_enabledboolean | nullboolean对自拍执行 1:N 人脸搜索:将其与先前验证的用户、人脸黑名单和白名单进行匹配,并存储其生物特征模板以供后续匹配。默认开启。关闭后会跳过搜索、不保留人脸模板,并导致重复人脸操作无可处理对象。
frame_injection_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'检测到注入视频帧时的判定。
minimum_age_thresholdinteger | nullinteger >=1 <=100
screen_capture_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'自拍为屏幕照片时的判定。
status_rulesarrayarray
virtual_camera_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'检测到虚拟摄像头视频流时的判定。
AML

AML 功能的配置(用于 KYC AML 和 KYB Company AML)。

键类型接受值含义
aml_country_weightinteger | nullinteger >=0 <=100
aml_dob_weightinteger | nullinteger >=0 <=100
aml_entity_typestring | null'company'|'person'此节点筛查的是 person 还是 company。在个人(KYC)工作流中默认为 person,在企业(KYB)工作流中默认为 company。将其设为 company,即可通过已上传的文档(经由 aml_field_sources)筛查其中所列的企业,而无需 KYB Registry 步骤——服务提供商会搜索企业记录而不是个人记录,并按企业对匹配分数进行评分。
aml_field_sourcesjson | null{"full_name"|"date_of_birth"|"nationality"|"document_number": {"source": "document_ai"|"questionnaire"|"expected_data", "key": "||expected_details.<expected_details field>|metadata."}}当工作流中没有 ID Verification 或 KYB Registry 步骤可提供被筛查实体时,此节点从此处读取该实体——适用于对非标准化文档(税务证明、acta constitutiva)进行 Document AI 处理的工作流。与 database_validation_field_sources 使用相同的约定:source 指明数据来源,key 指明其中的值;对于 document_ai,它是 Document AI 字段键;对于 questionnaire,它是问卷节点 ID;对于 expected_data,它是 expected_details.<field> 或 metadata.<key>。映射的键是四个 AML 筛查输入之一:full_name、date_of_birth、nationality、document_number;对于企业,分别读取公司法定名称、成立日期、国家和注册号。已使用这四个键之一的 Document AI 字段会自动映射,并且有意不进行持久化,因此重命名字段不会导致过期映射被固定。显式映射优先于自动映射和身份证件;如果映射在运行时无法解析为值,该输入将留空,而不会回退。若上游没有 ID Verification 和 KYB Registry,则必须能够填入 full_name,否则保存时会拒绝该图:没有名称就无法搜索。
aml_incomplete_data_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'筛查使用的身份信息不完整(缺少姓名、出生日期或国家)时的判定结果。默认值 REVIEW,也是历史行为;对于明确只持有姓名的工作流,NO_ACTION 会使用不完整数据继续处理。无论设置为何,筛查都会运行,并且仍会记录数据不完整日志——此设置只决定它如何影响状态。
aml_match_score_thresholdinteger | nullinteger >=0 <=100
aml_name_weightinteger | nullinteger >=0 <=100
aml_score_approve_thresholdinteger | nullinteger >=0 <=100
aml_score_review_thresholdinteger | nullinteger >=0 <=100
case_blueprintuuid | nulluuid自动创建的案例使用哪个案例蓝图。仅在启用 create_cases_on_hit 时有效;未设置时使用账户默认值。
create_cases_on_hitboolean | nullboolean筛查命中时自动创建案例,而不是将命中留待从会话中进行分类。默认关闭。
fallback_to_nativeboolean | nullboolean
is_aml_ongoing_monitoring_enabledboolean | nullboolean会话获批后,继续筛查此 PERSON;当其之后出现在监控名单上时,生成新的命中。默认关闭。
kyb_company_aml_country_weightinteger | nullinteger >=0 <=100
kyb_company_aml_dob_weightinteger | nullinteger >=0 <=100
kyb_company_aml_match_score_thresholdinteger | nullinteger >=0 <=100
kyb_company_aml_name_weightinteger | nullinteger >=0 <=100
kyb_enable_ongoing_monitoringboolean | nullbooleanKYB 工作流中对 COMPANY 进行相同设置。两个开关相互独立。
kyb_score_approve_thresholdinteger | nullinteger >=0 <=100
kyb_score_review_thresholdinteger | nullinteger >=0 <=100
provider_keystring | nullstring
status_rulesarrayarray
BANK_VERIFICATION

银行验证功能的配置。

银行验证用于确认银行账户的所有者是否与通过其他步骤确认的身份一致——它本身不能证明身份。请在它之前添加 ID Verification、Database Validation 或问卷;如果它是流程图中的第一个节点,就没有可供比对的信息,只能返回 unknown。此节点需显式启用;bank_countries 为空时不会运行任何操作。 | 键 | 类型 | 接受值 | 含义 | | --- | --- | --- | --- | | bank_account_selection | string | null | 'auto'|'user' | 由用户选择要验证的已连接账户(user),还是使用第一个符合条件的账户(auto)。 | | bank_allow_skip | boolean | null | boolean | 允许用户跳过此步骤,而不连接银行。跳过后的处理方式由 bank_skipped_action 决定。 | | bank_attempts_exhausted_action | string | null | 'REVIEW'|'DECLINE' | 用户用完 bank_max_attempts 次尝试仍未成功连接时的判定结果。 | | bank_business_account_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 金融机构将账户持有人识别为企业而非个人时的判定结果。 | | bank_connection_timeout_minutes | integer | null | integer >=5 <=60 | 已开始的连接在尝试放弃前保持开启的时长,范围为 5 至 60 分钟。 | | bank_consent_expired_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 此步骤已作出判定后,银行授权过期时的判定结果。仅在启用 bank_refresh_enabled 时有意义。 | | bank_countries | json | null | {"": {"enabled": true|false, "institutions": ["<institution_id>", ...] | "all"}} | 用户可以在哪些国家连接银行的白名单;空映射表示此节点不提供任何选项,也不执行任何操作。institutions 会将选择器限制为指定的服务提供商机构 ID;"all" 则提供该国家所有支持身份验证的银行。覆盖范围取决于节点在 provider_key 中选定的路由:如果原生路由或已连接的市场平台服务提供商无法确认某个国家的账户所有权,保存时会拒绝该国家,而不是将其丢弃,因为连接一个无法返回持有人身份信息的银行会消耗一次尝试和一笔费用,最终结果却是 not_verifiable。 | | bank_country_mismatch_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 金融机构所在国家与预期国家/证件国家不一致时的判定结果。 | | bank_currency_mismatch_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 账户币种不在 bank_expected_currencies 中时的判定结果。 | | bank_eligible_account_types | array | null | array | 用户可以选择的账户类型。信用卡、贷款和投资账户永远不符合条件,因为它们无法证明支付账户的所有权。默认为活期/支票账户。 | | bank_expected_currencies | array | null | array | 账户预期使用的 ISO 4217 币种。留空表示接受任意币种;币种不匹配时会通过 bank_currency_mismatch_action 报告。 | | bank_field_sources | json | null | {"full_name"|"first_name"|"last_name"|"address": {"source": "document_ai"|"questionnaire"|"expected_data", "key": "||expected_details.<expected_details field>|metadata."}} | 当工作流中没有更早的步骤能提供参考身份信息时,从何处读取该信息字段。映射中的键必须是 full_name、first_name、last_name、address 之一;source 指明数据生成方,key 指明其中的值:对于 document_ai,是 Document AI 字段键;对于 questionnaire,是问卷节点 ID;对于 expected_data,是 expected_details.<field> 或 metadata.<key>。expected_details.<field> 值只能指定会话创建负载实际携带的字段:address、country、date_of_birth、first_name、gender、id_country、identification_number、ip_address、last_name、nationality 或 poa_country。格式错误的条目会在保存时被拒绝,而不会被丢弃。 | | bank_joint_account_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 账户有多个持有人时的判定结果。 | | bank_low_balance_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 可用余额低于 bank_min_balance 时的判定结果。需要 balances 权限范围。 | | bank_max_attempts | integer | null | integer >=1 <=5 | 用户可尝试连接的次数,范围为 1 至 5。用完所有次数仍未成功连接时,将执行 bank_attempts_exhausted_action。 | | bank_min_balance | number | null | number >=0 | 账户自身币种的最低可用余额。余额低于此值时会触发 bank_low_balance_action。需要 balances 权限范围;未启用该权限范围时,保存会被拒绝。0 是有效的阈值:透支账户会触发相应操作;但该操作默认为 NO_ACTION,因此除非另行配置其他操作,否则判定结果不会改变。这与不填写此键不同。 | | bank_name_match_threshold | integer | null | integer >=50 <=100 | 持有人姓名得分达到或超过此值时视为匹配。范围为 50 至 100,默认值为 85。 | | bank_no_match_action | string | null | 'REVIEW'|'DECLINE' | 有明确证据表明账户持有人并非已验证人员时的判定结果(最高姓名得分低于 bank_partial_match_floor)。 | | bank_not_verifiable_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 金融机构已连接,但未返回可用于比较的持有人身份信息时的判定结果。 | | bank_partial_match_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 持有人姓名得分介于 bank_partial_match_floor 和 bank_name_match_threshold 之间时的判定结果。默认情况下,绝不会判定为通过。 | | bank_partial_match_floor | integer | null | integer >=0 <=99 | 持有人姓名得分低于此值时视为不匹配。范围为 0 至 99,默认值为 70。下限与阈值之间的区间为部分匹配,因此下限必须严格小于 bank_name_match_threshold,否则保存会被拒绝。此处显式设为 null 也表示“使用默认值”,因此若阈值为 50 且未设置下限,保存会被拒绝:校验时会使用默认下限 70。 | | bank_reference_identity | string | null | 'auto'|'database_validation'|'expected_details'|'kyc'|'questionnaire' | 指定较早的哪个步骤提供用于与账户持有人进行比对的身份信息:kyc(身份验证)、database_validation、expected_details(会话创建负载)、questionnaire,或 auto(使用工作流生成的任意身份信息)。实际提供身份信息的步骤会在结果中记录为 reference_identity_source。 | | bank_reference_identity_missing_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 没有较早的步骤生成可用于比对持有人身份的信息,因此只能将所有权判定为 unknown 时的判定结果。 | | bank_refresh_enabled | boolean | null | boolean | 在此步骤已作出判定后,只要银行授权仍有效,就重新获取账户财务数据。至少需要 balances、transactions 或 income 权限范围之一;未启用其中任何一项时,保存会被拒绝。之后授权过期时,将执行 bank_consent_expired_action。 | | bank_require_address_match | boolean | null | boolean | 同时要求持有人地址匹配。姓名得分达到阈值,但地址得分低于阈值时,结果将降为部分匹配。金融机构未返回地址时,会豁免此要求;如果会话本身没有可供比对的地址,则不会豁免,结果将为部分匹配。默认关闭。 | | bank_require_oauth_only | boolean | null | boolean | 只提供可通过 OAuth/应用间方式访问的机构,不提供服务提供商的传统凭据采集方式。如果开放银行机制本身已只支持 OAuth,则此设置不会产生影响。 | | bank_scopes | json | null | {"ownership": true, "identifiers": true|false, "balances": true|false, "transactions": true|false, "income": true|false} | 询问用户是否同意分享哪些信息。ownership 是产品要验证的内容,无法关闭。identifiers 会显示 IBAN/账户号码;balances、transactions 和 income 会读取真实财务数据,每项均单独计费;除非应用具有 bank_financial_data 权限,否则保存会被拒绝。关闭的权限范围绝不会向服务提供商请求,因此银行不会在授权页面上显示该项。 | | bank_show_match_result_to_user | boolean | null | boolean | 在验证流程中向用户显示所有权验证结果。关闭时,结果会记录在会话中,但绝不会向用户显示。 | | bank_skipped_action | string | null | 'REVIEW'|'DECLINE' | 用户跳过此步骤时的判定结果。仅在启用 bank_allow_skip 时可用。 | | bank_store_full_identifiers | boolean | null | boolean | 以未遮盖形式存储账户标识符,而非遮盖后的形式。需要 identifiers 权限范围;未启用时,保存会被拒绝。即使启用,只有持有银行验证读取权限的调用方才能获取未遮盖的形式。 | | bank_store_raw_owner_data | boolean | null | boolean | 将金融机构返回的持有人详细信息与所有权证据一同保留。关闭时,仅保留比对结果本身:得分、匹配方式和原因代码。 | | bank_transactions_history_days | integer | null | integer >=30 <=365 | 读取交易历史的时间范围,默认为 90 天,范围为 30 至 365 天。需要 transactions 权限范围;未启用时,保存会被拒绝。 | | bank_unknown_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 重试后仍无法获取证据(临时故障)时的判定结果。 | | bank_unsupported_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 用户的银行不受支持且节点不允许跳过时的判定结果。 | | bank_use_provider_score | boolean | null | boolean | 同时读取金融机构自身的持有人姓名得分;当该得分高于 Didit 的得分,或 Didit 完全无法对持有人姓名评分时,采用该得分。以此方式作出判定的结果会将 provider_only 记录为匹配方式;如果连接未返回此类得分,则会记录 provider_score_unavailable 警告。默认开启。 | | fallback_to_native | boolean | null | boolean | 无法建立市场平台连接时,是否回退到 Didit 的原生路由。默认关闭:静默回退可能会在你预期由自己的服务提供商合同处理会话时,扣除 Didit 余额。回退连接会记录为 credential_source = native,并按原生价格计费。 | | provider_key | string | null | string | 指定运行此步骤的路由。留空(默认值)表示使用 Didit 的原生银行验证,这是一项与服务提供商无关的产品:Didit 会根据用户所在国家和所选机构,将请求路由至提供服务的区域性开放银行服务商,并使用 Didit 的合同和计费方式。设置值用于指定一个市场平台服务提供商,其自身凭据必须已由此应用连接;会话随后将在你的服务提供商账户上运行、计费并撤销,Didit 仅收取市场平台费用。未连接的服务提供商会在保存时被拒绝。 | | status_rules | array | array | |

DATABASE_VALIDATION

数据库验证功能的配置。

此节点为可选节点,且当 database_validation_countries 为空时不执行任何操作——编辑器会阻止在此状态下发布,合规性检查也会将其报告为缺项。请将其放在生成所需输入的步骤之后(通常是 OCR),并且仅在上游步骤无法填充输入时使用 database_validation_field_sources。

键类型接受值含义
database_validation_countriesjson | null{"": {"services": ["<service_id>", ...]}}按国家/地区指定要检查的数据库——除非至少一个国家/地区包含至少一个服务 ID,否则此节点不会运行任何操作。服务 ID 来自该国家/地区的实时目录(例如 BRA 对应 bra_cpf);不属于所指定国家/地区的 ID,以及没有实时服务的国家/地区,保存时都会被剔除。仍接受旧版 {"<ISO3>": "one_by_one"|"two_by_two"|"not_enabled"} 格式,并会自动扩展为该国家/地区的实时服务。
database_validation_field_sourcesjson | null{"<db_validation_input_field>": {"source": "document_ai"|"questionnaire"|"expected_data", "key": "||expected_details.<expected_details field>|metadata."}}指定从何处读取图中先前步骤都无法填充的数据库输入。source 指定数据的生成方,key 指定其中的值:对于 document_ai,是 Document AI 字段键;对于 questionnaire,是问卷节点 ID;对于 expected_data,是 expected_details.<field> 或 metadata.<key>。这两部分使用不同的字段名称:映射的键是 Database Validation 输入字段(tax_id、document_number 等),而 expected_details.<field> 值只能指定会话创建负载实际携带的字段——address、country、date_of_birth、first_name、gender、id_country、identification_number、ip_address、last_name、nationality 或 poa_country。保存时会拒绝 expected_details. 下的其他任何值;metadata.<key> 则接受任何非空且不含空白的客户键。与上游步骤完全匹配的键会自动解析,并且不会持久化,因此重命名 Document AI 字段不会导致过时映射滞留在配置中。格式错误的条目不会被拒绝,而会在保存时被剔除,导致相应服务不再满足条件并从所选项中移除。
database_validation_no_match_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'数据库完全没有匹配项时的判定结果。
database_validation_not_applicable_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'所选数据库均不支持持有者所在国家/地区或其证件时的判定结果。
database_validation_partial_match_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'数据库匹配了部分提交字段,但未匹配全部字段时的判定结果。
status_rulesarrayarray
DOCUMENT_AI

Document AI 功能的配置。

每个节点最多 3 份文档;每份文档内的字段键必须唯一;每份文档最多只能有一个字段设置 is_full_name(该设置可选,文档可以不标记任何字段)。

KeyTypeAcceptsMeaning
document_ai_document_tampering_actionstring | null'REVIEW'|'DECLINE'文档看起来遭到篡改时的判定结果。
document_ai_documentsarrayarray
document_ai_max_attempts_exceeded_actionstring | null'REVIEW'|'DECLINE'用户用完 document_ai_max_retry_attempts 后的判定结果。
document_ai_max_retry_attemptsinteger | nullinteger >=2 <=5
document_ai_missing_required_fields_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'无法提取标记为 required 的字段时的判定结果。
document_ai_name_match_score_thresholdinteger | nullinteger >=0 <=100
document_ai_name_mismatch_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'标记为 is_full_name 的字段与已验证身份的全名不一致时的判定结果,依据 document_ai_name_match_score_threshold 进行评分。
document_ai_unreadable_document_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'完全无法读取上传文档时的判定结果。
document_ai_unsupported_file_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'上传的文件类型不受支持时的判定结果。
status_rulesarrayarray
EMAIL_VERIFICATION

电子邮件验证功能的配置。

KeyTypeAcceptsMeaning
breached_email_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'该地址出现在已知凭据泄露事件中时的判定结果。
cross_org_fraud_email_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'网络中的其他组织将该地址标记为欺诈时的判定结果。
disposable_email_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'该地址属于一次性邮件服务提供商时的判定结果。
duplicated_email_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'该地址已通过此申请的验证时的判定结果。
email_alphanumeric_codeboolean | nullboolean
email_code_sizeinteger | nullinteger >=4 <=8
email_enrichment_enabledboolean | nullboolean
email_intelligence_score_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'丰富度评分低于 email_intelligence_score_threshold 时的判定结果。
email_intelligence_score_thresholdinteger | nullinteger >=0 <=100
email_max_check_attemptsinteger | nullinteger >=1 <=5
email_max_retriesinteger | nullinteger >=1 <=5
email_no_social_presence_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'社交信息检查(email_social_enabled)发现该地址未在其覆盖的任何平台上注册时的判定结果。
email_social_enabledboolean | nullboolean
frequent_email_breach_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'该地址出现在多起泄露事件中时的判定结果。
only_corporate_emails_allowedboolean | nullboolean
recent_email_breach_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'该地址出现在近期泄露事件中时的判定结果。
status_rulesarrayarray
FACE_MATCH

Face Match 功能的配置。

键类型接受的值含义
face_match_eyes_covered_actionstring'NO_ACTION'|'REVIEW'|'DECLINE'当经过校准的证据表明自拍中的眼睛区域被遮挡时的判定结果。NO_ACTION 会记录证据,但不更改 Face Match;REVIEW 会将 Face Match 送审;DECLINE 会拒绝 Face Match。在该区域报告 calibrated=true 之前,此信号始终仅用于影子模式。
face_match_face_covered_actionstring'NO_ACTION'|'REVIEW'|'DECLINE'当经过校准的证据表明自拍中的脸部区域被遮挡时的判定结果。NO_ACTION 会记录证据,但不更改 Face Match;REVIEW 会将 Face Match 送审;DECLINE 会拒绝 Face Match。在该区域报告 calibrated=true 之前,此信号始终仅用于影子模式。
face_match_max_attemptsinteger | nullinteger >=1 <=3
face_match_mouth_covered_actionstring'NO_ACTION'|'REVIEW'|'DECLINE'当经过校准的证据表明自拍中的嘴部区域被遮挡时的判定结果。NO_ACTION 会记录证据,但不更改 Face Match;REVIEW 会将 Face Match 送审;DECLINE 会拒绝 Face Match。在该区域报告 calibrated=true 之前,此信号始终仅用于影子模式。
face_match_not_computed_actionstring | null'REVIEW'|'DECLINE'无法生成面部匹配分数(缺少肖像或自拍)时的判定结果。
face_match_score_decline_thresholdinteger | nullinteger >=0 <=100
face_match_score_review_thresholdinteger | nullinteger >=0 <=100
status_rulesarrayarray
GEOLOCATION

Precise Location(GEOLOCATION)功能的配置。此处会限定每个阈值,而不是由客户端限定:浏览器和原生 SDK 会根据此配置生成的步骤数据确定要收集哪些内容,服务器会拒绝的值绝不能作为设备无法满足的请求发送给用户。所有操作键的默认值都是 Review,而不是 Decline。用户拒绝授权、定位半径过大或定位信息过期,都不是欺诈证据;若默认将这些情况判为拒绝,该步骤就会成为转化陷阱。

键类型接受值含义
geolocation_accuracy_modestring | null'approximate_allowed'|'precise'
geolocation_allow_qr_handoffboolean | nullboolean
geolocation_allow_skipboolean | nullboolean
geolocation_approximate_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'用户授予近似位置权限,但 geolocation_accuracy_mode 要求精确位置时的判定结果。
geolocation_deep_link_enabledboolean | nullboolean
geolocation_document_distance_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'设备位置与文档地址的距离超过 geolocation_document_distance_km 时的判定结果。地址采用粗略地理编码,因此这只是一个较弱的信号。
geolocation_document_distance_kminteger | nullinteger >=0
geolocation_document_distance_unitstring | null'imperial'|'metric'控制台显示 geolocation_document_distance_km 时使用的单位。仅用于显示:存储的值始终以公里为单位,且没有规则依赖此设置。
geolocation_geofence_undetermined_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'由于位置的精度范围触及围栏边界,无法判定位置在围栏内还是外时的判定结果。不确定的位置绝不会报告为在围栏外。
geolocation_geofencing_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'设备位置及其完整精度范围均落在 geolocation_geofencing_by_country 之外时的判定结果。
geolocation_geofencing_by_countryjson | null{"": {"allowed": true|false, "states"?: {"<ISO 3166-2 code>": {"allowed": true|false}} | null}}针对设备自身位置的国家和地区允许/拒绝规则,仅在 is_geolocation_geofencing_enabled 为 true 时应用。结构与 IP Analysis 的 ip_geofencing_by_country 相同,但 states 键使用 ISO 3166-2 代码(US-NJ),而非州名,因为位置解析到的是行政区,而不是服务提供商的城市标签。未列出的国家默认允许。对于没有已公布 ISO 3166-2 边界的国家,保存地区规则会被拒绝,而不会静默忽略。
geolocation_integrity_missing_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'原生客户端提交位置时未提供设备证明令牌的判定结果。默认为 No action;Web 客户端会记录为不支持,而非缺失,因为浏览器无法进行证明。
geolocation_ip_distance_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'扣除双方的精度半径后,设备位置与会话 IP 位置之间的距离超过 geolocation_ip_distance_km 时的判定结果。
geolocation_ip_distance_kminteger | nullinteger >=0
geolocation_ip_distance_unitstring | null'imperial'|'metric'控制台显示 geolocation_ip_distance_km 时使用的单位。仅用于显示:存储的值始终以公里为单位,且没有规则依赖此设置。
geolocation_low_accuracy_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'没有任何一次尝试达到要求的精度时的判定结果:最佳位置的精度半径大于 geolocation_max_accuracy_radius_m,或未报告精度半径。没有精度半径的位置绝不会被视为达到限制。
geolocation_max_accuracy_radius_minteger | nullinteger
geolocation_max_accuracy_radius_unitstring | null'imperial'|'metric'控制台显示 geolocation_max_accuracy_radius_m 时使用的单位。仅用于显示:存储的值始终以米为单位,没有规则依赖此设置,且步骤数据仅转发此设置,以便客户端显示相同的单位。
geolocation_max_age_secondsinteger | nullinteger
geolocation_max_attemptsinteger | nullinteger
geolocation_mock_location_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'操作系统报告该位置为模拟位置而非实测位置时的判定结果(Android 模拟位置提供程序、iOS 软件模拟位置)。
geolocation_permission_denied_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'用户在所有允许的尝试中都拒绝或关闭位置提示时的判定结果。默认为 Review:拒绝是用户的选择,而非欺诈信号。
geolocation_stale_fix_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'位置的测量时间早于服务器接收时间,且相差超过 geolocation_max_age_seconds 时的判定结果。
geolocation_timeout_secondsinteger | nullinteger
geolocation_unavailable_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'无法获取位置时的判定结果——位置服务已关闭或受限、定位系统未返回结果、尝试超时、用户跳过此步骤,或客户端版本过旧而不支持此功能。
is_geolocation_geofencing_enabledboolean | nullboolean
status_rulesarrayarray
IP_ANALYSIS

设备和 IP 分析功能的配置。

键类型接受值含义
automation_detected_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当会话看起来由自动化程序而非真人驱动时的判定。
cross_org_fraud_device_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当此设备被网络中的其他组织标记为欺诈时的判定。
cross_org_fraud_ip_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当此 IP 被网络中的其他组织标记为欺诈时的判定。
device_app_tampered_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当主机应用程序二进制文件看起来遭到篡改时的判定。
device_blocklist_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当此设备位于组织的阻止列表中时的判定。
device_debugger_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当主机应用程序连接了调试器时的判定。
device_emulator_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当此设备是模拟器而非真实硬件时的判定。
device_hooking_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'检测到运行时挂钩或插桩时的判定。
device_integrity_missing_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'未返回平台设备完整性证明时的判定。
device_rooted_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当设备已 root 或越狱时的判定。
duplicated_device_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当此设备已被其他已验证用户使用时的判定。
duplicated_ip_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当此 IP 已被其他已验证用户使用时的判定。
expected_ip_mismatch_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当 IP 与会话中发送的预期 IP 不一致时的判定。
ip_geofencing_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当连接 IP 所属国家/地区不在 ip_geofencing_by_country 允许范围内时的判定。
ip_geofencing_by_countryjson | null{"": {"allowed": true|false, "states"?: {"<state_code>": {"allowed": true|false}} | null}}连接 IP 地址的国家/地区允许/拒绝规则,仅在 is_ip_geofencing_enabled 为 true 时生效。必须提供 allowed,且其值必须是真正的布尔值;states 为可选项,当该国家/地区不需要按州/省设置规则时,其值为 null。保存时会删除无效的 ISO3 国家/地区代码。
ip_location_not_determined_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'未记录到可识别最终用户的 IP 地址,因此会话完全没有 IP 位置信息时的判定:国家/地区、城市、ISP、坐标和时区均不可用,且无法执行 ip_geofencing_by_country、证件签发国家/地区比较以及 VPN/数据中心检查。默认值为 No Action,会保留会话上的 IP_LOCATION_NOT_DETERMINED 警告,但不改变其判定;如果未定位的会话不得通过,请设置为 Review 或 Decline。
ip_mismatch_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当 IP 所属国家/地区与证件签发国家/地区不一致时的判定。
is_ip_geofencing_enabledboolean | nullboolean
multiple_devices_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当会话由多个设备驱动时的判定。
recovered_device_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当设备报告其处于恢复或还原状态时的判定。
status_rulesarrayarray
vpn_detection_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当连接通过 VPN、代理或 Tor 出口节点时的判定。
KYB_DOCUMENTS
KeyTypeAcceptsMeaning
kyb_document_age_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'文档超过配置的新鲜度期限时的判定。
kyb_document_critical_mismatch_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'文档与登记信息中的关键公司详情矛盾时的判定。
kyb_document_max_attempts_exceeded_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'用户用完 kyb_document_max_retry_attempts 时的判定。
kyb_document_max_retry_attemptsinteger | nullinteger >=1 <=5
kyb_document_non_critical_mismatch_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'文档与登记信息中的次要详情矛盾时的判定。
kyb_document_subtype_configjson | null{"<KYB_DOCUMENT_GROUP|KYB_DOCUMENT_SUBTYPE>": {"enabled": true|false, "max_age_days": <0-3650>|-1|null}}按组或子类型设置开关和新鲜度期限。键必须是已知的 KYB 文档组或子类型代码。max_age_days 为 null 时使用默认期限,为 -1 时不设期限,或设为 0-3650 的整数;其他值均会被拒绝。
kyb_document_tampering_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'公司文档看起来遭到篡改时的判定。
kyb_required_document_groupsjson | null["<KYB_DOCUMENT_GROUP>", ...]要收集的公司文件,以文档组代码列表表示;每个组只需提供其涵盖的任一文档类型即可满足要求。KYB Documents 功能不允许保存空列表:不要求任何内容的节点等同于没有该节点。
status_rulesarrayarray
KYB_KEY_PEOPLE

此处的工作流 ID 指向独立的 KYC 工作流:KYB 图会验证公司,而其背后的人员则由关联的个人工作流进行验证。

键类型接受值含义
kyb_corporate_ubo_verification_workflowuuid | nulluuid
kyb_key_people_company_fieldsjson | null[{"key": "", "label": "", "type": "text"|"number"|"date"|"phone"|"email", "required": true|false, "custom": true|false}]为 CORPORATE 关键人员收集哪些公司详情。与 kyb_key_people_person_fields 采用相同的描述符列表结构和规则。
kyb_key_people_document_mismatch_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'关键人员的文件与其申报的详情不一致时作出的判定。
kyb_key_people_ownership_requiredboolean | nullboolean
kyb_key_people_person_fieldsjson | null[{"key": "", "label": "", "type": "text"|"number"|"date"|"phone"|"email", "required": true|false, "custom": true|false}]为个人关键人员收集哪些个人详情,采用字段描述符的有序列表(而非映射)。key 必填且不能为空;type 必须是 text、number、date、phone 或 email;custom 用于标记客户添加的字段,而非内置字段。
kyb_key_people_prefill_from_registryboolean | nullboolean根据公司注册信息的结果预填关键人员列表,让客户确认并更正,而不必逐一输入每位管理人员和股东。
kyb_notify_parties_by_emailboolean | nullboolean
kyb_officer_verification_workflowuuid | nulluuid
kyb_reject_if_ubo_rejectedboolean | nullboolean
kyb_require_corporate_ubo_kybboolean | nullboolean
kyb_require_officer_kycboolean | nullboolean
kyb_require_ubo_kycboolean | nullboolean
kyb_reuse_verified_individualsboolean | nullboolean
kyb_role_configjson | null{"<role_key>": {"enabled"?: true|false, "require_kyc"?: true|false, "verification_workflow"?: ""|null, "allow_skip"?: true|false}}针对公司背后人员的各角色规则。角色键来自现有配置,不要自行编造。require_kyc: true 的角色还必须携带 verification_workflow(独立 KYC 工作流的 uuid),否则保存会被拒绝。也接受 {"role": ..., ...} 条目列表作为映射的替代形式。
kyb_shareholder_ownership_thresholdinteger | nullinteger >=0 <=100
kyb_shareholder_verification_workflowuuid | nulluuid
kyb_ubo_ownership_thresholdinteger | nullinteger >=0 <=100
kyb_ubo_verification_workflowuuid | nulluuid
kyb_wait_for_all_ubosboolean | nullboolean
status_rulesarrayarray
KYB_REGISTRY
键类型接受值含义
kyb_accepted_countriesjson | null["", ...]企业可以注册成立的公司注册处所在国家/地区,以 ISO-2 代码列表表示(注意:此处使用 ISO-2,与 OCR 和 IP 允许列表使用的 ISO-3 不同)。空列表或 null 表示接受所有受支持的公司注册处。
kyb_manual_company_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'无法在公司注册处找到公司且由人工录入时的判定结果。
kyb_registry_countries_configjson | null{"": {"enabled": true|false, "tier": "basic"|"shareholders"|"ubo"}}按国家/地区配置公司注册处路由。每个启用的国家/地区都会在选定公司时决定所计费的数据层级。只能启用定价接口标记为可用的层级。必须至少启用一个国家/地区:不搜索任何地方的公司注册处检查将被拒绝。人工录入公司不使用此配置,按每家公司 0.75 美元的固定费用计费。
kyb_registry_fields_configjson | null{"<registry_field>": {"enabled"?: true|false, "required"?: true|false}}按公司注册处字段设置覆盖项,用于控制收集哪些公司详情,以及其中哪些为必填项。字段键来自后端的可配置字段目录(registration_number、incorporation_date、legal_address、vat_number、alternative_names、tax_number、company_type、legal_entity_identifier、location_of_registration、nature_of_business、registered_capital_amount、registered_capital_currency、website、email、phone、...);未知键或 enabled / required 以外的子键均会被拒绝。
kyb_registry_monitoring_enabledboolean | nullboolean在获得 Shareholders 或 UBO 结果后,持续监控 COMPANY 的公司注册处记录:状态、高管、所有权或地址发生变更时,会将会话退回审核并触发 webhook。仅适用于提供监控服务的公司注册处服务商;每家公司每年 2.00 美元,可随时取消。默认关闭。
kyb_vat_invalid_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'税务机关拒绝 VAT 号码时的判定结果。
kyb_vat_unverified_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'完全无法核验 VAT 号码时的判定结果。
status_rulesarrayarray
LIVENESS

Liveness 功能的配置。

KeyTypeAcceptsMeaning
cross_org_fraud_face_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'已弃用,不再应用。它将人脸视为携带欺诈判定。请改用 cross_org_identity_claim_pattern_action。
cross_org_identity_claim_pattern_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当网络中的其他组织记录了此人身份声明事件,且声明的身份与实际身份不符时的判定。仅允许复核或不采取行动——在此处设置为拒绝时,会降级为复核。
external_capture_device_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'检测到外部采集设备时的判定。
face_audio_recording_enabledboolean | nullboolean在自拍采集期间录制麦克风音频,以便复核人员听取采集过程。默认关闭。
face_liveness_duplicated_face_document_mismatch_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'在使用不同出生日期完成验证的用户中发现重复人脸时的判定。同一人的另一份证件(例如,在身份证之后提交的护照、续期证件或另一个国家的证件)不会被标记。
face_liveness_duplicated_face_name_mismatch_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'以不同姓名发现重复人脸时的判定。
face_liveness_flash_modestring | nullstring
face_liveness_max_attemptsinteger | nullinteger >=1 <=3
face_liveness_methodstring | null'ACTIVE_3D'|'FLASHING'|'PASSIVE'
face_liveness_modestring | nullstring
face_liveness_multiple_faces_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'采集中出现多张人脸时的判定。
face_liveness_possible_duplicated_face_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'此人脸与先前见过的用户匹配时的判定。
face_liveness_score_decline_thresholdinteger | nullinteger >=0 <=100
face_liveness_score_review_thresholdinteger | nullinteger >=0 <=100
face_liveness_uncertain_retry_enabledboolean | nullboolean仅适用于原生 SDK 主动活体检测。开启后,如果采集的活体检测分数严格介于 face_liveness_score_decline_threshold 和 face_liveness_score_review_threshold 之间,则无论引擎为其附加了何种判定,都不会作出判定:系统会告知用户结果不明确,并要求重新采集,每次如此;此类重试不计入 face_liveness_max_attempts 限额(该限额仍适用于引擎无法评分的采集)。默认关闭;Web 流程会忽略此设置。
face_liveness_video_anomaly_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当存储的活体检测录像中包含重复的移动序列,且与循环播放的视频流相符时的判定。此项通过服务端直接分析视频进行检测,与活体检测分数无关。它有意不会标记冻结或几乎静止的采集:帧统计无法区分注入的静态画面与真实画面(例如主体保持静止,或闪光导致曝光过度),因此据此采取行动会拒绝真实用户。冻结或预录制的注入视频流则由严格闪光活体检测拦截(将 face_liveness_flash_mode 设置为 "1" 即可启用严格模式);该检测会将采集绑定到每个会话独有的颜色序列挑战,录像无法复现。默认值为 NO_ACTION(会记录证据,但判定不变)。
face_luminance_max_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'自拍亮度高于 face_luminance_max_threshold 时的判定。
face_luminance_max_thresholdinteger | nullinteger >=0 <=100
face_luminance_min_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'自拍亮度低于 face_luminance_min_threshold 时的判定。
face_luminance_min_thresholdinteger | nullinteger >=0 <=100
face_privacy_mode_enabledboolean | nullboolean
face_quality_decline_thresholdinteger | nullinteger >=0 <=100
face_quality_review_thresholdinteger | nullinteger >=0 <=100
face_search_enabledboolean | nullboolean对自拍执行 1:N 人脸搜索:将其与先前验证过的用户、人脸阻止名单和允许名单进行匹配,并存储其生物特征模板以供后续匹配。默认开启。关闭后会跳过搜索、不保留人脸模板,重复人脸相关操作也就无从执行。
frame_injection_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'检测到注入的视频帧时的判定。
race_map_similarity_thresholdsjson{"": {"possible": 0-100, "high": 0-100}}针对不同人口统计群体覆盖人脸相似度区间;这些区间用于与允许名单和重复人脸集合进行比对,以便各群体的匹配率保持一致。possible 是较低区间(默认值为 62),high 是较高区间(68);未单独配置的群体使用这些默认值。
screen_capture_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'自拍是屏幕照片时的判定。
status_rulesarrayarray
virtual_camera_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'检测到虚拟摄像头视频流时的判定。
NFC

NFC/ePassport 功能的配置。

键类型接受值含义
allow_nfc_skipboolean | nullboolean
skip_nfc_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'用户跳过 NFC 芯片读取时的判定结果(仅在 allow_nfc_skip 启用时可触发)。
status_rulesarrayarray
trust_anchor_missing_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'芯片数据组哈希完整,但由于未加载签发国的 CSCA 信任锚,无法验证证书链时的判定结果。
unverified_chip_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'读取芯片但无法验证其签名时的判定结果。
OCR

OCR/ID 验证功能的配置。

省略 documents_allowed 会存储完整的国家/文档目录,因此该节点接受所有内容。请将 OCR 放在任何会读取文档中身份数据的功能(FACE_MATCH、NFC、DATABASE_VALIDATION)之前。 | 键 | 类型 | 接受值 | 含义 | | --- | --- | --- | --- | | age_restrictions_by_country | json | null | {"": {"minimum_age": 1-120, "maximum_age": 1-120|null, "states"?: {"<STATE_CODE>": {"minimum_age": 1-120, "maximum_age": 1-120|null}}}} | 按国家(可选按州)设置年龄限制。每个列出的国家都必须设置 minimum_age;maximum_age 可以为 null。 | | critical_field_occlusion_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 当采集的证件上有关键印刷字段被物理遮挡时的判定——身份号码、姓名、出生日期或有效期。默认值为 REVIEW。 | | cross_org_fraud_document_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 当网络中的其他组织将此证件标记为欺诈证件时的判定。 | | document_audio_recording_enabled | boolean | null | boolean | 在证件采集期间录制麦克风音频,以便审核人员听取会话内容。默认关闭。 | | document_blur_fields_by_country | json | null | {"": ["<blur_field_name>", ...]} | 按国家指定要从存储的证件图像中模糊处理的字段。仅接受该国证件版式支持的字段。 | | document_liveness_portrait_replace_decline_threshold | integer | null | integer >=0 <=100 | | | document_liveness_portrait_replace_review_threshold | integer | null | integer >=0 <=100 | | | document_liveness_printed_copy_decline_threshold | integer | null | integer >=0 <=100 | | | document_liveness_printed_copy_review_threshold | integer | null | integer >=0 <=100 | | | document_liveness_screen_replay_decline_threshold | integer | null | integer >=0 <=100 | | | document_liveness_screen_replay_review_threshold | integer | null | integer >=0 <=100 | | | document_or_personal_number_format_mismatch_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 当证件号码或个人号码与该国的预期格式不符时的判定。 | | document_selfie_duplicated_face_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 当证件采集自拍照与此应用中已验证用户的面部相同或可能相同时的判定。 | | document_selfie_duplicated_face_document_mismatch_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 当证件采集自拍照与一位已验证用户的面部相符,但出生日期不同时的判定。同一人的其他证件(例如先使用身份证、后使用护照,证件续期,或使用另一个国家的证件)不会被标记。只能提高 document_selfie_duplicated_face_action 的严重级别。 | | document_selfie_duplicated_face_name_mismatch_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 当证件采集自拍照与一位以不同姓名通过验证的用户的面部相符时的判定。只能提高 document_selfie_duplicated_face_action 的严重级别。 | | document_selfie_face_search_enabled | boolean | null | boolean | 对证件采集期间拍摄的自拍照运行 1:N Face Search(需要启用 is_document_selfie_portrait_match_enabled):将其与面部阻止名单和先前已验证的用户进行匹配。自拍照仅用作探针,不会存储其模板。默认开启。关闭后将跳过搜索,使证件自拍重复面部相关操作无从执行;如果 LIVENESS 步骤中的 face_search_enabled 已关闭,也会跳过搜索,因为该选择退出设置适用于会话中的所有自拍照。 | | document_selfie_portrait_match_decline_threshold | integer | null | integer >=0 <=100 | | | document_selfie_portrait_match_review_threshold | integer | null | integer >=0 <=100 | | | document_without_portrait_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 当扫描的证件类别所有面都没有人像时的判定。仅限节点配置——没有账户级设置;运行时默认值为 REVIEW。 | | documents_allowed | json | null | {"": {"<DOC_CODE>": {"enabled": 0|1, "sides"?: 1|2, "subtypes"?: ["<SUBTYPE_CODE>", ...]}}} | 按签发国家指定可接受的身份证件。完全省略此键表示接受完整目录;空对象含义相同。最终必须至少启用一种证件,否则保存将被拒绝。 | | duplicated_user_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 当此应用中已验证过该身份时的判定。 | | expected_details_mismatch_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 当提取出的身份信息与会话中发送的 expected_details 相矛盾时的判定。 | | expiration_date_not_detected_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 当无法从证件上读取有效期时的判定。 | | id_document_quality_threshold | integer | null | integer >=0 <=100 | | | id_verification_max_retry_attempts | integer | null | integer >=2 <=5 | | | id_verification_name_match_score_threshold | integer | null | integer >=0 <=100 | | | image_capture_methods_allowed | array | null | ["CAMERA_SCAN" | "UPLOAD", ...] | 最终用户可用于拍摄证件照片的采集方式。该字段声明为自由字符串列表,因此可选值未在字段本身中枚举:CAMERA_SCAN(实时拍摄)和 UPLOAD(选择已有文件)。空列表将使用账户默认值。 | | image_quality_too_low_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 证件图像的整体质量低于要求时的判定。 | | image_too_blurry_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 采集的证件图像过于模糊、不可信时的判定。 | | image_too_bright_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 采集的证件图像曝光过度时的判定。 | | image_too_dark_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 采集的证件图像曝光不足时的判定。 | | inconsistent_data_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 证件上的字段彼此矛盾时的判定。 | | invalid_code_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 证件校验位或条形码未通过验证时的判定。 | | invalid_mrz_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 机读区缺失或内容不一致时的判定。 | | invalid_validation_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 证件真实性验证未通过时的判定。 | | is_age_restrictions_enabled | boolean | null | boolean | | | is_document_selfie_portrait_match_enabled | boolean | null | boolean | | | is_image_capture_review_screen_enabled | boolean | null | boolean | 每次采集证件后向用户显示确认界面,让用户在提交前重新拍摄照片。默认关闭。 | | is_ocr_id_verification_data_review_enabled | boolean | null | boolean | 允许用户在步骤完成前审核并更正提取出的身份信息。默认关闭。更正内容会根据 ocr_id_verification_data_review_critical_fields 进行评估,出现不一致时将相应执行关键字段或普通字段操作。即使工作流包含 NFC,审核仍会运行——之后读取的芯片数据会覆盖审核结果。 | | maximum_age | integer | null | integer >=1 <=120 | | | maximum_age_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 持证人年龄超过 maximum_age 时的判定。 | | methods | json | null | {"": {"document": {"enabled": bool}, "id_lookup": {"enabled": bool, "source"?: "<source_id>"|null, "max_attempts": 1-5, "skip_liveness_and_face_match": bool, "on_partial_match": "fallback_to_document"|"decline", "on_no_match": "fallback_to_document"|"decline", "on_provider_error": "fallback_to_document"|"decline", "response_fields"?: ["<field_key>", ...]}, "wallet": {"enabled": bool, "providers": ["<wallet_id>", ...], "on_failure": "fallback_to_document"|"decline"}}} | 指定各国可采用的身份验证方式:证件采集(当前行为)、通过政府或其他权威来源进行非证件查询,以及数字身份钱包。省略此键、某个国家或某种方式时,该国家仅使用证件验证。每种方式都必须在该国的能力目录(GET workflow-graph/id-verification-methods-catalog/)中可用;钱包为允许列表,不设顺序。每个回退选项均为 fallback_to_document 或 decline;max_attempts(1-5,默认值为 1)仅统计注册机构已响应的查询次数。如果目录为某个国家列出多个查询 sources,则 source 通过 ID 精确选择一个;省略时使用该国的默认来源(第一个列出的来源)。 | | minimum_age | integer | null | integer >=1 <=120 | | | minimum_age_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 持证人年龄低于 minimum_age 时的判定。 | | ocr_id_verification_data_review_critical_fields | array | null | ["first_name" | "last_name" | "date_of_birth" | ...] | 指定用户编辑 OCR 结果时哪些提取出的身份字段视为关键字段,以便出现不一致时执行关键字段操作,而非普通字段操作。 | | ocr_id_verification_data_review_critical_mismatch_action | string | null | 'REVIEW'|'DECLINE' | 用户的更改与 OCR 在关键字段上不一致时的判定。 | | ocr_id_verification_data_review_minor_mismatch_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 用户的更改与 OCR 在非关键字段上不一致时的判定。 | | status_rules | array | array | | | unparsed_address_action | string | null | 'NO_ACTION'|'REVIEW'|'DECLINE' | 无法将证件地址解析为各组成部分时的判定。 |

PHONE_VERIFICATION

电话验证功能的配置。

KeyTypeAcceptsMeaning
code_sizeinteger | nullinteger >=4 <=8
cross_org_fraud_phone_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当网络中的其他组织将此号码标记为欺诈号码时的判定。
disposable_number_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当此号码属于一次性号码服务提供商时的判定。
duplicated_phone_number_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当此号码已通过此应用的验证时的判定。
fallback_to_nativeboolean | nullboolean
high_risk_phone_actionstring | null'REVIEW'|'DECLINE'当此号码带有高风险信号时的判定。
low_phone_trust_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当信任指数低于 phone_trust_index_threshold 时的判定。
phone_enrichment_enabledboolean | nullboolean
phone_intelligence_score_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当信息增强评分低于 phone_intelligence_score_threshold 时的判定。
phone_intelligence_score_thresholdinteger | nullinteger >=0 <=100
phone_max_check_attemptsinteger | nullinteger >=1 <=5
phone_max_retriesinteger | nullinteger >=1 <=5
phone_no_social_presence_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当社交足迹检查(phone_social_enabled)发现此号码未在其覆盖的任何平台注册时的判定。
phone_shared_device_modeboolean | nullboolean
phone_social_enabledboolean | nullboolean
phone_trust_index_thresholdinteger | nullinteger >=0 <=100
phone_type_risk_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当线路类型本身被视为有风险时的判定。
phone_verification_countriesjson | null{"": {"<channel: sms|whatsapp|telegram|rcs|viber|zalo>": {"enabled": true|false, "max_retries": } | true|false}}可通过哪些国家和投递渠道发送一次性验证码。此配置为白名单:映射中未列出的国家完全不可选;已列出国家中未列出的渠道则会跳过。max_retries 会覆盖该渠道的节点级重试上限。单独的布尔值是旧版格式,仍表示启用或禁用,并使用节点级上限。
provider_keystring | nullstring
recent_port_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当此号码近期转入新的运营商时的判定。
status_rulesarrayarray
voip_number_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'当此号码为 VoIP 号码而非真实用户线路时的判定。
PROOF_OF_ADDRESS

地址证明功能的配置。

键类型接受值含义
poa_document_authenticity_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'文档未通过真实性检查时的判定结果。
poa_document_issues_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'文档已损坏、被裁切或因其他原因无法使用时的判定结果。
poa_documents_allowedjson | null{"": {"<DOC_CODE>": {"enabled": 0|1, "sides"?: 1|2, "subtypes"?: ["<SUBTYPE_CODE>", ...]}}}各签发国家所接受的地址证明文档。结构与 OCR 的 documents_allowed 相同;省略此项则接受完整目录中的所有文档。
poa_issue_date_not_detected_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'无法从文档中读取签发日期时的判定结果。
poa_issuer_not_identified_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'无法识别签发公司或机构时的判定结果。
poa_languages_allowedjson | null{"<language_code>": 0|1}地址证明文档允许使用的语言,以各语言代码对应的标志表示。省略此项则接受所有受支持的语言。
poa_max_attempts_exceeded_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'用户用尽 poa_max_retry_attempts 时的判定结果。
poa_max_retry_attemptsinteger | nullinteger >=2 <=5
poa_name_match_score_thresholdinteger | nullinteger >=0 <=100
poa_name_or_address_mismatch_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'文档上的姓名或地址与已验证身份不一致时的判定结果。
poa_unparsable_or_invalid_address_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'无法解析文档上的地址,或该地址并非真实地址时的判定结果。
poa_unsupported_document_type_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'上传的文档不属于 poa_documents_allowed 中的类型时的判定结果。
poa_unsupported_language_actionstring | null'NO_ACTION'|'REVIEW'|'DECLINE'文档使用的语言不属于 poa_languages_allowed 时的判定结果。
status_rulesarrayarray
QUESTIONNAIRE

问卷功能的配置。

键类型接受值含义
questionnaire_uuiduuid | nulluuid
review_questionnaire_manuallyboolean | nullboolean
status_rulesarrayarray

贡献

上述功能配置契约由生成流程生成——切勿手动将配置键写入工具描述。有关重新生成工作流和强制执行相关检查的信息,请参阅 CONTRIBUTING.md。

欢迎提交问题和 PR——请参阅 CONTRIBUTING.md。可运行托管服务 mcp.didit.me/mcp,也可从此仓库自行托管(Docker / Node)——请参阅自行运行。

许可证

MIT © Didit Protocol

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。