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

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON 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. 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"
      +  ]
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / wallets / items / properties / transparent_only_hint
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  3. 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"
      +    }
      +  ]
      +}
  4. 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"
      +}
  5. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark the tool read-only, idempotent, and non-destructive, but the description adds substantial behavioral nuance: the haircut math behind pof_ceiling_usd, exclusion of unverified wallets, ETC counting toward the ceiling but not settlement, zero-balance and full-wallet hints, Zcash transparent-only verification, and staking liquidity constraints. This goes far beyond what the annotations express.

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?

The description is long, but every section earns its place: the three critical POF numbers are isolated and labelled, and topic areas (presentation, linked addresses, zero-balance, Bitcoin, Zcash, staking) are clearly flagged. It front-loads the core invocation condition and then layers caveats in a way that prevents costly agent mistakes.

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?

For a read-only tool with no parameters and an output schema, the description is exceptionally complete: it covers all returned data categories, widget behavior, user-facing vs internal identifiers, asset caveats, staking states, and hints the response may carry. An agent can invoke correctly and interpret the results without needing additional context.

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 has zero parameters, so the 0-parameter baseline of 4 applies; there is no schema information for the description to supplement. The description also clarifies that wallet_id is an internal UUID to be used only as a parameter for other tools, which is useful cross-tool semantic context even though it does not apply to this tool's empty input 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?

The description opens with explicit trigger phrases ('wallet summary, wallet list, their wallets, wallet balances, verified holdings, or Proof of Funds ceiling') and states the resource: authenticated user's wallets plus balances, verification status, and POF ceiling. It clearly differentiates this from the POF generator by emphasizing the ceiling is the only valid maximum for a Proof of Funds letter.

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?

It explicitly says 'Call this whenever the user asks...' and gives concrete behavioral guidance: summarize counts in text, let the widget handle presentation, never offer ETC as settlement, suggest POF amounts at or below pof_ceiling_usd, and offer link_wallet_xpub when balances look low. This tells the agent not only when to use the tool but how to use its results responsibly.

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.