MCP Server

publicaml

io.github.saloprj/publicaml
Crypto & Web3 Legal & Compliance Security Public & reachable MCP 2025-11-25

What this MCP does

Screens crypto addresses and transactions for AML risk, sanctions exposure, counterparties, and source or destination of funds.

follow_swap
Follow funds through a swap
For one transaction that went through a DEX or aggregator, show the net balance change per address and asset and flag who the swap was actually for. Use it to continue a trace past a swap. EVM chains (ethereum, bsc). Read-only.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tx_hash', 'chain'], 'properties': {'chain': {'enum': ['ethereum', 'bsc'], 'type': 'string', 'description': 'ethereum or bsc.'}, 'tx_hash': {'type': 'string', 'description': '0x-prefixed transaction hash.'}, 'block_number': {'type': 'integer', 'description': 'Optional. Looked up automatically.'}}, 'additionalProperties': False}
list_counterparties
List counterparties
List the counterparties an address has transacted with — optionally filtered by entity category (cex, mixer, gambling, bridge, ...). Set with_risk=true to attach AML risk per counterparty. Read-only: it only lists existing on-chain counterparties, it never writes anything.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['address', 'chain'], 'properties': {'chain': {'enum': ['bitcoin', 'ethereum', 'bsc', 'tron'], 'type': 'string', 'description': 'Blockchain: bitcoin, ethereum, bsc or tron.'}, 'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Max counterparties to return.'}, 'address': {'type': 'string', 'description': 'The wallet whose counterparties to look at.'}, 'category': {'type': 'string', 'description': 'Optional. Only return counterparties of this entity type: cex, mixer, gambling, bridge, etc. Leave empty to list all significant counterparties.'}, 'with_risk': {'type': 'boolean', 'description': 'Attach aml_score/risk_level/sanctioned to each counterparty.'}}, 'additionalProperties': False}
list_transactions
List an address's transfers
A wallet's recent transfers, newest first, with direction and counterparty for each, plus what we know about each counterparty. Optionally only transfers with one kind of counterparty (e.g. 'did this wallet deposit to a casino'). Read-only.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['address', 'chain'], 'properties': {'chain': {'enum': ['bitcoin', 'ethereum', 'bsc', 'tron'], 'type': 'string', 'description': 'Blockchain: bitcoin, ethereum, bsc or tron.'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Max transfers to return. Default 25.'}, 'since': {'type': 'string', 'description': 'Optional start date, ISO-8601 (e.g. 2026-09-01).'}, 'until': {'type': 'string', 'description': 'Optional end date, ISO-8601.'}, 'address': {'type': 'string', 'description': 'The wallet to list.'}, 'counterparty_category': {'type': 'string', 'description': 'Optional. Only transfers whose counterparty is of this type: cex, mixer, gambling, bridge, etc.'}}, 'additionalProperties': False}
screen_address
Screen address for AML risk
Screen a crypto wallet address for AML/KYT risk. Returns an AML score (0-100), risk_level (LOW/MEDIUM/HIGH/CRITICAL), category, sanctioned exposure and source-of-funds. Read-only: it only looks the address up, it never changes anything.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['address', 'chain'], 'properties': {'chain': {'enum': ['bitcoin', 'ethereum', 'bsc', 'tron'], 'type': 'string', 'description': 'Blockchain: bitcoin, ethereum, bsc or tron.'}, 'address': {'type': 'string', 'description': 'The wallet address to screen.'}}, 'additionalProperties': False}
screen_transaction
Screen a transaction
Screen one transaction by hash: what moved, who took part, a label and AML risk for every participant, and an overall verdict. Pass focus_address (e.g. your own deposit address) to get the verdict from that wallet's point of view. Read-only.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tx_hash', 'chain'], 'properties': {'chain': {'enum': ['bitcoin', 'ethereum', 'bsc', 'tron'], 'type': 'string', 'description': 'Blockchain: bitcoin, ethereum, bsc or tron.'}, 'tx_hash': {'type': 'string', 'description': 'Transaction hash (0x-prefixed on EVM chains, bare hex txid on bitcoin).'}, 'block_number': {'type': 'integer', 'description': 'Optional. Looked up automatically on ethereum and bsc.'}, 'focus_address': {'type': 'string', 'description': 'Optional. The wallet you are screening for, to scope the verdict to it.'}}, 'additionalProperties': False}
trace_funds
Trace outgoing funds
Follow the OUTGOING funds from an address across the chain and report where the money ends up (exchanges, mixers, sanctioned wallets) and how many hops away. Read-only: it only reads on-chain history, it never moves or changes funds.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['address', 'chain'], 'properties': {'chain': {'enum': ['bitcoin', 'ethereum', 'bsc', 'tron'], 'type': 'string', 'description': 'Blockchain: bitcoin, ethereum, bsc or tron.'}, 'address': {'type': 'string', 'description': 'The address whose outgoing funds to follow.'}, 'max_hops': {'type': 'integer', 'maximum': 12, 'minimum': 1, 'description': 'How many hops to follow. Default 3 (6 on bitcoin); raise it only if the result is incomplete.'}}, 'additionalProperties': False}
trace_source_of_funds
Trace where funds came from
Walk an address's INCOMING funds backwards to answer 'where did this wallet's money come from'. Stops at labelled entities (exchanges, mixers, services) and reports them with hop distance. Answers source-of-funds questions. Read-only: it only reads on-chain history.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['address', 'chain'], 'properties': {'chain': {'enum': ['bitcoin', 'ethereum', 'bsc', 'tron'], 'type': 'string', 'description': 'Blockchain: bitcoin, ethereum, bsc or tron.'}, 'address': {'type': 'string', 'description': 'The address whose funding to trace.'}, 'max_hops': {'type': 'integer', 'maximum': 8, 'minimum': 1, 'description': 'How far back to walk. Default set by the API.'}}, 'additionalProperties': False}
Changed
list_transactions
Oct. 1, 2026, 2:50 a.m.
Changed
follow_swap
Oct. 1, 2026, 2:50 a.m.
Changed
screen_transaction
Oct. 1, 2026, 2:50 a.m.
Changed
trace_source_of_funds
Oct. 1, 2026, 2:50 a.m.
Changed
list_counterparties
Oct. 1, 2026, 2:50 a.m.
Changed
trace_funds
Oct. 1, 2026, 2:50 a.m.
Changed
screen_address
Oct. 1, 2026, 2:50 a.m.
Added
list_transactions
Sept. 17, 2026, 12:52 p.m.
Added
follow_swap
Sept. 17, 2026, 12:52 p.m.
Added
screen_transaction
Sept. 17, 2026, 12:52 p.m.
Added
trace_source_of_funds
Sept. 17, 2026, 12:52 p.m.
Added
list_counterparties
Sept. 17, 2026, 12:52 p.m.
Added
trace_funds
Sept. 17, 2026, 12:52 p.m.
Added
screen_address
Sept. 17, 2026, 12:52 p.m.