Skip to main content
Glama

get_wallet_summary

Read-onlyIdempotent

Call this whenever the user asks for a wallet summary, wallet list, their wallets, wallet balances, verified holdings, or Proof of Funds ceiling — i.e. how much verified crypto they can show for a real estate offer. Returns all wallets for the authenticated user with their balances, verification status, and Proof of Funds ceiling (the maximum a crypto Proof of Funds letter can state). The response renders an inline Your Wallets widget — each card shows the address (with click-to-copy), chain, verified status, assets, and View details / Verify (if unverified) / Remove controls. Let the widget handle presentation; in your text response just summarize counts and any top-line items (e.g. "You have 3 wallets, 2 verified, POF ceiling $65k"). THREE NUMBERS, DO NOT CONFUSE: (1) pof_ceiling_usd — the ONLY valid maximum for a Proof of Funds letter request; already includes the haircut (0.98× stablecoins, 0.935× volatile) and excludes unverified wallets. (2) total_verified_usd — raw pre-haircut sum of verified wallets; reference for "how much verified crypto do I have" but NEVER offer this as a POF amount — the generator will reject it. (3) Σ wallets[].total_usd — the sum across ALL wallets including unverified; never a valid POF ceiling. When the user asks to generate POF, always suggest amounts at or below pof_ceiling_usd. ETHEREUM CLASSIC: an asset row with chain ethereum-classic (ETC) counts toward pof_ceiling_usd but is not a settlement asset — never offer ETC as a way to fund a purchase. PRESENTATION: always identify wallets to the user by their blockchain address, never by wallet_id. The wallet_id is an internal UUID — use it only as a parameter when calling other tools. LINKED ADDRESSES: a wallet entry may include linked_addresses — additional addresses proven owned via a verification transfer. ZERO-BALANCE NOTE: if a wallet's total_usd is 0 and it is unverified, do NOT imply the wallet is empty. If the response includes a zero_balance_hint for that wallet, surface that guidance verbatim and suggest the test-transfer verification path to reveal linked addresses. BITCOIN FULL-WALLET NOTE: a verified Bitcoin wallet entry may carry full_wallet_hint (no extended public key linked yet — only the verified address and transfer-proven addresses are counted) or xpub_linked: true with an xpub_scan summary (every derived address counted). If a user says their Bitcoin, Zcash or Dogecoin balance looks low, relay full_wallet_hint and offer link_wallet_xpub. ZCASH: a Zcash wallet entry carries transparent_only_hint — only transparent (t1…) balances are verified and counted; relay it before the user starts verification if their ZEC may be shielded. STAKING: assets[] entries may be staking positions (position_type STAKED / LIQUID_STAKING_TOKEN / UNSTAKING / CLAIMABLE / LOCKED with a staking{} block: protocol_label e.g. "Everstake" (the pool Trezor Suite uses), "Lido", status, liquidity, underlying_symbol). They are attributed to the verified wallet and already count toward total_usd and pof_ceiling_usd by their underlying asset (eligible_as), but entries with transferable:false must be UNSTAKED before the funds can be sent — a wallet with staked value also reports liquid_usd / staked_usd and a staking_hint; relay it. Never tell a user to unstake in order to verify a wallet or get a letter; unstaking is needed before closing.

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
walletsYesAll wallets on the user's account
eligible_tokensNoAsset symbols that count toward POF eligibility
pof_ceiling_usdNoMaximum amount valid for a Proof of Funds letter. Already includes the haircut (0.98× stables, 0.935× volatile) and excludes unverified wallets.
total_verified_usdNoRaw pre-haircut sum of verified wallets. NEVER use as a POF ceiling — pof_ceiling_usd is the only correct max.
total_verified_liquid_usdNoPortion of total_verified_usd transferable today (present when any verified wallet holds staking positions)
total_verified_staked_usdNoPortion of total_verified_usd held in staking positions (needs unstaking before closing)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedOutput schema / properties / wallets / items / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / wallets / items / properties / assets / items / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / wallets / items / properties / linked_addresses / items / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / wallets / items / properties / xpub_scan / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {},
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed7 schema fields changed
    • addedOutput schema / properties / total_verified_liquid_usd
      Added value: +{
      +  "description": "Portion of total_verified_usd transferable today (present when any verified wallet holds staking positions)",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / total_verified_staked_usd
      Added value: +{
      +  "description": "Portion of total_verified_usd held in staking positions (needs unstaking before closing)",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / wallets / items / properties / claimable_usd
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / wallets / items / properties / liquid_usd
      Added value: +{
      +  "description": "Eligible value transferable today (present when the wallet holds staking positions)",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / wallets / items / properties / staked_usd
      Added value: +{
      +  "description": "Eligible value held in staking positions — counts toward the ceiling but must be unstaked before it can be sent",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / wallets / items / properties / staking_hint
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / wallets / items / properties / unstaking_usd
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
  3. Changed1 schema field changed
    • addedOutput schema / properties / wallets / items / properties / transparent_only_hint
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  4. Changed3 schema fields changed
    • addedOutput schema / properties / wallets / items / properties / full_wallet_hint
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / wallets / items / properties / xpub_linked
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / wallets / items / properties / xpub_scan
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
  5. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "eligible_tokens": {
      +      "description": "Asset symbols that count toward POF eligibility",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "pof_ceiling_usd": {
      +      "description": "Maximum amount valid for a Proof of Funds letter. Already includes the haircut (0.98× stables, 0.935× volatile) and excludes unverified wallets.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "total_verified_usd": {
      +      "description": "Raw pre-haircut sum of verified wallets. NEVER use as a POF ceiling — pof_ceiling_usd is the only correct max.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "wallets": {
      +      "description": "All wallets on the user's account",
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "address": {
      +            "type": "string"
      +          },
      +          "assets": {
      +            "items": {
      +              "additionalProperties": true,
      +              "properties": {},
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "blockchain": {
      +            "type": "string"
      +          },
      +          "linked_addresses": {
      +            "items": {
      +              "additionalProperties": true,
      +              "properties": {},
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "ownership_status": {
      +            "type": "string"
      +          },
      +          "total_usd": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "verified_at": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "wallet_id": {
      +            "type": "string"
      +          },
      +          "zero_balance_hint": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "wallet_id",
      +          "address",
      +          "blockchain",
      +          "ownership_status"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "wallets"
      +  ],
      +  "type": "object"
      +}
  6. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds substantial behavior beyond them: it renders an inline widget and the agent should only summarize counts, it distinguishes three USD figures with the haircut and exclusion rules, and it flags ETC as counted-but-not-settleable. Edge-case semantics (zero_balance_hint, full_wallet_hint, transparent_only_hint, staking transferable:false) are all disclosed.

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 trigger sentence and the widget/presentation rule, then organized under scannable caps-labeled blocks (THREE NUMBERS, ETHEREUM CLASSIC, PRESENTATION, STAKING). It is long and dense for a zero-parameter read tool, with some rules that arguably belong in sibling tool descriptions, but nearly every sentence prevents a concrete misuse.

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?

Despite the tool's high domain complexity, an output schema, and downstream workflows (POF letters, verification, unstaking), the description equips an agent to call it and interpret the result correctly. The three-number disambiguation and the hint-passthrough rules close the gaps that would otherwise cause wrong POF amounts or wrong wallet identification.

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?

The tool takes zero parameters and the schema has 100% description coverage, so there is nothing for the description to disambiguate at the input layer — the baseline of 4 applies. The description's parameter-adjacent guidance is about output fields and downstream tool arguments (wallet_id used only as a parameter for other tools), not inputs here.

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 ('get_wallet_summary' → return all wallets for the authenticated user with balances, verification status, and POF ceiling) and enumerates the user phrasings that map to it. It is clearly separable from siblings like generate_proof_of_funds, refresh_wallet_balance, and link_wallet_xpub, which are named as follow-on actions.

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?

Explicit when-to-use triggers are given ('whenever the user asks for a wallet summary, wallet list, their wallets, wallet balances, verified holdings, or Proof of Funds ceiling'), plus routing rules to other tools (offer link_wallet_xpub for low BTC/ZEC/DOGE, suggest generate_proof_of_funds amounts at or below pof_ceiling_usd). It also states a when-not: never offer total_verified_usd or the all-wallets sum as a POF amount.

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.