Skip to main content
Glama

add_wallet

Idempotent

Submit a public wallet address for verification. Detects the blockchain, scans on-chain balances, and returns verification options (message signing or dust transfer). Also serves as the retry path: if a previously-added wallet is in a FAILED or unverified state, call this tool again with the same address to get a fresh verification challenge. If the wallet is already verified, the response will indicate that. The response renders an inline Verify Wallet widget showing the verification message (with copy button), the dust-transfer deposit address, and the multi-asset menu; the user clicks through the widget rather than you reading the values aloud. CANCELLED-CALL HANDLING: if a prior invocation of this tool returned no result because the user dismissed or did not approve the client-side consent prompt, simply retry when the user asks again. Do NOT tell the user that the platform or safety checks blocked the action, and do NOT invent a server-side reason — there is no such block on the RealOpen side; it was just a missed consent tap. POST-VERIFY RE-CHECK: the widget runs verify_wallet_signature / verify_wallet_transfer internally via callTool when the user submits from inside it. That silent call does not always produce a visible follow-up in chat — the client can drop the sendFollowUpMessage trigger. If the user says they completed verification, or says the widget shows "verified", or asks to proceed, ALWAYS call get_wallet_summary first to read the fresh ownership_status before answering. Do not tell the user "still not verified" based on your prior tool output — that output is stale the moment the widget is used. PRESENTATION: identify the wallet to the user by its address, never by wallet_id (the UUID is internal — use it only as a parameter to other tools). EVM CHAIN NOTE: 0x... addresses are verified across Ethereum, Base, Arbitrum, and BNB Smart Chain. Signature verification is chain-agnostic and works for any EVM wallet — both regular (EOA) and smart-contract wallets (the verifier checks ERC-1271 on-chain). Dust-transfer verification works on Ethereum, Base, Arbitrum, and BNB Smart Chain too: each dust-transfer option is tagged with its chain (e.g. "USDC on Base", "BNB on BNB Chain"), so the user must send on the chain shown for that option. (Polygon is also supported for signature verification.) BNB itself is accepted natively on BNB Smart Chain or as the original ERC-20 on Ethereum — the same 0x deposit address serves both; legacy Beacon Chain (bnb1...) addresses are not supported. ZERO-BALANCE NOTE: If total_usd is 0, do NOT assume the wallet is empty. Many wallets use stealth addresses, HD-derived receive addresses, or UTXO shuffling that hide true balance behind the public address. If the response includes a zero_balance_hint, surface that guidance to the user and strongly suggest the test-transfer verification path. EXCHANGE CUSTODY: if the user's crypto is held on an exchange account (Coinbase, Binance, etc.) — where they cannot sign messages and do not control the sending address — do not force this flow; search get_faq for "exchange" and explain that exchange-held assets are supported via account statements and manual review. ZCASH (ZEC): accepted on TRANSPARENT addresses only (t1…/t3…). Shielded or unified addresses (zs1…/u1…) are rejected with error code shielded_zcash — balances there are private by design and can never be verified. BEFORE a Zcash user starts verification, ask whether their ZEC is on a transparent address; if it is shielded, tell them to move the amount they want to prove to a t-address in the same wallet first (Trezor Suite and Ledger Live show transparent Zcash accounts). Relay transparent_only_hint when present.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
addressYesThe public wallet address to add

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
assetsNoPer-asset on-chain balances detected for this wallet
statusNoSet to "already_verified" when re-adding an already-verified wallet
addressNo
messageNo
total_usdNo
wallet_idNo
blockchainNo
linked_addressesNo
ownership_statusNoNOT_VERIFIED | PENDING_SIGNATURE | PENDING_TRANSACTION | VERIFIED_SIGNATURE | VERIFIED_TRANSACTION | FAILED
zero_balance_hintNo
verification_optionsNo

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "address": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "assets": {
      +      "description": "Per-asset on-chain balances detected for this wallet",
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "blockchain": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "linked_addresses": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "message": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "ownership_status": {
      +      "description": "NOT_VERIFIED | PENDING_SIGNATURE | PENDING_TRANSACTION | VERIFIED_SIGNATURE | VERIFIED_TRANSACTION | FAILED",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "description": "Set to \"already_verified\" when re-adding an already-verified wallet",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "total_usd": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "verification_options": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "dust_transfer": {
      +          "additionalProperties": true,
      +          "description": "available + deposit_address + accepted assets[] for the transfer verification path",
      +          "properties": {},
      +          "type": "object"
      +        },
      +        "message_signing": {
      +          "additionalProperties": true,
      +          "description": "available + message to sign for the signature verification path",
      +          "properties": {},
      +          "type": "object"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "wallet_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "zero_balance_hint": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  2. Added
  3. Removed
  4. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only provide idempotentHint=true and destructiveHint=false. The description far exceeds that by disclosing client-side consent dismissal handling, no server-side blocking, chain-specific address behavior, zero-balance stealth-address caveats, exchange custody limitations, and Zcash shielded-address rejection. It also documents the widget rendering and instructs the agent not to read values aloud, which is critical behavioral guidance.

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?

The description is long, but the length is justified by the large number of edge cases and user-facing behaviors it must cover. It is well structured with capitalized section labels (CANCELLED-CALL HANDLING, EVM CHAIN NOTE, ZERO-BALANCE NOTE, EXCHANGE CUSTODY, ZCASH) and the core purpose is front-loaded. A few repetitions could be trimmed, but the organization earns the length.

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?

Given the tool's complexity, the description is exceptionally complete. It covers the success path, retry path, already-verified path, cancelled-call handling, chain support details, zero-balance nuance, exchange-custody alternatives, and Zcash restrictions. The output schema exists, so the description need not describe return values, and nothing essential to calling this tool correctly appears missing.

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

Parameters5/5

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

The schema has one well-described address parameter with 100% coverage, so the baseline is 3. The description adds extensive meaning beyond the schema: 0x addresses work across multiple EVM chains, bnb1 legacy addresses are unsupported, Zcash must be t-addresses, and the same 0x address serves BNB on BNB Smart Chain and Ethereum. This transforms the parameter from a generic string into a chain-aware input with concrete constraints.

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 opening sentence states a specific verb and resource: 'Submit a public wallet address for verification' and immediately lists what the tool does (detects blockchain, scans balances, returns verification options). It is clearly distinguishable from siblings like verify_wallet_signature and verify_wallet_transfer because it initiates the verification flow rather than completing it.

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 description gives strong usage context: retry path for failed/unverified wallets, exchange-custody fallback to get_faq, and Zcash transparent-address prerequisites. It does not explicitly name the sibling verify tools as the next step after the widget flow, but the flow is implied well enough that an agent would know when to call this tool.

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.

TDQS

A4.4/5.0
Disambiguation4/5

Most tools have clearly distinct purposes (wallet management, verification, knowledge lookup, marketing, account status), but there is minor overlap between add_wallet and refresh_wallet_verification (both generate verification challenges) and between get_started and get_account_status (both touch on next-step resolution). Descriptions clarify the differences, so confusion is unlikely.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (e.g., add_wallet, get_wallet_summary, verify_wallet_transfer), with only 'logout' as a single verb, which is still consistent with the imperative style. No mixed conventions or cryptic names.

Tool Count4/5

The server exposes 20 tools, which is on the heavier side of the typical range but appropriate for the broad domain (wallet operations, verification, KYC, knowledge base, marketing assets, referral tracking). Each tool has a distinct role, so the count feels justified rather than bloated.

Completeness5/5

The surface covers the full lifecycle for crypto-to-real-estate transactions: wallet management (add, remove, refresh, verify), identity verification, proof-of-funds generation, knowledge tools (fees, coverage, supported crypto, how-it-works), marketing (snippets, assets, referral), and account navigation (get_started, logout). No obvious gaps that would leave an agent stuck.