Authenticate: include your TRM API key as Authorization: Basic YOUR_API_KEY (base64-encoded) or as an Authorization: Bearer token per TRM's current auth scheme — verify with TRM documentation as format may vary by account type
Screen the destination address: POST https://api.trmlabs.com/public/v2/screening/addresses with body [{"address": "<address>", "chain": "ethereum"}]; TRM returns results in under 400ms
Parse the response: check riskScore (0-100), riskLevel (LOW/MEDIUM/HIGH/SEVERE), and riskIndicators array for specific exposure categories (e.g. sanctions, darknet_market, stolen_funds)
Apply your risk policy: block if riskLevel is HIGH or SEVERE; queue for manual review if riskLevel is MEDIUM; allow if LOW — document the riskScore and indicators for the compliance record
For transaction monitoring, POST /public/v2/transaction-monitoring/transactions with the transaction hash and chain to initiate ongoing monitoring of the transfer once broadcast
Retrieve monitoring alerts: GET /public/v2/transaction-monitoring/alerts with filters status=OPEN and minRiskScore=<threshold> to support compliance triage queues
Known gotchas
TRM supports 100+ blockchains but chain identifiers vary (e.g. ethereum, bitcoin, solana); using an unsupported or misspelled chain identifier returns a 422 validation error rather than an empty result
TRM risk scores can change after initial screening as new intelligence is ingested — an address screened clean at withdrawal may be flagged days later; implement periodic re-screening for large open positions
TRM's BLOCKINT API coverage expands continuously; new chain support may require updating chain identifier lists in your integration — subscribe to TRM changelog notifications
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp