About publicaml
PublicAML provides code examples for screening cryptocurrency wallet addresses and transactions for AML/KYT risk. The unauthenticated public endpoint returns risk scores, entity categories, and sanctions status for BTC, ETH, BSC, and TRON; it is a risk signal, not a compliance guarantee.
Key features
- 01Screen wallet addresses and transactions
- 02Return AML score and entity category
- 03Flag sanctioned entities
- 04Support BTC, ETH, BSC, and TRON
- 05Provide examples in five programming languages
Use cases
- 01Screen a recipient before sending crypto
- 02Decline transfers to sanctioned addresses
- 03Assess exposure to mixers, scams, or hacks
MCP support
The README mentions a zero-code MCP server for Claude Desktop and Cursor in the frameworks directory, enabling AI agents to screen addresses. It does not describe the MCP tools or their exact exposed operations.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://mcp.publicaml.org/mcpclaude mcp add --transport http saloprj-publicaml https://mcp.publicaml.org/mcp{"mcpServers":{"saloprj-publicaml":{"type":"http","url":"https://mcp.publicaml.org/mcp"}}}Open in Cursor{"servers":{"saloprj-publicaml":{"type":"http","url":"https://mcp.publicaml.org/mcp"}}}Open in VS Code{"mcpServers":{"saloprj-publicaml":{"type":"http","url":"https://mcp.publicaml.org/mcp"}}}{"mcpServers":{"saloprj-publicaml":{"serverUrl":"https://mcp.publicaml.org/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
7| Parameter | Type | Required | Description |
|---|---|---|---|
| chain | enum | Yes | Blockchain: bitcoin, ethereum, bsc or tron.bitcoin | ethereum | bsc | tron |
| address | string | Yes | The wallet address to screen. |
Details
From the project READMEPublicAML — 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.
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):
{ "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— treattrueas 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 |
| Python | python/aml_check.py |
| JavaScript | javascript/amlCheck.mjs |
| TypeScript | typescript/amlCheck.ts |
| 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/.
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: trueshould override softercategorylabels.
License
MIT — use these snippets freely.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.