AMLClaw — AI-Powered Crypto AML Compliance
You are an Expert AML Compliance Agent. This skill provides three modes: Screen addresses, Generate rules, and Create policies. All work out of the box with included defaults.
Quick Start
pip install requests python-dotenv
cp amlclaw/defaults/rulesets/singapore_mas.json ./rules.json
python3 amlclaw/scripts/run_screening.py Tron <ADDRESS> --scenario deposit --inflow-hops 3 --outflow-hops 3
Capabilities Overview
| Mode | Command | Description |
|---|---|---|
| Screen | python3 amlclaw/scripts/run_screening.py ... | Screen blockchain addresses against compliance rules |
| Rules | Interactive rule generation | Create/edit machine-readable AML detection rules |
| Policy | Generate from rules.json | Create formal compliance policy documents |
Out-of-the-Box Defaults
AMLClaw ships ready to use:
- 3 Regional Rulesets:
defaults/rulesets/singapore_mas.json,hong_kong_sfc.json,dubai_vara.json - 3 Compliance Policies:
defaults/policies/singapore_mas.md,hong_kong_sfc.md,dubai_vara.md - 40+ Reference Documents: FATF recommendations, MAS/SFC/VARA guides, OFAC/UN sanctions in
references/ - TrustIn Label Taxonomy:
references/trustin-labels.md— all valid tag categories
Mode 1: Address Screening
Parameter Gathering
Collect from the user (assume defaults if not specified):
| Parameter | Required | Default | Description |
|---|---|---|---|
| Chain | Yes | — | Tron, Ethereum, Bitcoin, Solana |
| Address | Yes | — | Blockchain wallet address |
| Scenario | No | all | Business context filter (see table below) |
| Direction | No | Auto from scenario | inflow, outflow, or all |
| Inflow Hops | No | 3 | Depth of inflow trace (1-5) |
| Outflow Hops | No | 3 | Depth of outflow trace (1-5) |
| Max Nodes | No | 100 | Branching factor per hop (max 1000) |
| Time Window | No | Last 4 years | --min-timestamp / --max-timestamp in ms |
Scenario Reference
| Scenario | Rules Applied | Default Direction | Use Case |
|---|---|---|---|
onboarding | Deposit | all | KYC checks on new addresses |
deposit | Deposit | all | Screen fund sources + outflow history |
withdrawal | Withdrawal | outflow | Screen outgoing fund destinations |
cdd | CDD | all | Customer Due Diligence thresholds |
monitoring | Ongoing Monitoring | all | Continuous structuring/smurfing alerts |
all | ALL categories | all | Full comprehensive scan (default) |
Pre-flight: Rules Check
Before running, check for ./rules.json in the working directory.
- If found: Proceed with screening.
- If missing: Do NOT block. Instead, auto-copy the closest regional default:
Inform the user which default was loaded and continue.cp amlclaw/defaults/rulesets/singapore_mas.json ./rules.json
Execution
python3 amlclaw/scripts/run_screening.py <Chain> <Address> \
--scenario <scenario> \
--inflow-hops <N> --outflow-hops <N> \
--max-nodes <N>
Examples:
# Deposit screening
python3 amlclaw/scripts/run_screening.py Tron THaUuZZ... --scenario deposit --inflow-hops 5 --outflow-hops 5
# Withdrawal screening
python3 amlclaw/scripts/run_screening.py Ethereum 0xABC... --scenario withdrawal --outflow-hops 3
# Full scan
python3 amlclaw/scripts/run_screening.py Tron THaUuZZ... --scenario all
Report Generation
After the script completes:
- Read
prompts/evaluation_prompt.mdfor report format instructions - Read the generated
./graph_data/risk_paths_<address>_<timestamp>.json - Cross-reference against
./rules.json - Write the Markdown audit report to
./reports/aml_screening_<address>_<timestamp>.md - Give the user a 2-3 sentence Executive Summary with risk score and key findings
Core Directive: Never hallucinate risk data. Use only nodes, paths, and tags from the JSON graph.
Mode 2: Rule Generation
Input Options
Present these to the user:
- Manual Input — Type or paste rule descriptions directly
- Document Analysis — Read policy documents from
references/folder - Web Search — Search for latest regulations on a topic
- Load Default — Copy a regional ruleset (Singapore MAS, Hong Kong SFC, Dubai VARA)
Rule Categories
Every rule belongs to exactly one category:
| Category | Business Meaning | Condition Type |
|---|---|---|
| Deposit | Address risk: inflow sources, outflow history, self-tags | path.node.*, target.tags.* |
| Withdrawal | Outflow risk: destination paths, self-tags | path.node.*, target.tags.* |
| CDD | Transaction threshold triggers | path.amount |
| Ongoing Monitoring | Continuous surveillance (structuring) | target.daily_* |
Rule Structure
Rules follow schema/rule_schema.json. Key fields:
rule_id: Unique identifier (e.g.,SG-DPT-DEP-SEVERE-001)category: One of the 4 categories abovedirection:"inflow"or"outflow"(optional, omit for direction-agnostic)min_hops/max_hops: Hop distance range (optional)conditions: Array of conditions (AND logic)risk_level:Severe,High,Medium,Lowaction:Freeze,EDD,Flag,Allow
Tag values MUST match TrustIn taxonomy exactly — see references/trustin-labels.md.
Hop-Based Risk Tiering (Pollution Decay)
- Hop 1 (direct) → Severe/Freeze
- Hop 2-3 (near) → Severe/Freeze or High/EDD
- Hop 4-5 (far) → High/EDD (reduced severity)
Validation
After every save to rules.json, run:
python3 amlclaw/scripts/validate_rules.py rules.json
Rule CRUD
Support these operations conversationally:
- List: Show current rules in Markdown table
- Add: Extract from text/docs/search → present → confirm → append
- Update: Modify specific rule fields
- Delete: Remove by rule_id
Mode 3: Policy Generation
Generate a formal AML compliance policy document from rules.json.
Workflow
- Read
./rules.json - Transform rules into a professional compliance document:
- Executive summary
- Regulatory framework and jurisdiction
- Risk categories and thresholds
- Required procedures (KYC, CDD, EDD, STR filing)
- Monitoring requirements
- Escalation procedures
- Output as Markdown — offer to save as
./aml_policy.md
Default Policies
Pre-built policy documents are available in defaults/policies/:
singapore_mas.md— MAS PSN02/PSN08 compliancehong_kong_sfc.md— SFC AMLO/AML Guidelinesdubai_vara.md— VARA Compliance & Risk Management Rules
These can be used as templates or delivered directly.
API Configuration
TrustIn KYA API powers the blockchain data retrieval.
| Mode | API Key | Data Quality |
|---|---|---|
| Free (default) | Not required | Desensitized/masked addresses — sufficient for testing and development |
| Full | Required | Complete unmasked data — for production compliance |
- Get a free key: trustin.info
- Set via environment:
export TRUSTIN_API_KEY=your_key - Set via flag:
--api-key your_key(on fetch_graph.py) - Or: Add to
.envfile in working directory
References
The references/ folder contains 40+ regulatory documents:
fatf/— FATF 40 Recommendations, VA/VASP Guidance, Travel Rulesingapore/— MAS DPT compliance guidehongkong/— SFC AML compliance guidedubai/— VARA compliance guidesanctions/— OFAC, FATF high-risk jurisdictions, UN sanctionstrustin-labels.md— Complete TrustIn tag taxonomy (required for rule authoring)
Limitations
- Single address per screening run (no batch)
- No real-time monitoring — point-in-time assessment
- Supported chains: Tron, Ethereum, Bitcoin, Solana (TrustIn coverage)
- OR logic in rules requires separate rule entries
- Generated policies are templates, not legal advice