sumsub/agent-skills

sumsub-check-databases

Discover the Databases (check-sources) Sumsub offers for a country, whether each is enabled for the tenant, and how database / non-document (eKYC) verification fits into a verification level.

ソースを見る

使い方

  1. インストールコマンドをコピーし、自分の環境へ導入する前にソースを確認します。
  2. 必要なツール、認証情報、対応環境を原文で確認します。
  3. 入力と成果物を指定し、出力を資料と照合します。
npx skills add https://github.com/sumsub/agent-skills --skill sumsub-check-databases

開始前の確認

  • 導入にはモデル契約、API枠、ファイルへのアクセス許可は含まれません。
  • スター数や導入数は活動の指標であり、独立した品質・安全性試験ではありません。
リポジトリの原文

見出し、例、コード、表、リンク、参照画像を含む原文を表示しています。

Check Databases

Lists the database check-sources Sumsub offers for a country, each source's enablement status for the current tenant, and how it plugs into a verification level. Callers use it to gate database / non-document verification before building a level.

Scope: KYC (individual) only — for now. The endpoint returns only individual/person check-sources. Company (KYB) database verification is not exposed here yet; don't use this skill to place company/business sources.

Endpoint

GET https://api.sumsub.com/resources/api/agent/settings/checkSources?country=<country>

country is an ISO alpha-3 code (e.g. DEU). If the user names a country, convert it to alpha-3 before calling. Omit country to return the full catalog. An unrecognized or unsupported code is not an error — it returns HTTP 200 with an empty checkSources list.

Pass `country` whenever you can. The unfiltered response is the entire catalog — hundreds of entries across every country, large enough to bloat or truncate your context. If the user named a country, filter by it. If they didn't, prefer asking which country they need before calling unfiltered; only omit country when you deliberately want the whole catalog and can handle a large response.

Auth — App Token + secret (sandbox only)

This skill talks to the public Sumsub API and signs each request per the authentication reference. The full how-it-works writeup lives in the `sumsub-api-auth` skill — read it if you hit 401 Invalid signature.

⚠️ Sandbox tokens only. Do not accept or use a production App Token here. If the user offers one, refuse and ask them to generate a sandbox pair at <https://cockpit.sumsub.com/checkus/devSpace/appTokens> (toggle the workspace to Sandbox first, then Create). Token + secret are shown once — copy both before closing the dialog. The helper script enforces this — it rejects tokens that don't start with sbx:.
VarExample
SUMSUB_APP_TOKENsbx:... — sandbox App Token from the dashboard.
SUMSUB_SECRET_KEYThe paired secret shown once at token creation.
SUMSUB_BASEOptional. Defaults to https://api.sumsub.com.

Usage

bash
bash ${CLAUDE_SKILL_DIR}/scripts/check_databases.sh <country>

Output: raw Sumsub response body followed by HTTP <code>.

Success (HTTP 200):

json
{"checkSources": [
  {
    "sourceId": "arg_gov_dni",
    "name": "Argentina DNI Verification",
    "description": "Verifying user's personal, biometric, and residency data against official government sources.",
    "dataSources": [
      "National Registry of Persons (Registro Nacional de las Personas - RENAPER)",
      "Agency of Public Revenues and Control (Agencia de Recaudación y Control Aduanero – ARCA)"
    ],
    "country": "ARG",
    "checkType": "E_KYC_CHECK",
    "confirmationType": "otp",
    "status": "ENABLED",
    "validationReady": false,
    "stepsReady": ["E_KYC", "IDENTITY"],
    "supportedDocuments": ["ID_CARD"],
    "requiredInputFields": ["gender", "number"],
    "optionalInputFields": ["address.postCode"],
    "selfieRequirement": "ADDITIONAL",
    "outputFields": ["firstName", "lastName", "addresses", "gender", "nationality", "dob", "tin"],
    "violations": ["GENDER_MISMATCH", "DEAD", "PERSON_IS_MINOR", "SELFIE_MISMATCH"]
  }
]}
HTTP 200

Input-field values are machine field names on the background-check input data — number, dob, address.postCode, bankAccount.bankName — not display labels. Dotted names are nested objects (address.*, bankAccount.*). Translate them into something readable when you show them to a user.

A selfie is never listed in the input fields — it has its own selfieRequirement field. Read that, not optionalInputFields, to decide whether the flow needs a selfie step.

Field reference

FieldMeaning
sourceIdStable id of the check-source ({country}_{provider}_{subject}).
nameHuman-readable source name (English), e.g. "Argentina DNI Verification".
descriptionOne-line English description of what the source verifies. May be absent.
dataSourcesUnderlying registries / providers the source draws on (English names). May be absent.
countryCanonical ISO alpha-3 the source covers.
checkTypeInternal category (E_KYC_CHECK, PERSON, TIN) — informational, not a filter. Company (KYB) types are not returned.
confirmationTypeHow the applicant confirms a non-document check: otp, oAuth (log in to a bank / national eID service), or eID (NFC scan of an eID card). Absent when the source needs no confirmation step.
statusPer-tenant enablement, the usability gate: ENABLED (licensed in production, and so in sandbox too) / SANDBOX_ONLY (licensed in sandbox only — works for testing, will not run in production) / DISABLED (not licensed anywhere). See below.
validationReadytrue if the source can cross-validate a document already being collected (database validation).
stepsReadyLevel step type(s) (IdDocSetType, e.g. E_KYC, IDENTITY) the source is ready to be used as a non-document check for. Empty if none.
supportedDocumentsIdDocTypes the source can validate.
requiredInputFields / optionalInputFieldsMachine field names the applicant must / may supply (e.g. number, dob, address.postCode) — background-check input data keys, not display labels. Never includes the selfie.
selfieRequirementREQUIRED (the source can't run without a selfie) / ADDITIONAL (optional, improves the match) / absent (no selfie needed).
outputFieldsFields the source returns on a match.
violationsPossible violation reasons the source can raise (e.g. GENDER_MISMATCH, DEAD).

Full types, enum values, and meanings: `references/checksources-schema.md`.

How callers should use this

  1. If the HTTP status is not 200, stop immediately — show the error body to the user and do not proceed.
  2. An empty `checkSources` list is not an error. It means Sumsub offers no KYC database sources for that country — or the country value wasn't a recognized ISO alpha-3 code. Tell the user no database check-sources are available for that country; if they gave a country name, double-check it mapped to the right alpha-3 code (e.g. Germany → DEU) and offer to retry. Never fabricate sources. A database layer is optional, so fall back to document-based verification (see the placement branches below).
  3. Check `status` — per-tenant and environment-independent (the same value comes back whether you query from sandbox or prod). ENABLED: licensed in production and therefore in sandbox too — usable, proceed. SANDBOX_ONLY: licensed in sandbox only — usable for sandbox testing, but the level will not run this source in production, so say that explicitly and point the user at enablement before they go live. DISABLED: not licensed anywhere — not usable. For anything other than ENABLED, see Enabling a source below.
  4. If the source the user needs is unavailable, don't silently drop it and don't blanket hard-stop. A missing check-source (unlike a missing entitlement) still leaves a valid document-based level — so surface the gap, don't block it. Then branch by what the source was for:
What the user wantedSource unavailable → do this
Database validation (document + DB cross-check)Soft: the document verification still stands. Confirm, then continue without the DB layer.
Non-doc in identity step (source nested inside IDENTITY)Offer the fallback: switch that identity step back to document upload. Continue after the user picks.
Non-doc, standalone (a database-only step was the whole point)Closest to a stop: the step can't exist without a source. Present the document-based alternative; proceed only on explicit confirmation.

Never silently downgrade and never unilaterally hard-stop — surface the gap + impact and let the user (via the caller) decide. The one hard stop that still applies: non-doc identity also needs the E_KYC_TARGET entitlement, which `sumsub-check-permissions` gates independently.

Enabling a source

Enabling isn't something the agent can do: there is no public API to enable a check-source. This covers both DISABLED (nothing works) and SANDBOX_ONLY (sandbox works, production doesn't). Tell the user which database check is missing and in which environment — name the specific source by its `name`, and note its `sourceId` — and what verification is lost. Then point them to:

  • [Databases → Available products](https://cockpit.sumsub.com/checkus/sdkIntegrations/databaseServices/available) in the Sumsub dashboard — self-serve enablement for most sources.
  • If the source isn't self-serve-enablable there, the user contacts their Customer Success Manager / Sumsub Support to request it.

Where each source goes in a level

A chosen source is wired into the level's checkSourceSettings.countrySettings[] — one entry per country (+ checkType when placed at the level's top level), listing the sourceId under executionConfigurations. validationReady and stepsReady tell you which placement(s) apply. `sumsub-create-level` builds the full payload — this skill decides the placement.

A source can be validationReady and/or have entries in stepsReady at once — check both, they're independent signals. If stepsReady lists more than one step type, that's a menu of valid homes for the same source, not a mandate to use all of them at once — pick the one placement that matches the user's intent.

Placement (ticket)Signalled byWhat it means in the level
Database validationvalidationReady: trueKeep the document docSet (e.g. IDENTITY) — the applicant still submits a document. Attach the source at the level's top-level `checkSourceSettings` (a sibling of requiredIdDocs, not nested inside it).
Non-doc, standalonestepsReady contains the step type on its own (e.g. E_KYC)A dedicated non-document docSet, no upload — E_KYC for identity (needs E_KYC_TARGET, verify via `sumsub-check-permissions`). The applicant supplies requiredInputFields, checked against the database. Attach the source nested inside that docSet's own `checkSourceSettings`.
Non-doc in an existing stepstepsReady contains the step type (e.g. IDENTITY) alongside an already-required document stepKeep the document docSet's types (document upload stays optional) and nest the source's checkSourceSettings inside that same docSet — the applicant chooses upload or the database check in one step. Also needs E_KYC_TARGET.

In every case the source is referenced via country, checkType (top-level placement only), and executionConfigurations[].sourceId. Optional fallbackReasons (NO_DATA, NAME_MISMATCH, DOB_MISMATCH, INVALID_DOC_NUMBER, FAILED, DEAD) let the flow fall back to another source or a document when the check can't confirm. See the worked examples in `sumsub-create-level/examples/`: identity-selfie-with-database-validation.json (top-level, validationReady), identity-with-non-doc-selfie.json (nested in IDENTITY), non-doc.json (standalone E_KYC).

Concept references: no-document verification, database validation.

See also

タスクに関連する項目

同じリポジトリから

関連する Skills

すべての Skills
sumsub
コミュニティ

sumsub-integrate-travel-rule

End-to-end recipe for integrating Sumsub Travel Rule — deciding which of the three exchange flows applies, identifying the counterparty VASP, submitting the transfer, reading the exchange status, finalising or cancelling it, answering requests other VASPs send you, handling the unhosted-wallet path when no VASP is attributed, and finding existing transactions (deduplication before after-settlement exchanges). TRIGGER when the user asks to "integrate / add / implement Travel Rule", "send Travel R

導入数
1
GitHub Stars
7
更新日
10月2日
sumsub
コミュニティ

sumsub-manage-wallet-address-book

Register the crypto wallet addresses an organisation controls, so Sumsub can resolve address ownership without a human. Bulk-imports addresses into the Wallet Address Book via POST /resources/kyt/walletAddress/import, and registers a single address against a specific applicant via POST /resources/api/applicants/{applicantId}/payments. TRIGGER when the user asks to "upload / import / register our wallet addresses", "add addresses to the Wallet Address Book", "register a user's crypto wallet as a

導入数
1
GitHub Stars
7
更新日
10月2日
sumsub
コミュニティ

sumsub-manage-webhooks

Manage Sumsub clientWebhooks (event subscriptions for applicantReviewed / applicantPending / kytTxn / etc.) — reads via /resources/api/clientWebhooks, writes via /resources/api/agent/clientWebhooks. Sandbox only — production webhooks must be created by a human directly in the Sumsub dashboard. TRIGGER when the user asks to "list / retrieve / show webhooks", "create / add / register a webhook", or "update / edit / change a webhook target / event list / secret / signature algorithm" against their

導入数
1
GitHub Stars
7
更新日
10月2日
sumsub
コミュニティ

sumsub-analyze-regulation

Analyze a regulation document (PDF or text) and produce a Sumsub configuration plan — mapping regulatory requirements to Sumsub entities (levels, questionnaires, PoA presets, TM rules, workflows, AML resolution rules). TRIGGER when the user provides a regulation PDF, legal act, or compliance requirement document and wants to know what to configure in Sumsub. Acts as the entry point before invoking sumsub-create-level, sumsub-create-questionnaire, sumsub-create-poa-preset, sumsub-create-workflow,

導入数
2
GitHub Stars
7
更新日
10月2日