Sumsub Create Kyt Rules
Configure KYT transaction monitoring rules with tags, applicant risk scoring and risk levels. TRIGGER when the user says "create / add / set up KYT rules / TM rules", "configure transaction monitoring", describes scoring logic (flag/block/hold transactions by amount, country, direction, peer, or other conditions), wants to "update / change / edit an existing rule" (by name or title), asks to "configure applicant scoring / risk scoring / assessment", "set up tags", "define risk levels / thresholds", or "configure applicant risk". SKIP for applicant levels, questionnaires, PoA presets, workflows, or non-TM tasks.
- Skill ID
- sumsub/agent-skills/sumsub-create-kyt-rules
- Publisher
- sumsub
- Repository
- agent-skills
- Installs
- 0
- Files
- 17
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
sumsub/agent-skills/sumsub-create-kyt-rulesInstalls these files- SKILL.md
- examples/eval-finance-hold.json
- examples/minimal.json
- references/kyt-rule-schema.md
- scripts/create_kyt_client_list.sh
- scripts/get_kyt_applicant_assessment.sh
- scripts/get_kyt_bundle.sh
- scripts/get_kyt_client_list.sh
- scripts/get_kyt_risk_level_settings.sh
- scripts/get_kyt_rule.sh
- scripts/get_kyt_rules.sh
- scripts/get_kyt_tags.sh
- scripts/patch_kyt_applicant_assessment.sh
- scripts/patch_kyt_risk_level_settings.sh
- scripts/post_kyt_rule.sh
- scripts/post_kyt_tag.sh
- scripts/sumsub_curl.sh
What this skill tells the agent
Sumsub — KYT Rules, Applicant Scoring & Risk Levels
Configures the full KYT transaction monitoring stack:
- Rules — translates user intent into
KytTxnRulepayloads and POSTs them one at a time. Supports creating new rules and modifying existing ones (by posting a new revision). New rules always start in testMode (dryRun: true) — they appear indryScorebut do not affect the live outcome until activated in the dashboard. - Tags & applicant scoring — creates and configures tags (named risk markers) and the assessment that maps tag weights into a composite applicant risk score.
- Risk levels — configures the score thresholds that translate a numeric risk score into a human-readable label (e.g. Low / Med / High).
Rules, tags, and risk levels form a single pipeline: a rule fires → applies tags → tags accumulate a weighted score → score maps to a risk level.
Endpoints
| Method | Path | Description | Response |
|---|---|---|---|
GET | /resources/api/agent/tm/rules/-/installed | List existing rules. Supports ?limit=<n> and ?offset=<n>. Requires seeKytRules. | { list: { items: [...] } } |
POST | /resources/api/agent/tm/rules | Create a new rule or a new revision. For creation omit id and name. For a revision include the existing name slug and "id": null. Requires manageKytRules. | 200 rule object · 400 error message |
GET | /resources/api/agent/tm/rules/-/bundle/{bundleName}/{category} | List rules in a bundle by name and installation status. category: installed, available, archived. Requires seeKytRules. | { list: { items: [...] } } |
GET | /resources/api/agent/tm/rules/{id} | Read one rule by id. Requires seeKytRules. | rule object |
GET | /resources/api/agent/tm/settings/tags | List all KYT tags with their assessment configuration and linked rules. | { tags: [...] } |
POST | /resources/api/agent/tm/settings/tag | Create or update a KYT tag. Body: {"tag": {"name": "...", "styleClass": "...", "color": "#RRGGBBAA", "scorable": true, "includeInReporting": true, "scoreWeight": 1.0}}. color must be 8-digit hex. Requires manageKytSettings. | 200 empty body |
GET | /resources/api/agent/tm/settings/applicantAssessment | Get current applicant assessment scoring configuration (tag weights, hierarchy, company beneficiary weights). | assessment settings object |
PATCH | /resources/api/agent/tm/settings/applicantAssessment | Replace applicant assessment scoring configuration. Requires manageKytSettings. | 200 updated assessment settings |
GET | /resources/api/agent/tm/settings/riskLevel | Get current applicant risk level thresholds. | risk level settings object |
PATCH | /resources/api/agent/tm/settings/riskLevel | Replace risk level thresholds. Body: min 2 items, each with label (≤256), rangeFrom (≥0), styleClass — one of: grey, black, blue, green, cyan, teal, lime, yellow, orange, volcano, red, pink, fuchsia, purple, purpleLight. Requires manageKytSettings. | 200 updated risk level settings |
GET | /resources/api/agent/tm/clientLists/{listName} | Fetch a client list by name. 404 if not found. Requires seeClientLists. | client list object |
POST | /resources/api/agent/tm/clientLists/{listName} | Create a client list (idempotent). Requires manageClientLists. | client list object |
See `references/kyt-rule-schema.md` for the full rule SumScript expression field reference and type system.
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/home?sbx=true> (Connect Sumsub to your AI agent -> Build & configure -> Generate token). 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:.| Var | Example |
|---|---|
SUMSUB_APP_TOKEN | sbx:... — sandbox App Token from the dashboard. |
SUMSUB_SECRET_KEY | The paired secret shown once at token creation. |
SUMSUB_BASE | Optional. Defaults to https://api.sumsub.com. |
If the user has already supplied credentials in conversation, reuse them; otherwise ask once before running. Never echo the secret back.
Tenant Entitlements
Entitlements are gated per transaction type, not globally. Each types value needs any one of the keys listed for it — not all of them. There is no baseline entitlement that every rule requires: KYT is the entitlement for the finance type, nothing more.
Rule types value | Enabled by any one of |
|---|---|
finance | KYT |
travelRule | TRAVEL_RULE |
kyc | TM_INDIVIDUAL_APPLICANT_SCORING · TM_COMPANY_APPLICANT_SCORING · KYT_ANTI_FRAUD · KYT · DEVICE_INTELLIGENCE |
userPlatformEvent | KYT_ANTI_FRAUD · KYT |
scheduledEvent | TM_SCHEDULED_EVENTS · KYT |
A tenant that has only TRAVEL_RULE can create travelRule rules. A tenant that has only DEVICE_INTELLIGENCE can create kyc rules. Neither needs KYT. Do not require KYT for a type whose row does not list it.
Before creating or modifying a rule, run bash scripts/check_permissions.sh from the `sumsub-check-permissions` skill directory. The response body is {"allowedChecks": {"<KEY>": "<description>", ...}} — the keys of allowedChecks are the enabled entitlements. There is no allowed array.
Stop only when the requested type is not enabled — i.e. none of the keys on that type's row appear in allowedChecks. Do not build or POST that rule. Name the type as the user sees it (see Transaction Types — kyc is "Verification session events", never "kyc"), list the keys that would enable it joined by "or", and tell the user to contact their CSM or Sumsub support. Do not offer a different transaction type as a workaround — if the user wants a travelRule rule, a finance rule is not a substitute.
If the entitlement request itself fails (non-200, timeout), warn the user that entitlements could not be verified and proceed anyway. The backend is the authority and enforces the same gate on POST — see the No allowed transaction types found row in step 6.
Note on scheduled rules. The scheduled trigger mode is licensed byTM_SCHEDULED_EVENTSspecifically, while thescheduledEventtype is also enabled byKYT. A tenant with onlyKYTmay therefore pass this gate and still be refused by the backend onnoEventTrigger. Build the rule as usual and surface the backend error verbatim if that happens.
Procedure
- Fetch tenant entitlements — only when creating or modifying a rule. Run
sumsub-check-permissionsand keep the keys ofallowedChecks. Once you know the rule'stypes, check that row in Tenant Entitlements and abort if none of its keys are present.
Skip this step entirely for work that is not a rule: tags, applicant assessment, risk levels, and client lists need no entitlement. Do not look for an entitlements endpoint other than the one sumsub-check-permissions calls — there is no other one.
- Determine mode — create or modify.
More from sumsub
Use this skill in a project
Open any RiverX project, search the Skills panel for sumsub/agent-skills/sumsub-create-kyt-rules, and install it in one click.
