Skip to main content
Glama

Stablecoin Scanner

Server Details

Stablecoin risk for agents: freezes, OFAC, exposure, allowances, transfers, graph. 7 chains.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but the four address-focused tools (approvals, compliance, exposure, risk) overlap conceptually around address risk and could be confused without careful reading. The descriptions do explicitly delineate boundaries, especially risk versus compliance and exposure.

Naming Consistency5/5

All tool names use a consistent snake_case get_ prefix with descriptive noun phrases. There is no mixing of conventions or vague verb styles.

Tool Count5/5

Eight tools is a well-scoped set for a stablecoin scanner, with each tool covering a distinct dimension (allowances, compliance, exposure, risk, transactions, sanctions coverage, freshness, graph walk). No obvious redundancy or bloat.

Completeness4/5

The surface covers core read-only stablecoin risk workflows comprehensively, including address facts, taint exposure, risk aggregation, transaction history, sanctions metadata, and data freshness. Minor gaps may exist around chain/token enumeration or broader address history, but agents can work around them.

Available Tools

8 tools
get_address_approvalsAInspect

Open ERC-20/Permit2 allowances for an address (Class-F decoded facts) with a per-row approval-risk band (shadow heuristic): unlimited to a flagged/unknown spender is the #1 drain vector. A known-service spender (DEX router / Permit2) is normal. Expired Permit2 sub-allowances are 'expired'. The band is informational, not a risk-tier contribution, until it clears the precision gate. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoChain, in any of four spellings: the id (8453 Base — default for 0x addresses; a T… address defaults to Tron and a base58 one to Solana, 1 Ethereum, 10 Optimism, 42161 Arbitrum, 56 BNB Chain, 728126428 Tron, -1 Solana), the same id as a string, the network slug (base, ethereum, optimism, arbitrum, bnb-chain, tron, solana) or its CAIP-2 id (eip155:1, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp). Unknown spellings are refused, and so is a network this scanner knows but does not index — by name, never with an empty clean verdict. The answer is about ONE chain: chain_id says which, chain_source says how it was chosen (explicit|default|address_form) and chains_with_data lists where else this address has data — read it before concluding, then ask again with chain set
addressYesthe address to check (0x hex for EVM, or base58 for Solana)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses 'No auth', warns the band is a 'shadow heuristic' that is 'informational, not a risk-tier contribution, until it clears the precision gate', and explains how expired Permit2 sub-allowances are labeled. It omits any statement about result size/pagination, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and the headline risk signal, and each sentence carries information. It is dense with internal jargon ('shadow heuristic', 'precision gate') that mildly taxes readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must describe returns; it does cover row semantics and the approval-risk band, plus the single-chain caveat delegated to the schema. It stops short of explaining pagination or result volume.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the chain and address parameters in depth (spellings, defaults, per-chain behavior). The description adds no meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Open ERC-20/Permit2 allowances for an address' with decoded facts, which is clearly distinct from the risk/compliance/exposure siblings by resource type. It does not explicitly name a sibling to contrast against, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides interpretive guidance for the returned data (what an unlimited-to-unknown spender means, what a known-service spender looks like) but never states when to choose this tool versus get_address_risk or get_address_exposure. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_address_complianceAInspect

Per-address Class-F compliance facts (M4) on ONE chain, plus the OFAC SDN flag. freeze[]: one row per enabled freeze-capable stablecoin — status frozen|seized|clear|unknown; 'unknown' = no issuer act names the address and the pair's historical freeze-log backfill is not complete (freeze_log_backfilled=false), so absence-of-evidence is NOT published as 'not frozen' (P4-18); coverage=true = this chain's issuer acts are in the indexed log at all (a stablecoin registered after indexing began, e.g. USD1 on Ethereum/Tron, also needs its own history swept). frozen_usd6 = the token balance last read on a frozen/seized address at frozen_asof_block, face value with 6 decimals — locked now, not at the act (a blacklisted address can still receive); absent = not read, never zero. not_freezable[] = the enabled stablecoins here whose issuer has no per-address freeze ({token: symbol, token_address: contract address — the two fields a freeze[] row spells the same way — variant, reason: no_freeze_function = the contract has no freeze function, no_freeze_authority = a Solana mint has no freeze authority}), e.g. the Binance-Peg USDT/USDC wrappers on BNB Chain: the issuer cannot freeze them on this chain, enforcement happens off-chain (bridge, custodian, exchange); every enabled stablecoin is in freeze[] or here, never both. frozen_elsewhere[] = the same 20 address bytes under a standing freeze/seize on ANOTHER indexed chain (EVM and Tron share them; Solana never matches), the cross-chain signal get_address_risk does not score: the issuer acted there — it does not freeze the balance here, and the same bytes are the same owner only for a plain key account; empty = no act elsewhere in what is indexed, not clean everywhere. freeze_proposals[] = acts proposed on this chain's issuer owner multisig naming the address (USDT on Ethereum and Tron): executed ones only, pending too only if the operator sets FREEZE_PROPOSALS_PUBLIC=true, failed/revoked/superseded/stale never; balance_at_submission, balance_at_execution and moved_out are raw token minor units (decimal strings); empty = no published proposal, not 'nothing pending'. Decoded on-chain issuer acts with provenance; no heuristics; not an identity/AML/legal determination. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoChain, in any of four spellings: the id (8453 Base — default for 0x addresses; a T… address defaults to Tron and a base58 one to Solana, 1 Ethereum, 10 Optimism, 42161 Arbitrum, 56 BNB Chain, 728126428 Tron, -1 Solana), the same id as a string, the network slug (base, ethereum, optimism, arbitrum, bnb-chain, tron, solana) or its CAIP-2 id (eip155:1, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp). Unknown spellings are refused, and so is a network this scanner knows but does not index — by name, never with an empty clean verdict. The answer is about ONE chain: chain_id says which, chain_source says how it was chosen (explicit|default|address_form) and chains_with_data lists where else this address has data — read it before concluding, then ask again with chain set
addressYesthe address to check (0x hex for EVM, or base58 for Solana)

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly: it explains the freeze[] status vocabulary, why 'unknown' must not be read as 'not frozen' (backfill incomplete), that frozen_usd6 is a locked face value read later than the act, that absent means 'not read' never zero, and that empty lists mean 'no act indexed' rather than clean. It adds provenance limits, a FREEZE_PROPOSALS_PUBLIC gating condition, and an explicit disclaimer that it is not an identity/AML/legal determination, plus 'No auth.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded with the core purpose, and the volume of field semantics is defensible given there is no output schema. But the rest is a single dense paragraph of nested parentheticals and semicolons with no list structure, making it hard to parse for the fields an agent most needs. It is information-rich but structurally poor.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must describe return values, and it covers every field (freeze[], not_freezable[], frozen_elsewhere[], freeze_proposals[]) plus their edge-case semantics. Given the complexity and the absence of structured return documentation, this is complete enough for an agent to interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both the chain spelling rules, defaults, and the address format. The prose adds no parameter-level meaning beyond what the schema states, so the baseline 3 applies. The heavy detail in the description is about return fields, not inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb and resource — per-address Class-F compliance facts on ONE chain, plus the OFAC SDN flag — so an agent can tell broadly what it returns. It also explicitly distinguishes itself from get_address_risk ("the cross-chain signal get_address_risk does not score"). However, it never differentiates from the closest sibling, get_sanctions_status, which also concerns OFAC/sanctions status, so sibling differentiation is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through embedded guidance: "read it before concluding, then ask again with chain set" and the note that this scores cross-chain signals get_address_risk does not. But there is no explicit statement of when to prefer this tool over get_address_risk or get_sanctions_status, and no exclusions. The routing advice exists but is scattered rather than stated as an if/then.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_address_exposureAInspect

The §8 taint-exposure verdict for an address: a bounded backward BFS over the value graph to the nearest OFAC-sanctioned or hack/drainer/mixer root, returning a class (sanctioned|direct|indirect|negligible|unknown|none), nearest-hop, and a value-proportional haircut fraction. 'unknown' = the assessment could not be completed (OFAC list unloaded, frontier truncated, or short history) — never a false 'none'. Heuristic risk signal, not an AML/legal determination. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoChain, in any of four spellings: the id (8453 Base — default for 0x addresses; a T… address defaults to Tron and a base58 one to Solana, 1 Ethereum, 10 Optimism, 42161 Arbitrum, 56 BNB Chain, 728126428 Tron, -1 Solana), the same id as a string, the network slug (base, ethereum, optimism, arbitrum, bnb-chain, tron, solana) or its CAIP-2 id (eip155:1, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp). Unknown spellings are refused, and so is a network this scanner knows but does not index — by name, never with an empty clean verdict. The answer is about ONE chain: chain_id says which, chain_source says how it was chosen (explicit|default|address_form) and chains_with_data lists where else this address has data — read it before concluding, then ask again with chain set
addressYesthe address to check (0x hex for EVM, or base58 for Solana)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the underlying method (BFS to nearest OFAC/hack/mixer root), the full class enum, the semantics of 'unknown' as truncated/unloaded rather than a false 'none', and that no auth is required. It omits performance/rate-limit behavior, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the tool's operation and output before caveats. Dense but every clause earns its place; only the §8 reference is unexplained overhead.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must describe return values, and it does (class, nearest-hop, haircut fraction, plus the chain_id/chain_source/chains_with_data fields). Combined with no annotations, this is nearly complete, though a note on how to interpret the haircut fraction or handle tainted-but-truncated results would close the gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both the chain and address parameters in depth. The description adds no syntax or format detail beyond the schema, so this sits at the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('bounded backward BFS over the value graph') and names the exact output ('class, nearest-hop, and a value-proportional haircut fraction'), so the agent knows precisely what it gets. It does not, however, differentiate itself from close siblings like get_address_compliance, get_address_risk, or get_sanctions_status, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a meaningful caveat ('Heuristic risk signal, not an AML/legal determination') and an in-flight guidance note ('read it before concluding, then ask again with chain set'), which implies usage. But it never states when to prefer this over get_address_compliance/get_address_risk or what alternatives exist, so routing remains largely inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_address_riskAInspect

The unified risk verdict for an address (§9 R2): a single tier (unknown|none|low|medium|high|severe) aggregating decoded FACTS (OFAC listing, issuer freeze/seize, exposure to a sanctioned/hack root) and ATTRIBUTED labels (with provenance, capped at medium alone; a lone-source accusation contributes no tier). tier 'unknown' means the assessment could NOT be completed (incomplete coverage) — NOT 'checked clean'. The freeze input is this chain's per-token status alone: frozen/seized argues for high, and an 'unknown' status or a pair whose freeze history is not backfilled turns a would-be 'none' into 'unknown'. NOT scored: the same address frozen on another chain (frozen_elsewhere), issuer freeze proposals and frozen balances — read them with get_address_compliance. Not an identity/AML/legal determination. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoChain, in any of four spellings: the id (8453 Base — default for 0x addresses; a T… address defaults to Tron and a base58 one to Solana, 1 Ethereum, 10 Optimism, 42161 Arbitrum, 56 BNB Chain, 728126428 Tron, -1 Solana), the same id as a string, the network slug (base, ethereum, optimism, arbitrum, bnb-chain, tron, solana) or its CAIP-2 id (eip155:1, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp). Unknown spellings are refused, and so is a network this scanner knows but does not index — by name, never with an empty clean verdict. The answer is about ONE chain: chain_id says which, chain_source says how it was chosen (explicit|default|address_form) and chains_with_data lists where else this address has data — read it before concluding, then ask again with chain set
addressYesthe address to check (0x hex for EVM, or base58 for Solana)

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full load and does so richly: it defines 'unknown' as incomplete coverage rather than 'checked clean', explains the freeze-history backfill behavior that downgrades a would-be 'none' to 'unknown', scopes freeze to this chain alone, and states 'No auth' plus 'Not an identity/AML/legal determination'. This is exactly the behavioral context an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core verdict statement, then progressively qualifies scope, exclusions, and semantics. Sentences are dense and parenthetical-heavy, but nearly every clause carries distinct meaning; a slightly lighter touch could have trimmed the parentheticals without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description must convey the return shape and safety profile, and it does: tier values, the meaning of 'unknown', the single-chain scope, and lack of auth. The multi-chain re-query flow is described but the returned envelope fields (chain_id, chain_source) are only referenced, not fully explained in the description text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself is extremely detailed about chain spellings, defaults, and chain_id/chain_source. The description adds no parameter-level syntax beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and output: a single unified risk tier (unknown|none|low|medium|high|severe) for an address, with the exact inputs it aggregates (decoded facts vs attributed labels). It distinguishes itself from get_address_compliance by naming what it deliberately does NOT score. An agent can tell it apart from siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the freeze-elsewhere/proposal questions to get_address_compliance, and warns that a lone-source label contributes no tier. It also explains that a chain answer covers ONE chain and that the caller should read chains_with_data and re-ask with chain set. No guidance against the other siblings (exposure, sanctions_status, approvals), so not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_transactionsAInspect

Recent stablecoin transfers on ONE chain (newest first), filterable by recipient/payer, cursor-paginated (next_cursor). Answer: items[], each row tx_hash, log_index, block_number, block_time (RFC 3339), payer, recipient, amount {amount (minor units, string), decimals, token (symbol)}, token (the contract address), finality, and usd_amount where priced. The chain is the one asked for — rows do not repeat it. Generic on-chain Transfer facts. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoChain of the feed, in any of four spellings: the id (8453 Base — default, 1 Ethereum, 10 Optimism, 42161 Arbitrum, 56 BNB Chain, 728126428 Tron, -1 Solana), the same id as a string, the network slug (base, ethereum, optimism, arbitrum, bnb-chain, tron, solana) or its CAIP-2 id (eip155:1, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp). Unknown spellings are refused, and so is a network this scanner knows but does not index. Without chain, a T… or base58 payer/recipient filter selects Tron or Solana; otherwise Base. The rows do not repeat the chain: it is the one asked for
limitNoMax rows, 1..200 (default 25). A value outside that range is refused, as REST refuses it
payerNoFilter by payer address (0x+40hex)
cursorNoPagination cursor from a previous response
recipientNoFilter by recipient address (0x+40hex)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: newest-first ordering, cursor pagination, no auth, chain omitted from rows, unknown chain spellings refused, and chain-selection heuristics (T…/base58 address filter selects Tron/Solana, otherwise Base). It does not define the 'recent' window or any rate/coverage limits, but the disclosed behavior is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and scope, then pagination, then the return shape. Dense but every clause carries information; the trailing output-field enumeration is long, though justified because no output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates returned fields (tx_hash, block_time, amount in minor units, finality, usd_amount) and states pagination and auth posture. The main gap is that 'recent' has no bounded time window, leaving the coverage horizon ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all five parameters in depth. The description largely restates schema facts (chain not repeated in rows, default chain behavior) rather than adding new parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'Recent stablecoin transfers on ONE chain (newest first), filterable by recipient/payer, cursor-paginated.' This is clearly distinguishable from the address-risk/approval/sanctions siblings, which are entity-centric rather than feed-centric.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'No auth' note and the filter/pagination framing imply when this is useful, but the description never states when to prefer it over siblings like get_address_exposure or get_wallet_graph_walk, nor any exclusions. Usage is inferable rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sanctions_statusAInspect

OFAC SDN sanction-list coverage: how many EVM + Solana + Tron addresses are ingested (free public 0xB10C list, US-Gov public-domain data) and when it was last refreshed. Heuristic exposure signal — not legal advice; verify against the official SDN list. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses no auth is required, names the data provenance (free public 0xB10C list, US-Gov public-domain data), notes the freshness dimension, and adds a heuristic/not-legal-advice disclaimer with a verification instruction. It does not explicitly state read-only behavior, which is the only gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core subject and packed into roughly two sentences with no filler; the disclaimer earns its place. The heavy parenthetical stacking (data source, chains, legal caveat) makes it slightly dense, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-annotation, no-output-schema tool, the description covers scope, data source, freshness, and the interpretation caveat. It leaves minor ambiguity about the exact return shape (per-chain vs aggregate counts), which matters a bit more given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4. The description usefully clarifies what the (empty) request yields — per-chain ingestion counts and a refresh timestamp — rather than merely restating the name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource+scope: OFAC SDN sanction-list coverage, counting ingested EVM/Solana/Tron addresses and the last-refresh timestamp. It is clear what the tool returns, though it never explicitly differentiates itself from the overlapping sibling get_sync_status (also a freshness/status tool) or from get_address_exposure.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: calling it a 'heuristic exposure signal' hints it is a context/pre-check for exposure questions, but there is no explicit when-to-use, when-not-to-use, or pointer to alternatives like get_address_exposure or get_address_compliance. An agent must infer the call context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sync_statusAInspect

Data freshness for one chain: the indexer's head, safe and finalized blocks, its lag in blocks and freshness_seconds, so the agent knows how recent the data behind an answer is. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoChain, in any of four spellings: the id (8453 Base — default, 1 Ethereum, 10 Optimism, 42161 Arbitrum, 56 BNB Chain, 728126428 Tron, -1 Solana), the same id as a string, the network slug (base, ethereum, optimism, arbitrum, bnb-chain, tron, solana) or its CAIP-2 id (eip155:1, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp). Unknown spellings are refused, and so is a network this scanner knows but does not index. chain_id in the answer says which chain it is about

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses 'No auth' and lists the returned fields, which is useful, but it does not explicitly state that the operation is read-only, whether it has rate limits, or any other safety profile. It covers some behavioral ground but leaves obvious gaps for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no waste, front-loaded with the core resource and output fields. Every clause earns its place, including the brief 'No auth' note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only status tool with no output schema, the description is largely complete: it explains the returned fields and the no-auth behavior, and the schema covers parameter handling. It could mention error/refusal behavior explicitly, but the schema already documents that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema's chain parameter description is extremely detailed (accepted spellings, defaults, refusals). The tool description adds no meaning beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (one chain's sync status) and enumerates exactly what it reports: indexer head, safe/finalized blocks, lag in blocks, and freshness_seconds. It is clearly distinct from all sibling tools, which deal with addresses, transactions, and sanctions, not chain indexer state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'so the agent knows how recent the data behind an answer is' gives clear context for when to call it: to assess data staleness before relying on other results. It does not state when-not to use it or name alternatives, but the context is explicit and sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_wallet_graph_walkAInspect

Bounded walk over the indexed stablecoin settlement flow graph from a wallet: payer<->recipient hops, value-weighted score, entity-aware node keys, attributed-node stop option, and sanctioned-node markers. This is an explainability primitive, not a detector verdict, identity/control assertion, AML decision, or legal advice. Subjects over the degree gate (~50k edge-rows) return hop 1 only with frontier_truncated=true. No auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
hopsNoMax graph hops, 0..4 (default 2)
chainNoChain, in any of four spellings: the id (8453 Base — default for 0x addresses; a T… address defaults to Tron and a base58 one to Solana, 1 Ethereum, 10 Optimism, 42161 Arbitrum, 56 BNB Chain, 728126428 Tron, -1 Solana), the same id as a string, the network slug (base, ethereum, optimism, arbitrum, bnb-chain, tron, solana) or its CAIP-2 id (eip155:1, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp). Unknown spellings are refused, and so is a network this scanner knows but does not index — by name, never with an empty clean verdict. The answer is about ONE chain: chain_id says which, chain_source says how it was chosen (explicit|default|address_form) and chains_with_data lists where else this address has data — read it before concluding, then ask again with chain set
tokenYesToken symbol — REQUIRED, the server does not guess it (e.g. USDT). The asset hub page for a stablecoin names its own token.
windowNoTime window: 1h|24h|7d|30d|90d|1y|all (default all)
addressYesWallet address (EVM 0x-hex or Solana base58)
frontier_capNoPer-hop frontier cap, 1..500 (default 500)
stop_at_attributedNoStop expanding known services/facilitators (default true)
stop_on_sanctionedNoStop once a sanctioned node is reached (default false)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden well: it discloses the degree-gate behavior (~50k edge-rows returns hop 1 only with frontier_truncated=true), the sanctioned-node marker/stop semantics, and that no auth is required. It stops short of describing return structure or rate/latency characteristics, but the key edge-case behavior is front-loaded.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core operation in the first sentence, followed by scope disclaimers and the truncation edge case. Dense but each sentence carries information; the disclaimers are somewhat list-like but justified for a compliance-adjacent primitive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no annotations and no output schema, the description covers the essential operational realities: what the walk yields, the truncation gate, no-auth, and the single-chain caution around chain_id/chain_source/chains_with_data. A short note on the return shape would complete it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter including the richly documented chain field is already explained in the schema; baseline 3 applies. The description adds only light reinforcement, referencing the attributed-node stop option and sanctioned-node markers without new syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — a bounded walk over the indexed stablecoin settlement-flow graph from a wallet — and names its mechanics (payer<->recipient hops, value-weighted score, entity-aware keys). It clearly separates itself from siblings like get_address_risk and get_address_compliance by framing itself as an explainability primitive rather than a verdict.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-not guidance by declaring what it is not (detector verdict, identity/control assertion, AML decision, legal advice), which implicitly routes verdict-seeking callers elsewhere. It also instructs the agent to read chains_with_data before concluding. It does not, however, name a specific sibling to use instead when the caller wants a risk score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updates
    • First observedget_address_approvals
    • First observedget_address_compliance
    • First observedget_address_exposure
    • First observedget_address_risk
    • First observedget_recent_transactions
    • First observedget_sanctions_status
    • First observedget_sync_status
    • First observedget_wallet_graph_walk

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Stablecoin risk intelligence MCP — 13 tools covering CCI concentration risk, reserve drift, depeg probability, and risk scoring for RLUSD, USDT, USDC, EURC. Real-time monitoring with SAFE/CAUTION/AVOID verdicts. MiCA Art.25/35 relevant.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Crypto compliance tools for AI-agent payments: screen any address for sanctions, frozen-stablecoin and hacker/mixer exposure across 8+ chains, trace fund taint, and get an allow/review/decline decision before settlement. Free keyless address checks; deeper endpoints are x402-payable.
    85 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources