# publicaml [Health: Active]

**Category:** 💰 Finance & Fintech  
**Repository:** https://github.com/saloprj/publicaml-examples  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/publicaml

## Description
Free crypto AML/KYT screening for BTC/ETH/BSC/TRON — risk score, sanctions, source of funds.

## Claude Desktop Quick Installation
Remote MCP endpoint (confidence: high). Install path detected from listing signals. Add as a URL/SSE server in your client:

```json
"mcpServers": {
  "publicaml": {
    "url": "https://publicaml.org"
  }
}
```

## Documentation & 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`](https://github.com/saloprj/publicaml-examples/blob/HEAD/curl/enrich.sh) |
| Python | [`python/aml_check.py`](https://github.com/saloprj/publicaml-examples/blob/HEAD/python/aml_check.py) |
| JavaScript | [`javascript/amlCheck.mjs`](https://github.com/saloprj/publicaml-examples/blob/HEAD/javascript/amlCheck.mjs) |
| TypeScript | [`typescript/amlCheck.ts`](https://github.com/saloprj/publicaml-examples/blob/HEAD/typescript/amlCheck.ts) |
| Go | [`go/aml_check.go`](https://github.com/saloprj/publicaml-examples/blob/HEAD/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/`](https://github.com/saloprj/publicaml-examples/blob/HEAD/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.

