The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Publicaml listing page.
Copy-paste examples for screening a crypto wallet address or transaction for AML / KYT risk — sanctions, mixers, scam and hack exposure — using PublicAML.
Free. No API key. No signup. PublicAML is a non-profit; the public enrich endpoint takes requests with no authentication. An optional key only raises the rate limit.
Response (abridged):
aml_score — 0–100 (higher = riskier)category — entity type (exchange, mixer, hack, scam, sanction…)sanctioned — treat true as an override regardless of scoreChains: BTC, ETH, BNB Chain (BSC), TRON. An ERC20 and a BEP20 address look
identical — send the correct chain for the network you are on.
| Language | File |
|---|---|
| cURL | curl/enrich.sh |
| Python | python/aml_check.py |
| JavaScript | javascript/amlCheck.mjs |
| TypeScript | typescript/amlCheck.ts |
| Go | go/aml_check.go |
Drop-in tools so an AI agent can screen an address itself — LangChain, CrewAI,
and a zero-code MCP server for Claude Desktop / Cursor: frameworks/.
The point of a pre-send check is to decline rather than unwind. Screen the
recipient before you sign or accept funds and reject anything sanctioned or
above your risk threshold (75 is a common cut-off). See the language examples —
each returns the entity so you can gate on sanctioned / aml_score.
sanctioned: true should override softer category labels.MIT — use these snippets freely.