Skip to main content
Glama

wallet_check

Read-onlyIdempotent

Check any wallet (EVM 0x address or Solana base58, case-sensitive) before paying it or taking its money: OFAC SDN list on both families; on Solana also the issuer freeze of USDC and EURC (Circle), USDT (Tether), PYUSD and USDG (Paxos) and USD1 (World Liberty), the issuer freeze index, and a fund trail up to three hops back. Returns verdict passed, blocked or unavailable, with each check. Paying an invoice (invoice_pay) runs this check on the receiving wallet and refuses with receiver_blocked, so a payment through Vurto Payments never reaches a sanctioned or frozen wallet. To pay someone directly, create an invoice to their wallet (invoice_create) and pay it with invoice_pay. Plain swaps (swap_build, double_build, nn_build) do not run it. The Scorechain and Merkle Science checks are paid and run only inside an invoice whose analysis was paid; asking for them here returns paid_check_requires_invoice (400).

Input Schema

NameRequiredDescriptionDefault
checksNoKept for compatibility; leave it out. Every extra check is paid since 22/10/2026 ("scorechain" 0.15 and "merkle-science" 0.60 USDC) and runs only inside an invoice whose analysis was paid (invoice_create with checks, then invoice_analysis_pay): here any of them is refused with paid_check_requires_invoice (400), so the paid analysis never becomes a free lookup. Any other value is refused with invalid_check.
walletYesThe wallet to check. EVM 0x address, or Solana base58 (case-sensitive).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / checks / description
      Previous value: -"Optional extra checks; default none. \"scorechain\" sends this wallet to the Scorechain sanctions API and adds a scorechain line (listed, clear or unavailable). Runs only when chosen; limited to 10 per hour per IP. Any other value is refused with invalid_check."New value: +"Kept for compatibility; leave it out. Every extra check is paid since 22/10/2026 (\"scorechain\" 0.15 and \"merkle-science\" 0.60 USDC) and runs only inside an invoice whose analysis was paid (invoice_create with checks, then invoice_analysis_pay): here any of them is refused with paid_check_requires_invoice (400), so the paid analysis never becomes a free lookup. Any other value is refused with invalid_check."
    • changedInput schema / properties / checks / items / enum
      Previous value: -[
      -  "scorechain"
      -]New value: +[
      +  "scorechain",
      +  "merkle-science"
      +]
  2. Changed1 schema field changed
    • addedInput schema / properties / checks
      Added value: +{
      +  "description": "Optional extra checks; default none. \"scorechain\" sends this wallet to the Scorechain sanctions API and adds a scorechain line (listed, clear or unavailable). Runs only when chosen; limited to 10 per hour per IP. Any other value is refused with invalid_check.",
      +  "items": {
      +    "enum": [
      +      "scorechain"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  3. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, yet the description adds substantive behavior: the three possible verdicts (passed, blocked, unavailable), that invoice_pay auto-runs this and refuses with receiver_blocked, and that paid checks (Scorechain/Merkle Science) return paid_check_requires_invoice (400) here. These are non-obvious failure modes and costs that annotations cannot convey.

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-loads the core action in the opening clause, then layers scope, then integrations. It is dense but not padded; the only mild redundancy is the paid-check caveat appearing both in the description prose and again in the schema's `checks` description.

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?

With no output schema, the description carries the return-value burden and does so ('Returns verdict passed, blocked or unavailable, with each check'). It also covers cost, error codes, and the invoice-flow integration — everything an agent needs to call it and interpret the result.

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?

Schema coverage is 100%, so the baseline is 3. The description goes further by explaining the trap around the `checks` parameter: it is 'kept for compatibility; leave it out', costs 0.15/0.60 USDC, and is refused here with a specific error code — meaning an agent understands not just the type but why it exists and what will happen.

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?

Opens with a specific verb + resource + scope: 'Check any wallet (EVM 0x address or Solana base58, case-sensitive) before paying it'. It then enumerates exactly what is checked (OFAC SDN, issuer freeze lists, fund trail), which distinguishes it from sibling tools like invoice_pay or swap_build without requiring the schema.

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

Usage Guidelines5/5

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

Gives an explicit when ('before paying it or taking its money'), names the automatic alternative ('Paying an invoice (invoice_pay) runs this check... so a payment... never reaches a sanctioned or frozen wallet'), and names exclusions ('Plain swaps (swap_build, double_build, nn_build) do not run it'). An agent can route correctly with no inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources