Eagle Virtual USDT & USDC Blacklist Tracker
Check any wallet against the on-chain record of stablecoin freezes, blacklistings and seizures (USDT, USDC and 442 more coins on 35 blockchains). Dated, cited, no risk scores. Remote server, no account needed.
Hosted MCP Server
npx add-mcp 'https://mcp.eaglevirtual.com/mcp'Installs into Claude Code, Codex, Cursor, VS Code and more
Documentation
The blacklist and freeze record, for AI assistants
Ask Claude, ChatGPT or Cursor whether Tether, Circle or any other issuer has blacklisted, frozen or seized a wallet. It is the same record as this site.
What it is
These tools read the stablecoin blacklist and freeze record: what each issuer, the business that created a coin and can freeze it, has done to wallets. Every answer comes from the same live record this site shows, and says the date it was read.
| Item | Detail |
|---|---|
| Endpoint | https://mcp.eaglevirtual.com/mcp |
| Transport A standard way for an AI assistant to call an outside tool. Your assistant sends the question to our server and gets back dated records. You paste the address above into your assistant once, and it does the rest. | Streamable HTTP: JSON-RPC over POST. GET is refused with 405. |
| Specification | MCP revision 2026-07-28 |
| Server name | eagle-virtual, version 1.1.0 |
| Authentication | None. All six tools only read. Without an account, one network address gets 100 calls a day, and signing in lifts that. Calls from Anthropic's, OpenAI's and Perplexity's own servers are not counted. |
| Hostname | https://mcp.eaglevirtual.com, live since 22 August 2026. This is the only supported address. |
How to connect
Paste https://mcp.eaglevirtual.com/mcp into your client. If a menu path below disagrees with the client's own documentation, follow the client's.
-
Claude (web and desktop)
Settings → Connectors → Add custom connector → paste https://mcp.eaglevirtual.com/mcp → Add. On Team and Enterprise plans an owner adds it once. -
ChatGPT
Turn on Developer mode in Settings, add a remote MCP server, enter https://mcp.eaglevirtual.com/mcp, and choose no authentication. -
Claude Code, Cursor, VS Code, or any other MCP client
Use the snippets below, each in that client's own mcp.json.
Claude Code, Cursor, VS Code
# Claude Code — one command:
claude mcp add --transport http eaglevirtual https://mcp.eaglevirtual.com/mcp
# Claude Code — or .mcp.json at the project root (the type line is required):
{
"mcpServers": {
"eaglevirtual": {
"type": "http",
"url": "https://mcp.eaglevirtual.com/mcp"
}
}
}
# Cursor — .cursor/mcp.json in the project, or ~/.cursor/mcp.json:
{
"mcpServers": {
"eaglevirtual": {
"url": "https://mcp.eaglevirtual.com/mcp"
}
}
}
# VS Code — .vscode/mcp.json:
{
"servers": {
"eaglevirtual": {
"type": "http",
"url": "https://mcp.eaglevirtual.com/mcp"
}
}
}
Reading, indexing and bulk access
Search engines and AI assistants are welcome to read, index and cite these pages. To copy the record in bulk, tell us what you are building at sales@eaglevirtual.com.
Training a model on the record, or republishing it in bulk, needs a written agreement. The rules are at /license.
Try these
Each prompt answers with dated records, from the tool named beside it.
| Item | Detail |
|---|---|
| Which controls has Circle actually used on USDC, and when did it last use each? | get_token_policy: every control it has used, with dates and counts. |
| How many wallets did Tether blacklist in 2025, and how does that compare to 2024? | get_token_statistics: USDT counts by year, with events and wallets. |
| Which chains does this cover, and how current is it? | get_coverage: every chain and coin covered, and how current each is. |
| Has Tether ever frozen or blacklisted this wallet: TNiq9AXBp9EjUqhDhrwrfvAA8U3GUQZH81? | get_address_status: its state and one dated record for each event. |
| Show me recent USDT freezes on Tron. | list_freeze_events: the newest published rows, USDT on Tron. |
| What is the largest stablecoin blacklist and the largest freeze ever recorded? | get_biggest, called twice: the largest blacklist and the largest freeze since 2018. |
The full tool reference: every tool, field and response
Querying the server directly
You do not need a client library. The server speaks JSON-RPC 2.0 over HTTP: one POST for each call to https://mcp.eaglevirtual.com/mcp. The six read tools need no account and no key, and GET is answered with 405. Four headers are required: Content-Type: application/json; Accept: application/json, text/event-stream; MCP-Protocol-Version: 2026-07-28; and Mcp-Method naming the JSON-RPC method. A tools/call also needs Mcp-Name naming the tool. Because the server implements protocol revision 2026-07-28, every request also includes the per-request envelope in params._meta (the protocol version, your client's name and version, and its capabilities). A request without it is refused with a JSON-RPC error that says which key is missing. A request whose headers and body disagree is refused with -32020 rather than guessed at.
The same call shapes work for every tool: tools/list to read the six schemas, then tools/call with the tool name and its arguments. The example below checks one wallet. The response that follows is what the live server returned for it on 12 September 2026, cut down to one record.
Request: curl, tools/call get_address_status
curl -s https://mcp.eaglevirtual.com/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2026-07-28' \
-H 'Mcp-Method: tools/call' \
-H 'Mcp-Name: get_address_status' \
-d '{
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {
"name": "get_address_status",
"arguments": { "address": "0x9b2328055872e7470e9cfdafa0186c1c72c3bac4" },
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientInfo": { "name": "my-script", "version": "1" },
"io.modelcontextprotocol/clientCapabilities": {}
}
}
}'
What comes back
A JSON-RPC result. Its content[0].text is the answer as a JSON string, and its structuredContent is the same answer as an object. The state is one of restricted, clean, or stale. Every record includes a title, a one-sentence text that names the issuer as the actor, a url on this site to cite, the record data (including the amount and the dollar figure where the record has them), and a metadata block with the as-of date and the license. known_name is the wallet's verified ENS primary name where it has one, and null otherwise, as in this sample. No other kind of name is ever served, so known_name_verified is true whenever a name is present. A wallet with nothing on record answers clean only while we can vouch for every chain, and stale otherwise. It is not a bare clean over a gap.
Response, cut down to one record
{
"jsonrpc": "2.0", "id": 1,
"result": {
"content": [{ "type": "text", "text": "{ …the same object as structuredContent… }" }],
"structuredContent": {
"address": "0x9b2328055872E7470e9CFDAfA0186C1c72C3bAc4",
"lookup_key": "0x9b2328055872e7470e9cfdafa0186c1c72c3bac4",
"recognized": true,
"known_name": null,
"known_name_verified": null,
"state": "restricted",
"headline": "3 records found",
"record_count": 3,
"records": [
{
"id": "fae73fe502850f640120e24afa1c075d",
"title": "USDT — balance taken on Ethereum, block 25,776,080",
"url": "https://eaglevirtual.com/address/0x9b2328055872e7470e9cfdafa0186c1c72c3bac4",
"text": "Tether took the balance of 0x9b2328055872e7470e9cfdafa0186c1c72c3bac4 on Ethereum on 2026-08-17, block 25,776,080. Transaction 0xd87f889460d81cb099eb1d617efad22728aae787fb2fb5d7f948bb634add4ad9. Amount 178,835.401131 USDT, as the event logged it ($178,835.40 at the event block, basis peg).",
"metadata": {
"source": "Eagle Virtual USDT & USDC Blacklist Tracker",
"as_of": "2026-08-24",
"corpus_as_of": "2026-08-24",
"exported_at": "2026-08-24T21:01:57.000Z",
"license": "https://eaglevirtual.com/license.xml"
},
"data": {
"address": "0x9b2328055872e7470e9cfdafa0186c1c72c3bac4",
"chain": "Ethereum", "chain_id": "1", "coin": "USDT", "issuer": "Tether",
"category": "blacklist", "event_signature": "DestroyedBlackFunds(address,uint256)",
"is_seizure": true, "is_release": false,
"observed_at": "2026-08-17T16:44:47.000Z", "block_number": 25776080,
"transaction_hash": "0xd87f889460d81cb099eb1d617efad22728aae787fb2fb5d7f948bb634add4ad9",
"amount": "178,835.401131", "amount_unit": "USDT",
"amount_basis": "logged", "amount_note": "As the event logged it.",
"usd": "$178,835.40", "usd_basis": "peg"
}
}
]
}
}
}
The six tools
The server lists six tools, in this order, and every one of them only reads. They answer with counts, dates, the one address you supplied, the published feed, or the largest recorded amounts. Nothing here writes anything or needs an account.
Every response has the same shape: a state or a count, a list of records, and a metadata block. Every record is one object you can cite: an id, a title, a url on this site, a one-sentence dated text with the issuer as the actor, and a data block of structured fields. A wallet with six recorded events comes back as six records, each pointing at that wallet's page here.
The metadata block has source, as_of (the date of the most recent recorded event, not today's date), corpus_as_of, exported_at (when we last published the data this server answers from), and license. When we cannot vouch for a chain at the moment of the call, not_vouched_for names it: the chain, whether it was never scanned or is behind, and the last verified block. coverage_note says the same in a sentence. When our data does not answer at all, coverage_note says that instead. Neither case is ever left silent.
| Item | Detail |
|---|---|
| get_address_status | Give it one wallet. It returns every recorded freeze, seizure, blacklisting or on-chain sanctions listing against it, with the transaction and block for each. State: clean, restricted or stale. |
| get_token_statistics | Counts by coin, chain, month or year. Returns no addresses. |
| get_token_policy | For each coin, which restriction controls the issuer has actually used, how many times, and the first and most recent dates. Returns no addresses. |
| get_coverage | The chains and coins covered, the as-of date, and which chains we cannot vouch for right now. |
| list_freeze_events | The published feed of recent events (the same rows the events page shows, inside the last 6 months), filterable by coin, chain, kind and date. Give it a month to list one whole month instead: the last 6 months without an account, the last 12 months with a free account, and every month on the Business plan. It is one of the two tools that return addresses you did not supply (the other is get_biggest's default view), and it cannot be paged past. |
| get_biggest | The largest recorded blacklistings, freezes, seizures and releases, largest first, filterable by coin, chain and kind. A restriction is ranked by the balance the wallet held. A seizure is ranked by the balance taken. Each row says which. The default view is the same 6-month window and names the wallet. scope all_time covers the whole record back to 2018 and names no wallet, transaction or block. |
get_address_status: check a wallet
Give it one address in any form its chain uses (EVM, TRON, Solana or Stellar). Casing does not matter. The address is normalized before the lookup, so a checksum-cased address and its lowercase form are the same wallet.
What comes back: the full address, the state (clean, restricted or stale), a headline ("No freeze, seizure, or blacklist recorded", "N records found", or "We cannot vouch for this right now"), and one record for each recorded event. Each record has the issuer, the coin, the chain, the date, the block, the transaction hash, the event signature, and the amount and dollar figure where the record has them. known_name is the wallet's verified, current ENS primary name, or null. An ENS name that is not the primary, an external label or a reported name is never served, so known_name_verified is true whenever a name is present. Each record also includes the coin's contract and full name, the kind word the page prints, and the dollar basis in plain English. A string that is not a valid address on any chain we check returns recognized: false and no lookup is run, so a typo cannot read as a clear wallet.
stale means we could not vouch for the answer at that moment. Either our data did not answer, or a chain the answer depends on was behind. It is a statement about us, not about the wallet.
Amounts and dollar figures are returned where the record has them, and only there. amount is the quantity in the coin's own units. amount_unit names the coin, and amount_basis says where the figure came from: logged, as the event itself named it, or measured on-chain. A measured figure is the balance the wallet held at the event block for a restriction, or in the block before for a seizure, because the seizure block destroyed it. usd is the dollar figure at a certified price for that coin at that block, formatted to the cent, with usd_basis naming the price source. Where no certified price exists for that block, usd is null. It is not today's price on an old event, and it is not $0.00. Where the record has no amount at all, amount is null and amount_note says so.
| Item | Detail |
|---|---|
| address | Required. The wallet address, in any format the chain uses; up to 120 characters. |
get_token_statistics: counts, no addresses
Counts of recorded freezes, seizures and blacklistings, grouped by coin, chain, month or year, with the date of the first event and the as-of date. Wallet counts are distinct within each grouping and do not add up to the total on purpose: a wallet restricted by two issuers is one wallet overall and one in each of two rows, and the response says so.
The total is counted over every coin we check, which includes coins that are not stablecoins. The response labels it that way rather than letting "stablecoin wallets" be inferred.
| Item | Detail |
|---|---|
| token | Optional. A coin symbol, e.g. USDT. Omit for every coin. |
| chain | Optional. A chain name or chain id, e.g. Ethereum or 1. |
| group_by | Optional. One of token, chain, month, year, overall. Defaults to token. |
get_token_policy: what an issuer has done
For a coin, the record of which restriction controls the issuer has actually used (freezing, blacklisting, taking a balance, lifting a restriction), each with its on-chain event signature, how many times, and the first and most recent dates, on the chains we check, as of the as_of date in the answer.
It reports what has happened. It does not report what a contract is capable of: contract capability inspection is not published, the contract_capability field is null rather than false, and the note beside it says that an absence of recorded events is not evidence that a control is absent. A coin with nothing recorded comes back as nothing recorded, dated and scoped. It does not come back as "cannot freeze".
| Item | Detail |
|---|---|
| token | Optional. A coin symbol, e.g. USDT, USDC, EURC. Omit for every coin on record. |
get_coverage: what we check, and how fresh it is
Takes no arguments. Returns the chains and coins covered, the number of recorded events, the first-event and as-of dates, one record for each chain saying whether we can vouch for it right now, and the same not_vouched_for list every other tool includes. all_lanes_current is true, false, or null. It is null when our data could not be asked, because "we could not check" must not read as "everything is current".
Call it before relying on an answer about a chain or a coin. A chain we are not checking shows as not currently checked, and an absence of records for it means nothing.
list_freeze_events: the published feed
The same recent events the events page shows (the last 6 months, capped at the published feed), filterable by coin, chain, kind and date, up to 100 rows in one call and 25 by default. Each row is one record citing that wallet's page.
Give it a month (YYYY-MM) to list one whole recorded month instead, the same rows the events page shows for that month. Which months it reaches follows the account: the last 6 months without an account, the last 12 months with a free account, and every month on the Business plan. A month outside that answers with an error named window and the sentence the events page shows. Every answer says its window in window_months and window_source. A month row shows the priced US dollar figure and no native quantity. get_address_status shows the quantity.
It is a published sample, not the whole record, and the response says so: subset_note states the sample size and that there is no way to page past it, and matched_in_published_subset and truncated say what the filters hit. There is no cursor, no offset, no prefix search and no "what changed since". Each of those would hand over the full list a row at a time. For one wallet, use get_address_status. For totals, use get_token_statistics.
| Item | Detail |
|---|---|
| token | Optional. A coin symbol, e.g. USDT. |
| chain | Optional. A chain name or chain id, e.g. Tron or 1. |
| kind | Optional. One of blacklist, freeze, seizure, release, sanctions, delisting. |
| since | Optional. Only events on or after this date, YYYY-MM-DD. |
| month | Optional. One whole recorded month, YYYY-MM, instead of the recent feed. The last 6 months without an account, the last 12 months with a free account, and every month on the Business plan. |
| limit | Optional. Rows to return, 1 to 100. Defaults to 25. |
get_biggest: the largest recorded amounts
Blacklistings, freezes, seizures and releases ordered by amount, largest first. Filter by coin, chain or kind.
A blacklisting or a freeze is ranked by the balance the wallet HELD when it was restricted. A seizure is ranked by the balance that was TAKEN. Those are two different quantities and the record keeps them apart. Every row says which basis it used: measured at the event block for a restriction, and at the block before for a seizure, because the seizure block destroyed the balance. A ranking that mixed them would be comparing money frozen with money gone.
The default view covers the same 6-month window the published feed does, and includes the wallet, block and transaction for each row. Our record goes back to 2018, so the largest events in it are very likely older than that window.
For those, pass scope all_time. That ranking covers the whole record and names NO wallet, NO transaction and NO block for any row. Leaving those out is what lets it go back that far. Wallet addresses on lists show for the last 6 months without an account, 12 months with a free account, and in full on the Business plan. Every count and total is the whole record. A ranking of amounts that identifies nobody is not a list of wallets, so the window does not apply to it. What you get is the amount, the coin, the chain, the issuer and the date.
An amount appears only where the record has one. Where it does not, the row is left out of the ranking rather than sorted as a zero. A zero would place a wallet whose amount we never recorded below one whose amount was genuinely small, and that is a claim about both that we cannot make.
| Item | Detail |
|---|---|
| token | Optional. A coin symbol, e.g. USDT. Omit for every coin. |
| chain | Optional. A chain name or chain id, e.g. Tron or 1. |
| kind | Optional. One of blacklist, freeze, seizure, release or sanctions. Omit for all of them. |
| scope | Optional. recent (the default) is the last 6 months and names the wallet, block and transaction. all_time covers the whole record back to 2018 and names none of them. |
| limit | Optional. Rows to return. Defaults to the server's standard page size. |
OpenAI-compatible tool schema
The six tools as function definitions, in the shape the OpenAI chat-completions API and the frameworks that copy it expect: a type, and a function with name, description and parameters. The parameters objects are the server's own input schemas, unchanged. A test fails if this block and the server ever differ.
An agent that cannot speak MCP can show these to its model and relay each call to the endpoint above as an MCP tools/call request with the same arguments. An agent that can speak MCP should just connect. The server lists the same six.
tools, in the OpenAI function-calling shape
[
{
"type": "function",
"function": {
"name": "get_address_status",
"description": "Check one wallet address against the record of stablecoin blacklistings, freezes and seizures. Returns every recorded action against that address — which issuer took it, on which blockchain, on what date, and in which transaction and block, so it can be verified independently. Covers USDT, USDC and every other coin in this record, on every blockchain it checks. Returns a dated record of what an issuer did, never a risk score, rating, or opinion about the address or its owner. Needs no account.",
"parameters": {
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "The wallet address to check, in any format the chain uses. Accepts EVM, TRON, Solana and Stellar forms; casing does not matter.",
"maxLength": 120,
"examples": [
"0x000000000000000000000000000000000000dead",
"T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb"
]
}
},
"required": [
"address"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "get_token_statistics",
"description": "Counts of recorded stablecoin blacklistings, freezes and seizures — by coin, by blockchain, by month, or by year. Answers questions like \"how many wallets has Tether blacklisted\", \"which coin is frozen most often\", and \"how many seizures happened in 2025\". Returns counts and dates only; no wallet addresses are returned by this tool.",
"parameters": {
"type": "object",
"properties": {
"token": {
"type": "string",
"description": "Optional coin ticker, e.g. USDT. A ticker two issuers use returns both coins, each with its issuer. Omit for every coin.",
"maxLength": 32
},
"chain": {
"type": "string",
"description": "Optional blockchain name or chain id, e.g. Ethereum or 1.",
"maxLength": 32
},
"group_by": {
"type": "string",
"enum": [
"token",
"chain",
"month",
"year",
"overall"
],
"description": "Which breakdown to return. Defaults to token."
}
},
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "get_token_policy",
"description": "For a given coin, the record of which restriction controls the issuer has actually used — blacklisting, freezing, taking a balance, lifting a restriction — with the on-chain event signature, how many times, and the first and most recent dates. Reports what has happened, dated. It does not report what a contract is capable of: contract capability inspection is not published yet, and this tool says so rather than inferring that a coin cannot freeze from an absence of records. Discloses no wallets.",
"parameters": {
"type": "object",
"properties": {
"token": {
"type": "string",
"description": "Coin ticker, e.g. USDT, USDC, EURC. A ticker two issuers use returns both coins, each with its issuer. Omit for every coin on record.",
"maxLength": 32
}
},
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "get_coverage",
"description": "The blockchains and coins covered by this stablecoin blacklist and freeze record, the date of the most recent recorded event, and which lanes we cannot currently vouch for. Call this to find out whether a chain or coin is in scope before relying on an answer about it, and to check whether any part of the record is behind. \`chains_claimed\`, \`coins_covered\`, \`contracts_checked\` and \`companies_checked\` are what a check covers; the \`coins\` array lists only the coins that have at least one recorded event, which is a smaller set. A coin is one name run by one issuer, so a name that two issuers use appears once per issuer, with the issuer after it.",
"parameters": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "list_freeze_events",
"description": "The published feed of recent stablecoin blacklist, freeze, seizure, release and on-chain sanctions events — the same rows eaglevirtual.com shows publicly — with the wallet, coin, blockchain, date, block and transaction for each. Covers every coin on every chain: omit the filters and it returns all of them, newest first. Filter by coin, blockchain, event kind or date to narrow it. Each result reports which chains, coins and issuers it actually contains. This is a published sample of the record, not the full corpus, and there is no way to page beyond it. Add month (YYYY-MM) to list one whole recorded month instead. Without an account the last 6 months can be listed, with a free account the last 12 months, and every month on the Business plan. To check a specific wallet, use get_address_status instead; for totals use get_token_statistics.",
"parameters": {
"type": "object",
"properties": {
"token": {
"type": "string",
"description": "Coin symbol, e.g. USDT.",
"maxLength": 32
},
"chain": {
"type": "string",
"description": "Blockchain name or chain id, e.g. Tron or 1.",
"maxLength": 32
},
"kind": {
"type": "string",
"enum": [
"blacklist",
"freeze",
"seizure",
"release",
"sanctions",
"delisting"
],
"description": "Restrict to one kind of event."
},
"since": {
"type": "string",
"description": "Only events on or after this date, YYYY-MM-DD.",
"maxLength": 10
},
"month": {
"type": "string",
"pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
"minLength": 7,
"maxLength": 7,
"description": "One whole recorded month, YYYY-MM, instead of the recent feed. Without an account the last 6 months can be listed, with a free account the last 12 months, and every month on the Business plan."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Rows to return, up to 100. Defaults to 25."
}
},
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "get_biggest",
"description": "The largest recorded stablecoin blacklistings, freezes, seizures and releases, ranked by amount, largest first. Answers \"what is the largest blacklist\", \"the biggest freeze\", and \"the biggest seizure\". Filter by coin, blockchain or kind. A blacklisting or freeze is ranked by the balance the wallet held when it was restricted; a seizure by the balance that was taken — two different quantities, and each row says which it is. Covers the last 6 months with the wallet, date, block and transaction for each; set scope to \"all_time\" for the largest on record since 2018, which names no wallet, transaction or block.",
"parameters": {
"type": "object",
"properties": {
"token": {
"type": "string",
"description": "Coin symbol, e.g. USDT. Omit for every coin.",
"maxLength": 32
},
"chain": {
"type": "string",
"description": "Blockchain name or chain id, e.g. Tron or 1.",
"maxLength": 32
},
"kind": {
"type": "string",
"enum": [
"blacklist",
"freeze",
"seizure",
"release",
"sanctions"
],
"description": "Restrict to one kind of action. \"blacklist\" is a deny-list entry in the token contract; \"freeze\" locks an account; \"seizure\" took the balance. Omit for all."
},
"scope": {
"type": "string",
"enum": [
"recent",
"all_time"
],
"description": "Defaults to \"recent\": the last 6 months, with the wallet, block and transaction on every row. \"all_time\" ranks the whole record back to 2018 and names no wallet, transaction or block for any of it."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Rows to return, up to 50. Defaults to 10."
}
},
"additionalProperties": false
}
}
}
]
What it is not
This is reference data, not advice. It is not a compliance decision and it is not a clearance.
Scope, license and privacy: the full statement
The record, not a judgment
A wallet with nothing recorded has nothing recorded on the coins and chains we check, as of the date on the answer, and that is all it means.
There is no risk score, no band and no opinion about any address or person. The machine state is clean, restricted or stale. The sentence beside it says what was found. Neither is a judgment about anyone.
Every record is a dated fact about what an issuer did, with the issuer as the actor: "Tether restricted this wallet on Ethereum on 2026-08-17", not "USDT froze you". Every "none" says which chains and coins it covers, and as of what date.
The full list is not published here or anywhere. list_freeze_events returns the same published feed the site shows, or one month at a time inside the months the account can see, and cannot be paged past. get_biggest names wallets only inside that same window, and its all-time view names none. The other four return counts, dates, or the one address you supplied. Wallet addresses on lists show for the last 6 months without an account, 12 months with a free account, and in full on the Business plan. Every count and total is the whole record. Any wallet, at any age, can be found by asking about that wallet.
We do not invent dollar figures. An amount is returned in the coin's own units where the record has one, and a USD figure only where a certified price exists for that coin at that block. The site follows the same rule and shows a dash where no price exists. The server puts null there instead. It is not today's price on an old event, and it is not $0.00.
Questions people ask
Do I need an account or a key?
No. Every tool is open and read-only as of 12 September 2026. Paste the endpoint and ask.
Does it return a risk score?
No. It returns dated records and counts, each with the transaction that did it. It does not characterize any address or person.
Can I download the full list of frozen addresses?
No. list_freeze_events returns the published feed, the same rows the site shows inside the last 6 months, or one month at a time with the month argument, and it cannot be paged past. Wallet addresses on lists show for the last 6 months without an account, 12 months with a free account, and in full on the Business plan. Every count and total is the whole record.
Which URL do I paste?
https://mcp.eaglevirtual.com/mcp, including the /mcp path. No other hostname is supported.