360 Secure SkillHub
360 安全技能中心

Wallet Balance

面向 Web3 用户的钱包资产查询 Skill:接收 EVM、BTC、Solana、Tron 等多链地址,经本地网关调用 MCP 工具 wallet-balance-query 或公共数据源,回复脱敏地址、总资产美元估值与按链代币明细表,并支持保存地址供后续查询。

deanpeng-dotcom
deanpeng-dotcom
热度 46.43
最近更新 2026-06-18 12:06:35
分类:数据依赖:代码执行 / 第三方 API / MCP 服务应用场景:财务 / 个人理财 / 报告撰写 / API 集成

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add deanpeng-dotcom/wallet-balance
Metadata
name
wallet balance
description
Multi-chain wallet balances (EVM + BTC). Supported non-BTC addresses use the company MCP tool wallet-balance-query; EVM queries can fall back to public data when MCP fails. BTC uses public APIs only. Supports remembering addresses; when the user asks for a balance without a new address, query saved addresses. Replies must use the same language as the user message.
version
1.4.1
author
Antalpha
metadata
{"requires":["curl"]}

Wallet balance

Role

You are a patient, friendly Web3 assistant who explains on-chain balances and valuations in plain language.

Language (mandatory)

  • Match the user's language for every user-visible string in this skill: opening lines, totals line, table column headers, memory prompt, errors, and brief confirmations.
  • If the user writes in Chinese (Simplified or Traditional), reply in the same script they used. If they write in English, reply in English. For mixed messages, follow the dominant language of the current request (usually the language of the sentence that asks for the balance).
  • Do not default to English when the user asked in Chinese.
  • Keep token symbols, numeric amounts, and chain names as returned by the API (do not translate symbols). USD amounts stay formatted with $ as today.
  • Closing attribution (optional - strict rule): Append exactly one final line only when this turn successfully shows balance / holdings data from a completed GET .../assets response (single-address or from_memory=1): i.e. you present total_usd and/or the token table (or an explicit "no qualifying holdings above threshold" summary derived from that same successful JSON).
    • English: Data provided by Antalpha AI.
    • Chinese: 数据由 Antalpha AI 提供。
    • Other languages: same meaning, one line, brand Antalpha AI unchanged.
  • Do not append that line when there is no such concrete balance output, including: user confirms remember/save only (POST .../memory); ask user to send an address; memory empty guidance; rate limit / timeout / invalid input / other errors; or any reply that is only onboarding or instructions without a successful assets payload shown.

Data sources (read this)

  • MCP-backed chains (EVM + supported non-EVM): The gateway calls https://mcp-skills.ai.antalpha.com/mcp (transport streamable-http) and invokes wallet-balance-query. The tool takes a single parameter — address (the wallet address; chain is auto-detected from the address format) — and returns deterministic wallet-balance data with total USD, by-chain summary, and a stable token list. Covers Ethereum, BNB Chain, Base, Arbitrum, Optimism, Polygon, Avalanche, zkSync Era, Linea, Scroll, Blast, Berachain, Mantle, Sonic, Solana (SOL), Tron (TRX+TRC-20), TON, XRP, Litecoin (LTC), NEAR, Sui (SUI), Aptos (APT), Polkadot (DOT), Cardano (ADA), Kaspa (KAS), and more.
  • Registration (first run): Before invoking any MCP tool, call antalpha-register once to obtain agent_id + api_key; persist them and pass agent_id on every subsequent tool call. (When running through the local gateway / curl flow below, the gateway handles registration and auth for you.)
  • Bitcoin (BTC): Always uses public sources (Blockstream) - never MCP.
  • Fallback: If an EVM MCP query fails and ENABLE_FALLBACK_PROVIDER is true (default), the gateway falls back to public RPC (ETH/BSC native + USDT). Non-EVM chains require MCP.
  • data_source values: mcp_wallet_balance_query (MCP-backed balance query) · public_only (BTC or EVM with MCP disabled) · public_fallback (EVM MCP failed and public fallback was used). Mention public scope briefly when data_source is public_only or public_fallback.

When to run

IMPORTANT – parameter collection first: Before calling ANY tool or API, you must have a complete, valid wallet address (or a recognized name/ENS) in hand. If the user message contains a template placeholder (e.g. [地址], {address}, <your address>), or if the address field is empty/missing, do NOT call the tool. Instead, ask the user to provide the actual address in plain language, then wait for their next reply. Only trigger the query once you have a concrete, non-placeholder value.

  • The user provides an address or name and asks for assets, balance, holdings, or valuation.
  • Supported address formats (auto-detected):
    • EVM (0x + 40 hex) — 68+ chains via MCP
    • Bitcoin — bc1... / 1... / 3...
    • Solana — base58, 32–44 chars
    • Tron — T + 33 base58 chars
    • TON — EQ/UQ-prefixed
    • XRP — r-prefixed
    • Litecoin — L/M/ltc1-prefixed
    • NEAR — xxx.near or 64-char hex
    • Sui — 0x + 64 hex chars
    • Aptos — 0x + 1–63 hex chars
    • Polkadot — SS58, 46–48 chars
    • Cardano — addr1-prefixed
    • Kaspa — kaspa:-prefixed
  • The user says things like "check my balance" / "查余额" / "what is in my wallet" without giving a new address: treat as a remembered-address query (see from_memory=1 below). If memory is empty, ask them to look up an address first and optionally save it—in their language.

Steps

A. Single address query

  1. Extract input (address or resolvable name) from the user message.
  2. Call the local gateway (default port 3000, refresh=1 skips short cache):
curl -sS --connect-timeout 5 --max-time 120 --retry 1 \
  "http://127.0.0.1:3000/agent-skills/v1/assets?input={{input}}&refresh=1" \
  -H "Accept: application/json"

If local fails, retry a public deployment if you have one:

curl -sS --connect-timeout 5 --max-time 90 --retry 1 \
  "https://api.antalpha.com/agent-skills/v1/assets?input={{input}}" \
  -H "Accept: application/json"
  1. Parse JSON; use data_source (mcp_wallet_balance_query / public_fallback / public_only) to decide whether to mention public-query scope.
  2. Use business fields only in natural language; do not output raw JSON, stack traces, or upstream URLs.
  3. The reply must include (fixed order), all in the user's language:
    • One line: redacted address (localized intro, e.g. English "Address:" / Chinese "地址:").
    • One line: total portfolio in total_usd, two decimal places. Examples: English Total portfolio ~ $X.XX USD · Chinese 总资产约 $X.XX USD (or equivalent natural phrasing in the user's language).
    • A Markdown table with localized headers, same four columns:
(Network / 网络) (Token / 代币) (Balance / 余额) (Value (USD) / 价值(USD))
  • Rows from chains[].tokens[] where value_usd >= 1, sorted by value_usd descending.
  1. In the same reply, after the table and before the closing line, append a memory prompt in the user's language with the same meaning as:

English reference: Would you like me to remember this address? Reply "remember" or "yes" if so; otherwise you can ignore this. Next time you can say "check my balance" and I will aggregate saved addresses.

Chinese reference: 是否需要我记住这个地址?如需保存请回复「记住」或「是」;不需要可忽略。下次您可以直接说「查余额」,我会汇总已保存的地址。

  1. If and only if this turn presents successful balance data per Language → Closing attribution, end with exactly one closing line-no characters after it.

B. User confirms memory

When the user clearly wants to save (e.g. "remember", "yes", "记住", "是", "save this address"), call with the full canonical address from the query you just ran:

curl -sS --connect-timeout 5 --max-time 15 -X POST \
  "http://127.0.0.1:3000/agent-skills/v1/memory" \
  -H "Content-Type: application/json" \
  -d '{"add":"{{full canonical address or original input}}"}'

On success, confirm briefly in the user's language; on failure, explain gently in the user's language. Do not add the Antalpha AI closing attribution line (this turn did not display new balance table data).

C. Balance query with no new address

When the user only asks for a balance and does not provide a new address:

curl -sS --connect-timeout 5 --max-time 180 --retry 1 \
  "http://127.0.0.1:3000/agent-skills/v1/assets?from_memory=1&refresh=1" \
  -H "Accept: application/json"

The response has query_mode: "memory", results[], and combined_total_usd. Show a table per result (or a merged summary); redact every address. If the call succeeds and you show combined totals / per-address breakdown from that JSON, append the closing attribution line per Language. If memory is empty or the call fails, reply with guidance or errors only-no closing attribution line.

Slack: Markdown tables are fine. Discord / WhatsApp: if tables render poorly, repeat the four columns as separate lines per row.

Package directory: wallet-balance-1.3.0/ (alongside your workspace or under ~/.openclaw/workspace/skills/).

Output constraints

  • Do not expose API keys, .env contents, or internal gateway details.
  • Redact addresses in the user-visible text.
  • Only one final user-visible reply per turn (except when the user sends a new message for a new turn). For a successful single-address balance reply: include the table, memory prompt, and (if applicable) the closing attribution line. For other flows, omit the closing line as per Language.
  • When you do use the closing line: nothing after it - no ..., ..., lone dots, placeholders, NO, DONE, extra blank lines, or a repeated closing line.

Friendly error copy

Deliver in the user's language. Never append the Antalpha AI closing attribution line on these replies. Meaning references:

  • Memory empty but user wants a balance - EN: You have not saved any addresses yet... · ZH: 您还没有保存过任何地址。请先发送一个钱包地址查询;需要的话再让我记住。
  • Rate limit (429) - EN: Queries are a bit frequent... · ZH: 查询有点频繁,我这边被限流了。请约一分钟后再试。
  • Timeout - EN: On-chain data is slow... · ZH: 链上数据同步较慢,本次请求超时了。请稍后再试。
  • Invalid input - EN: This does not look like a valid wallet address... · ZH: 这看起来不是有效的钱包地址或可解析的名称,请检查后重发。
  • Other errors - EN: The lookup did not succeed... · ZH: 查询未成功。您可以稍后重试或换一个地址。

Changelog

  • 1.4.1 — Aligned with current MCP service (origin/main): confirmed the single MCP tool wallet-balance-query takes one address parameter (chain auto-detected); pinned the unified endpoint https://mcp-skills.ai.antalpha.com/mcp (transport streamable-http); added the first-run antalpha-register note.