# BlockchainAnalysis

> Compliance MCP for AI agents: sanctions & KYT screening on 50+ chains, stablecoin-freeze, oracle.

- name: io.blockchainanalysis/mcp
- version: 1.2.0
- connection class: R0 (autonomous)
- trust: 79/100 flags: no-repository
- quality: 89/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.blockchainanalysis%2Fmcp
- tools: https://api.protogrid.dev/v1/servers/io.blockchainanalysis%2Fmcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "blockchainanalysis": {
      "type": "http",
      "url": "https://blockchainanalysis.io/api/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 98
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-96% ~updated-54d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 89/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 13 of 13 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: check_stablecoin_freeze (destructiveHint, idempotentHint); check_token_security (destructiveHint, idempotentHint); screen_address (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 3,016 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 3 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 13, about 3,016 tokens to load them all
- tool set hash: 7ddb4d0aec61542541fa81f8c62468b3
- tools last changed: 2026-10-13T16:48:49.413Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.blockchainanalysis/mcp.svg)](https://protogrid.dev/servers/io.blockchainanalysis/mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-13 `oracle_verdict` changed (description, outputSchema)
  - before: Consumer-protection verdict for a wallet or contract: a normalized verdict (safe / caution / high_risk) with a 0-100 score, confidence tier, and plain-language reasons. Answers 'is it safe to interact with this address?' Paid per call via x402 (USDC on Base).
  - after: Consumer-protection verdict for a wallet or contract: a normalized verdict (safe / warning / danger, or unknown) with a 0-100 score, confidence tier, and plain-language reasons. Answers 'is it safe to interact with this address?' Paid per call via x402 (USDC on Base).
- 2026-10-13 `screen_agent_wallet` changed (outputSchema)
- 2026-10-13 `check_stablecoin_freeze` changed (outputSchema)

Full history: https://api.protogrid.dev/v1/servers/io.blockchainanalysis%2Fmcp/changes

## Remotes

- https://blockchainanalysis.io/api/mcp (streamable-http, auth none, reachable true, uptime30d 0.95652175)

## Packages

_none_

## Tools (13)

- `check_stablecoin_freeze`: Check whether Tether (USDT) or Circle (USDC) have blacklisted a wallet address on-chain. Reads the issuer's blacklist function directly across 15 chains (ETH, BSC, POLYGON, ARBITRUM, OPTIMISM, BASE, AVALANCHE, PLASMA, HYPEREVM, STABLE, INK, BERACHAIN, ROBINHOOD, TRON, SOL). A frozen address can no longer send or receive that stablecoin. Also reports whether the address was PREVIOUSLY frozen and later unfrozen (a prior-freeze signal from the freeze ledger). The result reports the observed on-chain fact (frozen / not frozen at check time), never the cause of a freeze. Free.
- `check_token_approvals`: List a wallet's active ERC-20 token approvals on Ethereum and who can move its funds — risk-scored against BA's 1B+ entity labels (scam / phishing / exploit / sanctioned spenders), flagging unlimited allowances and stale grants. The wallet's attack surface at a glance. Read-only. Ethereum only. Free.
- `check_token_security`: Simulate a buy-and-sell of an ERC-20 token on its main DEXes to surface honeypots (tokens you can buy but not sell), extreme transfer taxes, name/symbol impersonation, and active mint authority — cross-referenced against BA's 1B+ entity labels. Reports observed facts (e.g. 'sell simulation reverted'), not verdicts. Live on Base, BNB Chain, Ethereum, Optimism, Polygon, Arbitrum. No transaction is sent. Free.
- `get_freeze_events`: Query the canonical stablecoin freeze ledger — the HISTORY of freeze / unfreeze / destroy events by Tether (USDT), Circle (USDC/EURC), Paxos (USDP) and First Digital (FDUSD), sourced from the issuers' own on-chain blacklist events across Ethereum, Polygon, Optimism, TRON and more. Filter by frozen address, chain, kind, or time; omit all filters for the most recent events. This is the EVENT HISTORY — to check whether an address is frozen right now, use check_stablecoin_freeze instead. Each row is a verifiable on-chain fact (issuer acted on address at block/time); it never states the cause. Free.
- `kyt_risk`: Assess a wallet's KYT (Know-Your-Transaction) risk: sanctions + entity classification + VASP/jurisdiction score + cluster context → one risk verdict (critical / high / medium / low / unknown) with flags. Paid per call via x402 (USDC on Base).
- `kyt_tx`: Transaction KYT: screens BOTH counterparties of a transfer (from → to) against sanctions + entity + VASP + cluster, returning a combined risk level, a block/review/allow recommendation, and directional FROM:/TO: flags. Paid per call via x402 (USDC on Base).
- `label`: Look up BlockchainAnalysis's entity labels for a single address: every label on record (sanctions from OFAC / EU / UN / UK HMT / Swiss SECO, issuer-freeze state, scam, phishing, exploit, mixer, exchange, and more), each with its category, threat level (SAFE to CRITICAL), and full provenance (source, source URL, confidence, and the date it was last verified). This is the raw label read behind BA Intel, the only way to buy it per call with no account and no API key. An address we hold no label for returns an explicit not-found with the reason, never an empty result, and an absent label is not a statement that the address is safe. Paid per call via x402 (USDC on Base).
- `list_supported_chains`: List the BlockchainAnalysis MCP tools, the chains each supports, and pricing. Call this first to discover what the server can do (and which calls are free vs paid) before invoking a tool. Free.
- `oracle_verdict`: Consumer-protection verdict for a wallet or contract: a normalized verdict (safe / warning / danger, or unknown) with a 0-100 score, confidence tier, and plain-language reasons. Answers 'is it safe to interact with this address?' Paid per call via x402 (USDC on Base).
- `rwa`: Identify a tokenized real-world asset from its token address: what it represents, who issues it, its asset class, ISIN and issuer jurisdiction, whether transfers are permissioned, and every chain the issuer publishes it on. Each answer carries its provenance: the issuer source, how the address was established (issuer-registry / issuer-page-only / third-party), a confidence, and the date the address was last round-tripped on-chain. An address we do not recognise returns an explicit not-found with the reason, never an empty result. Does NOT cover the issuer's control over a balance (pause, blocklist, seizure). Paid per call via x402 (USDC on Base).
- `screen_address`: Screen a wallet against BlockchainAnalysis's 1B+ entity-label dataset: sanctions (OFAC / EU / UN / UK HMT / Swiss SECO), scam, phishing, exploit, mixer, exchange, and more — each label carries a threat level (SAFE→CRITICAL), source, and confidence. Works across major EVM chains plus TRON, SOL, and BTC. Paid per call via x402 (USDC on Base).
- `screen_agent_wallet`: Boolean compliance verdict for an agent wallet or counterparty: clear / flagged / unknown, plus the top risk category, screened against BA's 1B+ entity labels (sanctions, scam, phishing, exploit, mixer) and live stablecoin freeze state. Deliberately a verdict only — the label detail, freeze history, and scores are in the paid screen_address / kyt_risk tools, and a signed, on-chain-anchored proof is in the paid screen_agent_wallet_attested tool. Free.
- `screen_agent_wallet_attested`: Screen an agent wallet and return a SIGNED, on-chain-anchored compliance attestation: the verdict (clear / flagged / unknown) plus an EIP-712 (secp256k1) signature over the result and a BA Stamp anchor, so a third party or a smart contract can verify it offline via ecrecover without trusting us live. The free screen_agent_wallet tool returns the verdict only. Paid per call via x402 (USDC on Base).
