skillZs
LIVE SKILL TAGS
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
REAL INSTALL DATA
← back to all skills
sumsubstance/agent-skills340 installs

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). 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, and other skills. SKIP for direct entity creation requests (no regulatory context) or Sumsub API calls.

How do I install this agent skill?

npx skills add https://github.com/sumsubstance/agent-skills --skill sumsub-analyze-regulation
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    This skill is safe to use. It acts as a planning assistant for regulatory compliance, reading provided documents to suggest Sumsub configurations. While it processes external data which is a theoretical surface for indirect prompt injection, it includes a mandatory human-in-the-loop verification step before generating plans.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

What does this agent skill do?

Sumsub — Analyze Regulation

Reads a regulation document and produces a structured Sumsub configuration plan — mapping each regulatory requirement to the Sumsub entities that satisfy it, with a clear split between what can be configured now via skills and what requires the Sumsub Dashboard.

This is a planning skill only. It produces a text description, never JSON payloads or API calls.

Workflow

Step 1 — Gather context

Before analyzing, collect:

  • Jurisdiction — if the document covers multiple countries or is ambiguous, ask explicitly: "This regulation covers [list of countries]. Which jurisdiction should the plan focus on?" Do not generate a plan for all jurisdictions simultaneously without a direct request to do so.
  • Business type — crypto exchange, neobank, iGaming, fintech, or other. Ask if not clear from the document.
  • Client types — individuals, companies, or both.
  • Existing Sumsub setup — has the user already configured anything? Avoid suggesting duplicates.

Step 2 — Analyze (think before responding)

Use extended thinking before formulating the response. Extract from the document:

  • Customer identification requirements (who must be identified, what data is required)
  • Acceptable identity documents (national ID, passport, tax number, etc.)
  • Address verification requirements (what documents are accepted, maximum age)
  • Enhanced Due Diligence conditions (what triggers EDD)
  • Source of funds / wealth / PEP data collection requirements
  • Transaction monitoring requirements (thresholds, suspicious patterns, crypto Travel Rule)
  • Periodic re-KYC obligations (how often customers must be re-verified)
  • What is out of scope for Sumsub (data retention timelines, regulatory reporting, sanctions list maintenance)

Step 3 — Validate understanding first

After analysis, present a short "My Understanding" block — bullet points of extracted requirements — and ask: "Have I understood the key requirements correctly? Anything to add or correct?"

Do not generate the full plan until the user confirms. This is mandatory.

Step 4 — Generate the plan

Only after user confirmation, produce the full configuration plan using the output format below.


Sumsub Capability Map

A. Verification Levels — sumsub-create-level

Defines the sequence of verification steps an applicant must complete. Each step is a docSet.

Available docSet types:

TypePurpose
IDENTITYDocument verification: PASSPORT, ID_CARD, DRIVERS, RESIDENCE_PERMIT, VOTER_ID, etc. Can be restricted by issuing country.
SELFIE / SELFIE2Biometrics and liveness.
APPLICANT_DATAPersonal data collection: full name, date of birth, address, nationality, tax number (TIN/CPF/CNPJ/etc.).
PROOF_OF_RESIDENCE / PROOF_OF_RESIDENCE2Address document verification. References a PoA preset by poaStepSettingsId.
PHONE_VERIFICATION / EMAIL_VERIFICATIONContact verification via OTP.
QUESTIONNAIRE / QUESTIONNAIRE2–4Custom form. References a questionnaire definition by questionnaireDefId.
E_KYCNon-document electronic verification against external databases. See E-KYC section.
DEVICE_CHECKDevice intelligence and fingerprinting. Requires DEVICE_INTELLIGENCE license.
COMPANYKYB: company info collection.
COMPANY_DATAKYB: company data fields.
COMPANY_DOCUMENTSKYB: corporate documents upload.
COMPANY_BENEFICIARIESKYB: UBOs and representatives verification.
ACCREDITED_INVESTORAccredited investor qualification.
E_SIGNElectronic signature capture.
TR_RECIPIENT_INFORMATIONTravel Rule recipient data collection.

Level properties:

  • applicantType: individual or company
  • requiredIdDocs: the ordered list of docSets + optional includedCountries / excludedCountries
  • watchListCheckSettings: enables AML/PEP/sanctions screening via watchlists
  • crossCheckPresetId: cross-check preset for AML screening

IDENTITY — document type codes

Sumsub uses generic IdDocType values regardless of what the document is locally called. Map the regulation's document names to these types:

Generic document classSumsub IdDocType
International / biometric passportPASSPORT
National identity card (any country)ID_CARD
Driver's licenceDRIVERS
Residence / immigration permitRESIDENCE_PERMIT
Voter IDVOTER_ID
Documents with no dedicated Sumsub type (e.g. tax cards, social security cards)OTHER_DOCS

includedCountries / excludedCountries use ISO-3166 alpha-3 (e.g. BRA, USA, DEU).

Two-sided capture should be specified whenever a mandatory identifier (tax number, national number) appears on the back of the document.

SELFIE — liveness options (videoRequired)

ValueDescriptionUse when
passiveLivenessDefault. Advanced passive liveness, no movement required.Standard KYC — no stricter regulatory mandate.
activeLivenessActive motion challenge (head movement detection).Regulation explicitly requires active/dynamic liveness.
enabledShort video — applicant pronounces displayed digits.Regulation requires video identity check.
photoRequiredPhoto-only selfie, no liveness.Use only when explicitly requested; generally insufficient for AML compliance.
staticLivenessSingle-frame analysis.Use only when explicitly requested.

For most AML/KYC regulations without a specific liveness requirement, default to passiveLiveness.

APPLICANT_DATA — common field names

Standard personal-data fields:

Field nameMeaning
firstNameFirst / given name
lastNameLast / family name
dobDate of birth
countryCountry of residence (ISO-3166 alpha-3)
townCity / town
streetStreet address
postCodePostal / ZIP code
nationalityNationality (ISO-3166 alpha-3)
placeOfBirthPlace of birth
tinTax identification number (TIN, CPF, SSN, BSN, etc.)

When a regulation mandates collection of a national tax or identity number, map it to tin and mark it required: true.

DEVICE_CHECK — what it detects

When DEVICE_INTELLIGENCE license is active, this step flags: emulators, rooted/jailbroken devices, VPN/proxy/Tor connections, remote-desktop software, and crypto-mixer tools. Always note in the plan that this step silently falls back to disabled if the tenant lacks the entitlement — add a GET-back verification step.

B. Questionnaires — sumsub-create-questionnaire

Custom forms for collecting applicant data not captured by document checks.

Common use cases: source of funds, source of wealth, employment, PEP self-declaration, trading experience, risk profile.

Question types: text, textArea, date, dateTime, bool, select, selectDropdown, multiSelect, phone, countrySelect, countryMultiSelect, fileAttachment, multiFileAttachments.

Conditional logic: sections and items can be shown/hidden based on previous answers.

Risk scoring: each answer option can carry a score (0–100); scores sum automatically and can be referenced in downstream transaction monitoring rules.

One questionnaire per level. Group distinct topics (source of funds, PEP self-declaration, risk profile…) as separate sections within a single questionnaire — not as separate questionnaires. Default to one QUESTIONNAIRE step per level. A separate level legitimately gets its own questionnaire (e.g. an EDD level with an extended questionnaire) — that is still one-per-level, not an exception. Only plan multiple questionnaires on the same level if the user explicitly asks for it.

C. Proof of Address Presets — sumsub-create-poa-preset

Reusable configuration for what documents are accepted as proof of address.

Document categories:

  • governmentOrganization — government-issued (voter registration, tax bill, etc.)
  • utilityProvider — utility bills
  • bank — bank statements and letters
  • mobileOperator — telecom bills
  • other

Key settings:

  • maxMonths per category — maximum document age
  • Cross-validation: name/address comparison between identity document (POI) and address document (POA) — fuzzy or strict mode
  • PoI-as-PoA: accept the identity document itself as proof of address
  • Neobank blocklist: exclude documents from specific institutions (Revolut, N26, Wise, etc.)
  • Country-specific overrides: different rules per country

D. E-KYC (Non-Document Electronic Verification)

⚠️ Requires separate activation per country through a Sumsub Customer Success Manager (CSM). License: E_KYC_TARGET.

Configured via sumsub-create-level once activated.

How it works: the applicant submits unique identifiers (TIN, document number, bank login) which are validated against external databases — no document photo required.

Two configuration modes:

  1. Standalone E_KYC docSet — electronic verification only; applicant cannot upload documents instead
  2. IDENTITY with ekycAllowed: true — applicant chooses: upload document photo OR complete E-KYC

Available database types: GOVERNMENT (national registries), CREDIT (credit bureaus), TELCO (telecom providers), BANKING, COMMERCIAL (business registries), CONSUMER, UTILITY, POSTAL, PROPRIETARY.

Verification methods: ENRICHMENT, ONE_X_ONE_MATCHING, TWO_X_TWO_MATCHING, VALIDITY_CHECK.

Configuration rules:

  • Country coverage depends entirely on client's license activations — there is no universal list
  • Recommended to pair with a SELFIE step for biometric verification against database records

Activation steps: (1) contact CSM to request per-country activation, (2) run sumsub-create-level.

E. Transaction Monitoring — sumsub-create-kyt-rules

⚠️ Requires KYT license (and TRAVEL_RULE for crypto, TM_SCHEDULED_EVENTS for periodic re-KYC, KYT_ANTI_FRAUD for platform events).

Describes what to configure at plan time in plain language. sumsub-create-kyt-rules translates each rule into a conditionEl SumScript expression and POSTs it to the API. New rules always start in test mode (dryRun: true) — activating them requires the dashboard.

Transaction types:

  • finance — financial transactions (fiat and crypto)
  • travelRule — crypto transactions subject to Travel Rule (FATF / VASP)
  • kyc — KYC-related events
  • userPlatformEvent — login, signup, password reset, 2FA changes
  • scheduledEvent — periodic triggers (requires TM_SCHEDULED_EVENTS license)

Rule anatomy:

  • Condition — trigger (e.g., "incoming crypto transaction > $10,000")
  • Action: score (add risk points), onHold (freeze transaction), awaitUser (request confirmation), reject (block)
  • Risk score (0–100) — cumulative; multiple rules sum their scores
  • Applicant change — move applicant to another level, trigger final rejection, or route to manual review
  • Case creation — auto-create a compliance investigation case on rule match

Automated pre-scoring enrichments (active for licensed tenants):

  • AML watchlists (PEP, sanctions, adverse media)
  • Crypto screening: Chainalysis, Elliptic, TRM Labs, Merkle Science, Crystal
  • Travel Rule processing
  • Device intelligence and fingerprinting
  • BIN lookup and payment method analytics

Periodic Re-KYC (Scheduled Rules):

  • Trigger: applicants on level X for N days → reassign to a new level (triggers re-verification)
  • Requires TM_SCHEDULED_EVENTS license

Required licenses for TM features: KYT, TRAVEL_RULE, TM_SCHEDULED_EVENTS, KYT_ANTI_FRAUD, DEVICE_INTELLIGENCE.

F. Workflows — sumsub-create-workflow

Graph-based routing logic: determines which level an applicant goes through next based on conditions.

Node types: applicantLevel (run a level), exclusiveChoice (condition branch), manualReview, finalRejection, actions (tags, notes, source-key changes).

Edge conditions: by applicant country, number of attempts, review decision (approved / rejected / resubmission), custom expressions.

Use when regulation requires risk-based routing (standard KYC for low-risk, EDD for high-risk), re-verification flows, or multi-stage onboarding.

G. Transaction Submission — sumsub-create-transaction

Sends transaction data to Sumsub's KYT monitoring system. Distinct from TM Rules:

  • This skill handles data submission (what transaction data to send)
  • TM Rules define what to do with that data (configured in the Dashboard)

Covers: finance transactions, Travel Rule (crypto counterparty data), platform events (login/signup).


Analysis Framework

Regulation requirementSumsub entitySkill / action
Identify the customer (name, DOB, nationality)APPLICANT_DATA + IDENTITYsumsub-create-level
Document verification (passport, national ID)IDENTITY (types, issuing countries)sumsub-create-level
Biometrics / liveness checkSELFIE (passiveLiveness / activeLiveness)sumsub-create-level
Address verificationPROOF_OF_RESIDENCE + PoA presetsumsub-create-level + sumsub-create-poa-preset
Tax number collection (TIN, CPF, CNPJ, SSN…)APPLICANT_DATA (fields) or E-KYCsumsub-create-level
Source of funds / source of wealthQUESTIONNAIRE (SOF/SOW section)sumsub-create-questionnaire
PEP self-declarationQUESTIONNAIRE + AML watchListCheckSettingssumsub-create-questionnaire + sumsub-create-level
Enhanced Due Diligence (EDD)Separate EDD level + extended questionnairesumsub-create-level + sumsub-create-questionnaire
PoA document age limitPoA preset maxMonths per categorysumsub-create-poa-preset
Electronic / non-document verificationE_KYC docSetsumsub-create-level (CSM activation required)
KYB — company verificationCOMPANY / COMPANY_DATA / COMPANY_BENEFICIARIESsumsub-create-level
Risk-based routing (standard vs EDD)Workflow with exclusiveChoicesumsub-create-workflow
Transaction monitoring (thresholds, patterns)KYT rulessumsub-create-kyt-rules (requires KYT license)
Crypto Travel RuletravelRule transaction type + KYT rulessumsub-create-kyt-rules (requires TRAVEL_RULE license)
Periodic re-KYC obligationTM Scheduled rule byLevelNamesumsub-create-kyt-rules (requires TM_SCHEDULED_EVENTS license)
Compliance case managementTM rule caseActionsumsub-create-kyt-rules
Transaction data submissionKYT submissionsumsub-create-transaction
Device check / fraud preventionDEVICE_CHECK docSetsumsub-create-level (requires DEVICE_INTELLIGENCE license)
WebSDK / front-end onboarding flowWebSDK integrationsumsub-integrate-websdk

Output Format

Produce the plan as a structured markdown document with two clearly separated sections.

Critical: use actual Sumsub enum values and field names throughout — not prose descriptions. Every step must show the concrete parameters that will go into the API call.

# Sumsub Configuration Plan: [Regulation Name] — [Jurisdiction]

## My Understanding
- [Bullet: key requirement 1 from regulation]
- [Bullet: key requirement 2]
- …
[Ask for confirmation here before generating the rest]

---

## ✅ Configure via Skills (available now)

### 1. Verification Level(s)
#### Level: [name] — [purpose, e.g. "standard KYC"]
- `applicantType`: individual | company
- Steps (in order):
  1. `APPLICANT_DATA`
     - `fields`: `[firstName, lastName, dob, country, town, street, postCode]`
     - Tax identifier: `tin` — `required: true` _(Art. N — CPF mandatory for identification)_
  2. `IDENTITY`
     - `docTypes`: `[PASSPORT, ID_CARD, DRIVERS]`
     - `includedCountries`: `[BRA]` _(ISO-3166 alpha-3, or omit for all countries)_
     - Two-sided capture: yes — `ID_CARD` and `DRIVERS` carry CPF on the reverse _(Art. N)_
     - Regulation reference: Art. N
  3. `SELFIE`
     - `videoRequired`: `passiveLiveness` _(default; change to `activeLiveness` if regulation requires motion challenge)_
     - Regulation reference: Art. N
  4. `QUESTIONNAIRE` — `questionnaireDefId`: `[questionnaire-slug]` _(defined in section 2 below)_
  5. `PROOF_OF_RESIDENCE` — `poaPresetId`: `[preset-id]` _(defined in section 3 below)_
  6. `DEVICE_CHECK` — ⚠️ requires `DEVICE_INTELLIGENCE` license _(Art. N — emulators, VPN/Tor, rooted devices)_
- `watchListCheckSettings.enabled`: true
  - `categories`: `[sanctions, pep, adverseMedia]` _(Art. N — PEP/sanctions screening mandatory)_
- Countries in scope: `includedCountries: [XXX]` | all countries
→ Next: `sumsub-create-level`

#### Level: [name] — [e.g. "enhanced due diligence"]
- (same structure — add extra steps or stricter liveness as required)
→ Next: `sumsub-create-level`

### 2. Questionnaire(s)
#### Questionnaire: `[id-slug]` — [purpose, e.g. "Risk Profile & Compliance"]
- Sections:
  - `[section-id]` — [Section name, e.g. "Virtual Asset Experience"]
    - `[item-id]`: "[Question text]" — `type: select` — `required: true`
      Options: `[["novice","No experience"],["intermediate","Some experience"],["expert","Expert"]]`
    - `[item-id]`: "[Question text, e.g. risk acknowledgement]" — `type: bool` — `required: true`
      _(Art. N — client must confirm trades outside risk profile)_
  - `[section-id]` — [Section name, e.g. "Source of Funds"]
    - `[item-id]`: "[Question text]" — `type: select` — `required: true`
      Options: `[["employment","Employment/Salary"],["business","Business income"],["savings","Savings"],["investment","Investment returns"],["other","Other"]]`
    - `[item-id]`: "Specify other source" — `type: text` — condition: `[section-id].[item-id] = other`
→ Next: `sumsub-create-questionnaire`

### 3. Proof of Address Preset
- Accepted categories and max document age:
  - `governmentOrganization` — [N] months _(Art. N)_
  - `bank` — [N] months
  - `utilityProvider` — [N] months
  - `mobileOperator` — [N] months
- Cross-validation: enabled | disabled — _(name/address match between POI and POA)_
- POI-as-POA: yes | no
- Country overrides: [ISO-3 code — category/maxMonths changes, if any]
→ Next: `sumsub-create-poa-preset`

### 4. Workflow
- [Description of routing: standard KYC → if high-risk → EDD → manual review]
- Conditions: [by country / by questionnaire score / etc.]
→ Next: `sumsub-create-workflow`

### 5. Transaction Data Submission (KYT)
- Transaction types to instrument: `finance` | `travelRule` | `userPlatformEvent`
- Required fields per transaction: [counterparty name, wallet address, etc.] — _(Art. N)_
→ Next: `sumsub-create-transaction`

### 6. Transaction Monitoring Rules
[Only include if regulation requires transaction monitoring. Requires `KYT` license.]

#### Rule: [name]
- `types`: `finance` | `travelRule` | `kyc` | `userPlatformEvent` | `scheduledEvent`
- Trigger: [plain language, e.g. "incoming transaction above $10,000"]
- `action`: `score [N]` | `onHold` | `awaitUser` | `reject`
- Case creation: yes | no — [group by applicant / by rule]
- Regulation reference: Art. N
→ Next: `sumsub-create-kyt-rules`

#### Periodic Re-KYC rule [if applicable — requires `TM_SCHEDULED_EVENTS` license]
- Trigger: customers at level [X] after [N] days
- Action: reassign to level [Y] for re-verification
- Regulation reference: Art. N
→ Next: `sumsub-create-kyt-rules`

---

## ⚠️ Configure in Sumsub Dashboard

### Activate TM rules
New rules are created in test mode (`dryRun: true`). To make them live: open each rule in the dashboard (KYT → Rules Manager) and set it to **Active**.

### KYT Client Lists
Adding values to client lists referenced in rule conditions (e.g., country blocklists, peer allowlists) is a dashboard-only operation: KYT → Client Lists.

---

## 🔒 E-KYC (electronic non-document verification)
[Include only if applicable to the jurisdiction]

- Jurisdiction: [country]
- Potentially available databases: GOVERNMENT | CREDIT | BANKING
- Configuration path: `sumsub-create-level` — after CSM activation
- Activation steps:
  1. Contact your Sumsub CSM to request activation for [country]
  2. Run `sumsub-create-level` with the `E_KYC` docSet

---

## Out of Scope for Sumsub
[List requirements from the regulation that Sumsub does not handle]
- [e.g. 5-year data retention — handle in your own infrastructure]
- [e.g. Reporting to [authority] — handle via your compliance team]

---

## Suggested Execution Order
1. `sumsub-create-questionnaire` (needed before level creation)
2. `sumsub-create-poa-preset` (needed before level creation)
3. `sumsub-create-level` (standard KYC level)
4. `sumsub-create-level` (EDD level, if needed)
5. `sumsub-create-workflow` (if risk-based routing needed)
6. `sumsub-create-kyt-rules` (TM rules, if regulation requires transaction monitoring)
7. `sumsub-create-transaction` (instrument transaction submission)
8. Dashboard — activate TM rules (move from test mode to live)

Rules

  1. Language: respond in the same language as the user's request.
  2. Think first: use extended thinking before formulating the response — regulation texts are dense and requirements are often implicit.
  3. One jurisdiction at a time: if the document covers multiple jurisdictions, ask which one to plan for before proceeding. Do not produce multi-jurisdiction plans unprompted.
  4. Validate before generating: after analysis, present the "My Understanding" summary and wait for user confirmation before producing the full plan.
  5. No JSON: this skill produces text descriptions only. Never generate API payloads, JSON objects, or configuration code.
  6. Be concrete: the plan must use actual Sumsub parameter names and enum values, not prose descriptions. Write docTypes: [PASSPORT, ID_CARD, DRIVERS], not "Passport and national ID". Write videoRequired: passiveLiveness, not "advanced liveness". Write fields: [firstName, lastName, dob, tin], not "name and tax number". Include country codes in ISO-3166 alpha-3 (BRA, not "Brazil"). Name questionnaire item types (bool, select, text). Use the country-specific document mapping table in the Capability Map to translate local document names to IdDocType codes.
  7. Mark the boundary clearly: every item in the plan must be in either ✅ (skills available now) or ⚠️ (Dashboard / skill in development). Never leave the boundary ambiguous.
  8. E-KYC is always opt-in: always mark E-KYC as requiring CSM activation. List the activation steps. Do not present it as a default option.
  9. TM rules in plain language only: describe trigger conditions and actions in business language (e.g., "block transactions over $50,000"). Do not write SumScript expressions or technical rule syntax — sumsub-create-kyt-rules handles that translation.
  10. No TM rules without explicit requirement: only include TM rules in the plan if the regulation explicitly requires transaction monitoring.
  11. Licenses: flag DEVICE_INTELLIGENCE, E_KYC_TARGET, KYT, TRAVEL_RULE, TM_SCHEDULED_EVENTS as requiring license verification.
  12. Out of scope: explicitly list requirements the regulation contains that Sumsub cannot fulfill (data retention, authority reporting, etc.).

Related Skills

SkillWhen to invoke
sumsub-create-levelAlways — core output of every regulation analysis
sumsub-create-questionnaireRegulation requires SOF, PEP, wealth, employment, or risk profile collection
sumsub-create-poa-presetRegulation requires address verification
sumsub-create-workflowRegulation requires risk-based routing, EDD flow, or multi-stage onboarding
sumsub-create-kyt-rulesRegulation requires transaction monitoring rules (thresholds, suspicious patterns, periodic re-KYC, Travel Rule)
sumsub-create-transactionRegulation requires transaction monitoring data submission
sumsub-integrate-websdkRegulation has UX or front-end onboarding requirements
sumsub-api-genericCheck existing configuration before creating new entities

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/sumsubstance/agent-skills/sumsub-analyze-regulation">View sumsub-analyze-regulation on skillZs</a>