nansen-wallet-profiler — Claude Code skill: wallet research
A skill that profiles a crypto wallet: balance, PnL, labels, transactions, counterparties. Useful when you need to dig into one address or compare two.
npx skills add nansen-ai/nansen-cli --skill nansen-wallet-profiler -a claude-codeWhat nansen-wallet-profiler does
The skill hands your agent the nansen research profiler commands. Through them it pulls a wallet's balance and labels, computes PnL over a period, exports transactions and historical balances, and finds related wallets and counterparties. Perps get their own subcommands for positions and trades, and those skip --chain.
For bulk work there is batch (several addresses at once, fields picked with --include), trace for a breadth-first walk over counterparties at a set depth, and compare for shared counterparties and tokens between two wallets. counterparties-batch takes up to 10 addresses per call but won't mix EVM and Solana: one ecosystem per request, with all auto-detecting it. Rows arrive as contiguous per-wallet blocks, so a small page holds a single address — raise --limit and page with --page to reach the rest.
You need a selected API key or a saved browser session before anything runs: start with nansen auth status. NANSEN_API_KEY overrides the saved session. Calls can spend credits, and API keys and browser sessions share the same x402 auto-payment behavior — a supported HTTP 402 challenge can draw funds from the configured wallet under your existing limits. trace fires many API calls, so keep --width low. If authentication fails, don't unset the key or fall back to anonymous access to retry.
What it helps with
- check a wallet's balance and labels
- compute PnL for an address over 30 days
- export transaction history with a limit
- find related wallets and counterparties
- compare shared counterparties between two addresses
Example prompts for the agent
- Profile wallet 0xabc on ethereum: balance, labels and 30-day PnL
- Find counterparties for 0xabc over the last 30 days and show a table
- Compare 0xabc and 0xdef on ethereum — which counterparties and tokens do they share
How to install nansen-wallet-profiler
1Skills CLI (Vercel)
npx skills add nansen-ai/nansen-cli --skill nansen-wallet-profiler -a claude-code2Manually: put the files in place
~/.claude/skills/nansen-wallet-profiler/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/nansen-wallet-profiler/
1Skills CLI (Vercel)
npx skills add nansen-ai/nansen-cli --skill nansen-wallet-profiler -a codex2Manually: put the files in place
.agents/skills/nansen-wallet-profiler/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add nansen-ai/nansen-cli --skill nansen-wallet-profiler -a cursor2Manually: put the files in place
.cursor/skills/nansen-wallet-profiler/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install nansen-ai/nansen-cli nansen-wallet-profiler2Manually: put the files in place
.github/skills/nansen-wallet-profiler/SKILL.md1Skills CLI (Vercel)
npx skills add nansen-ai/nansen-cli --skill nansen-wallet-profiler -a gemini-cli2Platform CLI
gemini skills install https://github.com/nansen-ai/nansen-cli --path skills/nansen-wallet-profilerManually: put the files in place
.devin/skills/nansen-wallet-profiler/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add nansen-ai/nansen-cli --skill nansen-wallet-profiler -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about nansen-wallet-profiler
How do I install nansen-wallet-profiler in Claude?
Run npx skills add nansen-ai/nansen-cli --skill nansen-wallet-profiler -a claude-code. The skill lands in ~/.claude/skills/nansen-wallet-profiler/SKILL.md.
What does nansen-wallet-profiler do?
It reports balance, PnL, labels, transactions and counterparties for a wallet address, traces relationships and compares two addresses.
What does the skill need to run?
A selected API key or a saved browser session, plus the nansen binary. Run nansen auth status before starting research.
Source text
SKILL.md · MIT
---
name: nansen-wallet-profiler
description: Wallet profiler — balance, PnL, labels, transactions, counterparties, related wallets, batch, trace, compare. Use when analysing a specific wallet address or comparing wallets.
metadata:
openclaw:
requires:
bins:
- nansen
primaryEnv: NANSEN_API_KEY
install:
- kind: node
package: nansen-cli
bins: [nansen]
allowed-tools: Bash(nansen:*)
---
## Authentication
Browser login requests `nansen:api` for API-key-equivalent account API permissions; existing OAuth/MCP `nansen:read` semantics and separate wallet authorization are unchanged.
Before any research command or loop, require an explicitly selected API key or saved browser session. Run `nansen auth status` first. Its cached/unverified metadata does not prove credential validity or unlocked storage. Cached access-token expiry alone does not mean the session is unusable: the CLI normally renews a selected session automatically during an already-authorized research task, without another consent request or a separate account check. Stop on anonymous selection, invalid authentication state, blocked or uncertain renewal/cleanup, or an actual authentication failure, including rejected or expired refresh authority. Follow the CLI error guidance; use the free `nansen account` check when troubleshooting calls for it. Do not unset a failed key, erase a session or switch to anonymous access to retry.
Use `nansen login` for fresh browser approval within the documented platform scope, or configure a conventional API key. `NANSEN_API_KEY` overrides the saved session. OpenClaw's optional `primaryEnv` mapping preserves configured API-key injection; it is not a required-key gate or proof of authentication. Normal credits and entitlements apply. Login does not purchase credits. Browser login is available in CLI 2.0.0 within the [macOS arm64 preview scope](https://github.com/nansen-ai/nansen-cli/blob/main/docs/browser-login.md#preview-platform-scope).
API keys and browser sessions use the same automatic x402 payment behavior: a supported HTTP 402 challenge can spend funds from the configured wallet under existing wallet authorization, payment policy and spending limits. Each call, including calls in loops, can incur a payment. Authentication, authorization and session-renewal failures never trigger payment; login verification and `nansen account` never pay automatically. Anonymous x402 remains available as a separate paid workflow requiring explicit user intent and payment setup. Do not run this research workflow anonymously or switch to anonymous access after authentication fails.
# Wallet Profiler
All commands: `nansen research profiler <sub> [options]`
`--address` and `--chain` required for most commands.
## Balance & Identity
```bash
nansen research profiler balance --address <addr> --chain ethereum
nansen research profiler labels --address <addr> --chain ethereum
nansen research profiler search --query "Vitalik"
```
## PnL
```bash
nansen research profiler pnl --address <addr> --chain ethereum --days 30
nansen research profiler pnl-summary --address <addr> --chain ethereum
```
## Transactions & History
```bash
nansen research profiler transactions --address <addr> --chain ethereum --limit 20
nansen research profiler historical-balances --address <addr> --chain solana --days 30
```
## Relationships
```bash
nansen research profiler related-wallets --address <addr> --chain ethereum
nansen research profiler counterparties --address <addr> --chain ethereum --days 30
# Counterparties for up to 10 wallets in one call (max --days 90).
# Results are not aggregated — every row carries the wallet_address it belongs to.
# One ecosystem per request: EVM and Solana addresses cannot be mixed; `all` auto-detects it.
# --chain also takes any single chain the profiler serves, EVM or not: arbitrum, arc,
# avalanche, base, bitcoin, bnb (`bsc` is accepted too), ethereum, hyperevm, injective,
# iotaevm, linea, mantle, mantra, monad, near, optimism, plasma, polygon, robinhood, sei,
# solana, sonic, starknet, sui, ton, tron.
# Rows come back as contiguous per-wallet blocks ordered by wallet address, so a small page
# holds one wallet only — raise --limit and page with --page N to reach later wallets.
nansen research profiler counterparties-batch --addresses "0xabc,0xdef" --days 30 --limit 50
```
## Perps (no --chain)
```bash
nansen research profiler perp-positions --address <addr>
nansen research profiler perp-trades --address <addr> --days 7
```
## Batch, Trace & Compare
```bash
# Batch — profile multiple wallets at once
nansen research profiler batch \
--addresses "0xabc,0xdef" --chain ethereum \
--include labels,balance,pnl
# Trace — BFS multi-hop counterparty trace (makes N*width API calls)
nansen research profiler trace --address <addr> --chain ethereum --depth 2 --width 5
# Compare — shared counterparties and tokens between two wallets
nansen research profiler compare --addresses "0xabc,0xdef" --chain ethereum
```
## Flags
| Flag | Purpose |
|------|---------|
| `--address` | Wallet address (required) |
| `--chain` | Required except for perps and search |
| `--days` | Lookback period (default 30) |
| `--limit` | Number of results |
| `--addresses` | Comma-separated wallets for `batch`, `compare`, `counterparties-batch` |
| `--include` | Batch fields: `labels,balance,pnl` |
| `--depth` | Trace depth 1-5 (default 2) |
| `--width` | Trace width — keep low to save credits |
| `--fields` | Select specific fields |
| `--table` | Human-readable table output |
| `--format csv` | CSV export |
## Notes
- `pnl-summary` has no pagination support (returns aggregate stats, not a list).
- `perp-positions` has no pagination support.
- `labels` supports pagination — `--limit`/`--page` are honoured and the response is `{pagination: {page, per_page, is_last_page}, data[]: {label, category, kind[]}}`.
- `transactions` caps at per_page=100 (API limit).
- `trace` makes many API calls — use `--width` conservatively.
- `batch` accepts `--file <path>` with one address per line as alternative to `--addresses`.
© nansen-ai · MIT · nansen-ai/nansen-cli