Binance Wallet Tracker Skill
On-chain wallet tracking and monitoring. Monitor token-level and trade-level activity for private groups or public Smart Money / KOL data. Includes 9 built-in analysis scenarios for replay and pattern detection.
Prerequisites
This skill requires the
CLI (
npm package). If
is not found:
bash
npm install -g @binance/agentic-wallet
Verify:
should print
or higher. If installation fails or the user doesn't have Node.js, inform them that Node.js >= 18 is required.
When to Use
Discovery
| User intent | Command |
|---|
| Consensus tokens (many buyers) | → sort by |
| Pioneer tokens (≤2 traders) | → filter + |
| Leaderboard diff (untracked wallets) | (leaderboard skill) + → diff |
| Token-based buyer lookup | → client-side filter by |
| Time-window summary | tracker token query --period 4h
+ |
| Similar wallet discovery | (leaderboard skill) → archetype matching |
Evaluation
| User intent | Command |
|---|
| Token risk screening | → filter + |
| Group rhythm profiling | → per-address rhythm analysis |
| Follow list assessment | + (cross-skill) |
| Token heat analysis | → aggregate by |
Replay
| User intent | Command |
|---|
| 4h comprehensive summary | tracker token query --period 4h
+ |
| Accumulation vs distribution (Accumulation/Distribution) | → / per address |
| Sector rotation | → compare token top across time windows |
| Anomaly large orders | → detection |
| Round-trip (Round-Trip) | → detection |
| First-mover + leader-follower | → + |
| Wake-up detection | → detection |
| Bot-like behavior | → detection |
Full 9-scenario analysis rules:
Management
| User intent | Command |
|---|
| Create / rename group | tracker group create/update
|
| Batch import addresses | |
| Add single address | |
| Update label / link to group |
| Delete addresses | |
| Follow / unfollow address | tracker address follow/unfollow
|
| View follow list | |
| Search address (fuzzy) | |
Supported Chains
| Chain | chainId |
|---|
| BSC | |
| Solana | |
| Base | |
| Ethereum | |
Command Tree
baw tracker
token query # Token dimension monitor (private + --tag-type for public)
tx query # Trade dimension monitor (private + --tag-type for public)
follow # Query current user follow list (read-only, chainId only)
ws # WebSocket real-time push (--smy/--kol/--wallet/--address/--following)
group
list # Group list
create # Create group
update # Rename group
address
search # Fuzzy search address
list # Paginated address list
add # Add single address (wraps import)
batch # Batch import
update # Update label (label only)
link # Link to group (group/link)
delete # Delete (supports batch)
follow # Follow address
unfollow # Unfollow
All commands support
for structured output.
and require either (private group) or (public KOL/SMY). Calling without either returns an error.
accepts: (KOL), (Smart Money).
Token Monitor (A2)
bash
# Private — own group data (must specify --group-id or --tag-type)
baw tracker token query -c 56 --group-id 1 --json
baw tracker token query -c 56 --group-id 1 --period 4h --json
# Public — SMY/KOL data
baw tracker token query -c 56 --tag-type kol --json # KOL
baw tracker token query -c CT_501 --tag-type smy --json # Smart Money
Returns per-token aggregated data: token name, CA, price, market cap, volume,
(per-address buy/sell/inflow),
,
,
.
Consensus computation: The API does NOT return top-level
or
. The CLI aggregates
=
,
= Σ
,
/
= Σ buy/sell counts. Use these fields directly.
Per-address fields:
,
,
,
,
,
,
,
,
.
Full parameter and return field reference:
Tx Monitor (A3)
bash
# Private — own group trade flow
baw tracker tx query -c 56 --group-id 1 --json
# Public — SMY/KOL trade flow
baw tracker tx query -c 56 --tag-type smy --json
# Filter by trade side (19=buy, 11=first-buy, 29=sell, 21=clear)
baw tracker tx query -c 56 --group-id 1 --trade-side 19 --json
Returns per-trade records:
,
,
,
,
,
,
,
,
,
,
,
,
, plus optional
,
,
,
,
,
,
,
.
⚠️ Critical: is in SECONDS (not milliseconds) — 10-digit Unix timestamp. All time-window calculations (round-trip <1h, wake-up >72h, co-buy 10min window) must use seconds. A2's
/
ARE in milliseconds (13-digit).
No pagination — returns all matching records in one response.
ca/address filtering (Skill responsibility): The A3 API does NOT accept
or
as filter parameters. The Skill handles this filtering: fetch all records from
, then filter by matching
(contract address) or
(wallet) in the results. This enables the core scenario "who in a group is buying a specific token" — fetch the group's full trade flow, then filter by
.
Follow Query (A4)
bash
# Query current user's follow list (chainId only)
baw tracker follow -c 56 --json
Returns a map where key = followed address, value =
.
Limitation: Only queries the
current user's follow list. You cannot query another user's follow list. For "evaluate follow list" scenarios, combine with
skill's
to score each followed address.
Group Management (B1)
bash
# List groups (displayOrder: All=-1, Default=0, others sequential)
baw tracker group list -c 56 --json
# Create group
baw tracker group create -c 56 -n "Base-Sniper" --json
# Rename group
baw tracker group update -c 56 -g 1 -n "NewName" --json
# Note: group delete is not available in the CLI. Groups can only be created and renamed.
Group fields:
,
,
,
. Sort groups by
: All=-1, Default=0, others sequential.
Address Management (B2)
bash
# Fuzzy search
baw tracker address search -c 56 -g 1 -a 0xabc --json
# Paginated list
baw tracker address list -c 56 -g 1 --page 1 --size 20 --json
# Single add (wraps import with enforce=false)
baw tracker address add -c 56 -g 1 -a 0xabc --label "Whale1" --json
# Batch import (comma-separated addresses or JSON array of {address,label})
baw tracker address batch -c 56 -g 1 -a 0xabc,0xdef --json
# Or with labels: -a '[{"address":"0xabc","label":"Whale1"},{"address":"0xdef"}]'
# Update label only (groupId is deprecated for update)
baw tracker address update -c 56 -a 0xabc --label "NewLabel" --json
# Link to another group
baw tracker address link -c 56 -a 0xabc -g 2 --json
# Delete (comma-separated addresses)
baw tracker address delete -c 56 -g 1 -a 0xabc,0xdef -y --json
# Follow / unfollow
baw tracker address follow -c 56 -g 1 -a 0xabc --label "Follow1" --json
baw tracker address unfollow -c 56 -a 0xabc --json
Import defaults:
defaults to
(overwrites existing label).
defaults to
. Use
to disable overwrite.
Follow response: Returns
{address, followed: true}
— NO
field.
is a boolean status flag.
Address search/list fields: Returns
,
,
,
,
,
,
,
,
,
,
.
Full parameter and return field reference:
Core Rules
Consensus & Inflow Computation (A2)
The API does NOT return top-level
,
,
, or
fields. The CLI aggregates these from
and exposes them as:
- (Consensus) =
- (Net Inflow) = Σ
- (accumulation count) = Σ
- (distribution count) = Σ
Use these CLI-aggregated fields directly — no need to re-compute from
.
Accumulation vs Distribution
and
are returned per-address directly. No need to aggregate
— use these fields directly for Accumulation/Distribution analysis.
Client-Side Filtering (Skill responsibility)
The A2/A3 APIs do NOT accept
or
as filter parameters. The
param on A2 token/query is accepted but silently ignored by the backend. The Skill handles this filtering:
- Fetch all records via or (no ca/address filter)
- Filter by matching (contract address) or (wallet) in the results
This enables core scenarios like "who in a group is buying a specific token" — fetch the group's full trade flow, then filter by
.
This affects: Find Buyers by Token (co-buy), token-based buyer lookup, and any scenario requiring single-token or single-address focus.
Follow List Limitation (A4)
only queries the
current user's follow list (chainId only, no address param). You cannot evaluate another user's follow list. For "evaluate follow list" scenarios, combine with
skill's
command.
Group Field Names
returns
. Sort groups by
: All=-1, Default=0, others sequential.
Follow Response Fields
response returns
{address, followed: true}
.
is a boolean status flag.
Write-Back Confirmation
After any write operation (create/update/delete/import/follow/unfollow/link), re-fetch the affected resource to confirm the operation succeeded — this guards against
silent expiry and backend silent failures.
Readback failure handling: If readback shows the operation didn't take effect (e.g. address still exists after delete, group not found after create), tell the user "Operation may not have taken effect, please try again later" — never mention backend bugs, silent failures, or error codes.
Destructive Operation Safety
Delete, link, and unfollow operations require
flag (or interactive confirmation) before execution. Always confirm with the user before executing destructive operations.
EVM Address Case Normalization (delete only)
The backend stores EVM addresses as lowercase (import API lowercases them), but
does case-sensitive matching. If the user provides an EIP-55 mixed-case address (e.g.
0x52908400098527886E0F7030069857D03E3248B4
), delete will silently fail — return
without actually deleting. The CLI does NOT normalize; it passes through as-is.
Skill responsibility: Before calling
baw tracker address delete
, normalize EVM addresses to lowercase:
- EVM ( + 40 hex):
- Solana (Base58, case-sensitive): pass through as-is — do NOT lowercase
This is verified against QA: import with mixed case stores as lowercase, delete with lowercase succeeds, delete with mixed case returns
but address remains.
Batch Import Behavior
- defaults to — existing labels are overwritten
- defaults to — skips validation enforcement
- Chain is specified by — CLI does NOT auto-detect address format
- Cross-chain auto-dispatch (Skill responsibility): When the user provides a mixed list of EVM + Solana addresses, the Skill must:
- Classify each address by format:
- EVM: matches → chainId (BSC) or (Base) — determine by user context or ask
- Solana: Base58, 32-44 chars, no prefix → chainId
- Group addresses by chain
- Call
baw tracker address batch -c <chainId>
once per group
- Aggregate results (new/exist/overwrite counts) across all chains
Real-Time Monitoring (WebSocket)
| User intent | Command |
|---|
| Real-time Smart Money buy/sell signals | tracker ws --smy --duration 15
|
| Real-time KOL activity on a chain | tracker ws --kol -c <chainId> --duration 15
|
| Chain-level wallet activity (multi-chain) | tracker ws --wallet BSC,SOL --duration 15
|
| Monitor specific address trades | tracker ws --address <addr> -c <chainId> --duration 15
|
| Batch address monitoring (file) | tracker ws --address-list <file> -c <chainId> --duration 15
|
| Monitor my followings' activity | tracker ws --following -c <chainId> --duration 15
|
subscribes to WSP WebSocket push events. It streams real-time trade data (buys, sells, price changes) for the selected scope. In
mode, only push messages are written to stdout (no meta info), enabling pipeline processing with
.
is required unless the user explicitly asks for an unlimited stream. Extract the duration from the user's instruction when available (e.g. "monitor for 60 seconds" →
). If no duration is specified, default to
.
tip: When the followed address list is large, the CLI may fall back to a broader chain-level stream. If the user only wants events for their followed addresses, filter push messages by
against the follow list (
tracker follow -c <chainId> --json
).
Limitations
- Token price change: may not reliably return for all tokens. For reliable price data, use marketCap + risk + pioneer timing as proxy.
- Time window filtering: has a param (1m/5m/1h/4h/24h), but granular time-window queries (e.g., "past 4h") rely on client-side aggregation of fields.
- A4 Follow read-only: only queries the current user's own follow list. Follow/unfollow writes use / commands (B2).
9 Analysis Scenarios (A3)
Built-in analysis patterns for
data. Full rules and algorithms:
| Scenario | Detection Rule |
|---|
| rhythm | Per-address count/buys/sells/mean_usd/active hours |
| anomaly | and |
| co-buy | Same , ≥3 buyers within 10min window |
| round-trip | Same address same , buy→sell < 1h |
| rotation | Token top diff across time windows |
| first-mover | Earliest buyer of a |
| leader-follower | Median delay after first-mover |
| wake-up | New activity after >72h gap |
| bot-like | Low interval variance + high night ratio + low amount dispersion |
Error Codes
Error codes are for internal lookup only — never show numeric codes or internal names to users. Translate to natural-language messages.
| Code | Internal Name | User-Facing Message |
|---|
| 70001001 | TRACKER_API_ERROR | Query failed, please try again later |
| 70002001 | TRACKER_GROUP_NOT_FOUND | Group not found |
| 70002002 | TRACKER_GROUP_EXISTS | Group already exists |
| 70002003 | TRACKER_GROUP_LIMIT | Group limit reached |
| 70003001 | TRACKER_ADDRESS_NOT_FOUND | Address not found |
| 70003002 | TRACKER_ADDRESS_EXISTS | Address already exists |
| 70003003 | TRACKER_ADDRESS_INVALID | Invalid address format |
Display Templates
Consensus token:
📊 Consensus Tokens Top 5
{tokenName} | Consensus: {consensusCount} | Net Inflow: ${netInflow} | Accumulation: {countBuy} | Distribution: {countSell} | Liquidity: {volume} | Risk: {riskLevel}
Trade flow entry:
{ts} | {label} | {tradeSideLabel} {tokenName} | ${txUsdValue} | Price: {tokenPrice} → {currentPrice}
Group info:
{groupName} ({addressCount}addresses)
User-Facing Presentation
This skill serves end users, not developers. Internal field names, error codes, and CLI internals must never appear in user-facing output.
1. Term Mapping (internal → user-facing)
| Internal value | User-facing term | Notes |
|---|
| First Buy | |
| Buy | |
| Clear Position | |
| Sell | |
| Unknown Trade Type | May include undocumented values |
| Low Risk | |
| High Risk | ≥3 = high risk |
| (omit) | Never show in user-facing output |
| (omit) | Never show in user-facing output |
| (in display) | (omit unless asked) | Use as primary identifier |
| (in display) | | Use label, not raw address |
Raw enum values (
,
, etc.) may appear in CLI syntax examples and internal lookup tables, but never in user-facing replies.
2. Never expose internal identifiers
- , — internal IDs, never shown to users
- Error codes (, etc.) — translate to natural-language messages only
- Backend behavior details (e.g. delete silently failing on case mismatch, preset save not persisting) — never mention "backend bug" or "silent failure"; handle gracefully with readback
3. Display template hygiene
Use user-facing terms in all output. The
field should be translated to its display term (Buy, Sell, etc.) — never show the raw numeric value.
should be shown as Low Risk/High Risk, not as a number.
and
should not appear in display templates.
Full CLI Reference
- — All commands with parameter tables, return field tables, and examples
- — 9 analysis scenarios with detection rules and algorithms