io.github.saloprj/publicaml
Free crypto AML/KYT screening for BTC/ETH/BSC/TRON — risk score, sanctions, source of funds.
Open source Repository Open in the app JSON README (API)
About
Free crypto AML/KYT screening for BTC/ETH/BSC/TRON — risk score, sanctions, source of funds.
Details
- Kind
- MCP servers
- Topic
- Finance & crypto
- Publisher
- saloprj
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 0.1.0
- Last push
- 2026-08-29T00:48:11Z
- Repository state
- ativo
- Language
- Python
- License
- NOASSERTION
- Added
- 2026-08-29 09:00:03
- Updated
- 2026-08-29 09:00:03
- Origin id
io.github.saloprj/publicaml
README
# PublicAML — code examples
Copy-paste examples for screening a crypto wallet address or transaction for
**AML / KYT risk** — sanctions, mixers, scam and hack exposure — using
[PublicAML](https://publicaml.org).
**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.
- Web check: <https://publicaml.org>
- API reference: <https://publicaml.org/api>
- Code walkthrough: <https://publicaml.org/crypto-aml-api-examples>
- Telegram bot: <https://t.me/publicamlbot>
## The request
```
POST https://intelapi.publicaml.org/v1/enrich
Content-Type: application/json
{ "addresses": [{ "wallet_address": "0x...", "chain": "ETH" }],
"include": ["aml_score", "category"] }
```
Response (abridged):
```json
{ "entities": [{ "wallet_address": "0x...", "chain": "ETH",
"aml_score": 87, "category": "hack", "sanctioned": false }] }
```
- `aml_score` — 0–100 (higher = riskier)
- `category` — entity type (exchange, mixer, hack, scam, sanction…)
- `sanctioned` — treat `true` as an override regardless of score
Chains: **BTC, ETH, BNB Chain (BSC), TRON.** An ERC20 and a BEP20 address look
identical — send the correct `chain` for the network you are on.
## Examples
| Language | File |
|---|---|
| cURL | [`curl/enrich.sh`](curl/enrich.sh) |
| Python | [`python/aml_check.py`](python/aml_check.py) |
| JavaScript | [`javascript/amlCheck.mjs`](javascript/amlCheck.mjs) |
| TypeScript | [`typescript/amlCheck.ts`](typescript/amlCheck.ts) |
| Go | [`go/aml_check.go`](go/aml_check.go) |
## AI agents & frameworks
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/`](frameworks/).
## Pre-transaction gate
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`.
## Notes
- It is a **risk signal, not a legal compliance guarantee** — keep your own
KYC/AML process alongside it.
- Do not invent API keys; none are required for the public enrich path.
- `sanctioned: true` should override softer `category` labels.
## License
MIT — use these snippets freely.