nansen-cli 1.16.1 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/package.json +2 -1
  3. package/skills/nansen-alerts/SKILL.md +137 -0
  4. package/skills/nansen-alpha-discovery/SKILL.md +43 -0
  5. package/skills/nansen-batch-wallet/SKILL.md +26 -0
  6. package/skills/nansen-cross-chain-flow/SKILL.md +27 -0
  7. package/skills/nansen-dca-watch/SKILL.md +38 -0
  8. package/skills/nansen-defi-exposure/SKILL.md +37 -0
  9. package/skills/nansen-exit-signal/SKILL.md +39 -0
  10. package/skills/nansen-fund-watch/SKILL.md +35 -0
  11. package/skills/nansen-holder-quality/SKILL.md +38 -0
  12. package/skills/nansen-perp-scan/SKILL.md +32 -0
  13. package/skills/nansen-perp-trader/SKILL.md +39 -0
  14. package/skills/nansen-pm-deep-dive/SKILL.md +50 -0
  15. package/skills/nansen-pm-insider-scan/SKILL.md +62 -0
  16. package/skills/nansen-polymarket-trader/SKILL.md +43 -0
  17. package/skills/nansen-portfolio-history/SKILL.md +36 -0
  18. package/skills/nansen-prediction-market/SKILL.md +47 -0
  19. package/skills/nansen-profiler/SKILL.md +98 -0
  20. package/skills/nansen-search/SKILL.md +34 -0
  21. package/skills/nansen-sm-trend/SKILL.md +30 -0
  22. package/skills/nansen-smart-money/SKILL.md +71 -0
  23. package/skills/nansen-token/SKILL.md +90 -0
  24. package/skills/nansen-token-discovery/SKILL.md +54 -0
  25. package/skills/nansen-token-forensics/SKILL.md +40 -0
  26. package/skills/nansen-trade/SKILL.md +100 -0
  27. package/skills/nansen-wallet/SKILL.md +140 -0
  28. package/skills/nansen-wallet-analysis/SKILL.md +45 -0
  29. package/skills/nansen-wallet-attribution/REFERENCE.md +43 -0
  30. package/skills/nansen-wallet-attribution/SKILL.md +46 -0
  31. package/skills/nansen-wallet-migration/SKILL.md +183 -0
  32. package/skills/nansen-web-fetch/SKILL.md +50 -0
  33. package/skills/nansen-web-search/SKILL.md +39 -0
  34. package/src/api.js +144 -73
  35. package/src/cli.js +181 -14
  36. package/src/rpc-urls.js +29 -0
  37. package/src/schema.json +401 -1448
  38. package/src/telemetry.js +237 -0
  39. package/src/trading.js +26 -12
  40. package/src/transfer.js +1 -11
  41. package/src/update-check.js +2 -2
  42. package/src/wallet.js +2 -1
  43. package/src/x402.js +3 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,58 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.18.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#265](https://github.com/nansen-ai/nansen-cli/pull/265) [`c3de691`](https://github.com/nansen-ai/nansen-cli/commit/c3de6914dcdd29f54d027f0cc415c23dd646c003) Thanks [@TimNooren](https://github.com/TimNooren)! - Add `nansen alerts` command for managing smart alerts (list, create, update, toggle, delete).
8
+
9
+ Supports three alert types: `sm-token-flows`, `common-token-transfer`, and `smart-contract-call`.
10
+ Named flags (`--inflow-1h-min`, `--chains`, `--telegram`, etc.) let you build alerts without raw JSON;
11
+ a `--data` escape hatch is available for full config overrides.
12
+
13
+ Also adds a `nansen-alerts` skill for agent integration.
14
+
15
+ - [#295](https://github.com/nansen-ai/nansen-cli/pull/295) [`3ddcbde`](https://github.com/nansen-ai/nansen-cli/commit/3ddcbdec50d55e4477cd3f53c5064126dbd8580a) Thanks [@kome12](https://github.com/kome12)! - feat: add `nansen web search` and `nansen web fetch` commands (ECINT-6393)
16
+
17
+ - `nansen web search <query> [query...]` — search the web for one or more queries in parallel via `/api/v1/search/web-search`
18
+ - `nansen web fetch <url> [url...] --question <q>` — fetch and analyze URL content with AI via `/api/v1/search/web-fetch`
19
+
20
+ ### Patch Changes
21
+
22
+ - [#293](https://github.com/nansen-ai/nansen-cli/pull/293) [`bcd95a8`](https://github.com/nansen-ai/nansen-cli/commit/bcd95a88942e96018337ae6b7de9f2abdbdc3464) Thanks [@TimNooren](https://github.com/TimNooren)! - Add default values for all required alert data fields to match backend schema
23
+
24
+ - [#265](https://github.com/nansen-ai/nansen-cli/pull/265) [`c3de691`](https://github.com/nansen-ai/nansen-cli/commit/c3de6914dcdd29f54d027f0cc415c23dd646c003) Thanks [@TimNooren](https://github.com/TimNooren)! - Fix `alerts list` filtering (`--type`, `--enabled`, `--disabled`, `--chain`, `--token-address`, `--limit`, `--offset`).
25
+
26
+ Filters were sent as query params but silently ignored by the API. Now applied client-side after fetching all alerts.
27
+
28
+ - [#301](https://github.com/nansen-ai/nansen-cli/pull/301) [`cda6796`](https://github.com/nansen-ai/nansen-cli/commit/cda6796642c588965111c53c583af2b21444d30b) Thanks [@kome12](https://github.com/kome12)! - fix: add missing openclaw metadata to 19 skills
29
+
30
+ - [#294](https://github.com/nansen-ai/nansen-cli/pull/294) [`8a1cc7b`](https://github.com/nansen-ai/nansen-cli/commit/8a1cc7bdfbd9597860384dfd40fd28705e5c947c) Thanks [@yodablocks](https://github.com/yodablocks)! - fix: include skills/ directory in published npm package
31
+
32
+ ## 1.17.0
33
+
34
+ ### Minor Changes
35
+
36
+ - [#279](https://github.com/nansen-ai/nansen-cli/pull/279) [`174a3d6`](https://github.com/nansen-ai/nansen-cli/commit/174a3d612b3f198c5e5b979c269d896f9d906704) Thanks [@kome12](https://github.com/kome12)! - Add `nansen account` command to verify API key and check credit balance
37
+
38
+ Users can now run `nansen account` to confirm their API key is valid and see
39
+ their current plan and remaining credits — without consuming any credits.
40
+
41
+ This calls the new `GET /api/v1/account` endpoint (ECINT-6365).
42
+
43
+ - [#234](https://github.com/nansen-ai/nansen-cli/pull/234) [`10a5ced`](https://github.com/nansen-ai/nansen-cli/commit/10a5ced9f1f751666d034cecfc431e335183741c) Thanks [@kome12](https://github.com/kome12)! - Reduced schema.json to a minimal format (~66% smaller).
44
+
45
+ ### Patch Changes
46
+
47
+ - [#272](https://github.com/nansen-ai/nansen-cli/pull/272) [`50213c1`](https://github.com/nansen-ai/nansen-cli/commit/50213c1d82375a153aa1bad3a53bbd7059cd9f5b) Thanks [@TimNooren](https://github.com/TimNooren)! - fix: show human-readable error when trade fails due to insufficient ETH
48
+
49
+ When a wallet has no ETH and a trade is attempted, the raw Ethereum RPC
50
+ error ("insufficient funds for gas \* price + value: ... have 0 want
51
+ 400000000000000 (supplied gas 600000000)") is now translated into a
52
+ user-friendly message showing amounts in ETH with a funding hint, e.g.
53
+ "Insufficient ETH: wallet has 0.000000 ETH but this trade needs ~0.000400
54
+ ETH (amount + gas). Send ETH to 0x... before trading."
55
+
3
56
  ## 1.16.1
4
57
 
5
58
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nansen-cli",
3
- "version": "1.16.1",
3
+ "version": "1.18.0",
4
4
  "description": "Command-line interface for Nansen API - designed for AI agents",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -10,6 +10,7 @@
10
10
  "files": [
11
11
  "src/*.js",
12
12
  "src/*.json",
13
+ "skills/**",
13
14
  "CHANGELOG.md"
14
15
  ],
15
16
  "scripts": {
@@ -0,0 +1,137 @@
1
+ ---
2
+ name: nansen-alerts
3
+ description: Manage smart alerts — list, create, update, toggle, delete. Use when setting up or managing token flow alerts, smart money alerts, or notification rules.
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - NANSEN_API_KEY
9
+ bins:
10
+ - nansen
11
+ primaryEnv: NANSEN_API_KEY
12
+ install:
13
+ - kind: node
14
+ package: nansen-cli
15
+ bins: [nansen]
16
+ allowed-tools: Bash(nansen:*)
17
+ ---
18
+
19
+ # Smart Alerts
20
+
21
+ CRUD management for smart alerts. Alerts are internal-only (requires Nansen internal API key).
22
+
23
+ ## Quick Reference
24
+
25
+ ```bash
26
+ nansen alerts list --table
27
+ nansen alerts create --name <name> --type <type> --chains <chains> --telegram <chatId>
28
+ nansen alerts update <id> [--name <name>] [--chains <chains>]
29
+ nansen alerts toggle <id> --enabled|--disabled
30
+ nansen alerts delete <id>
31
+ ```
32
+
33
+ ## Options Reference
34
+
35
+ | Flag | Create | Update | Toggle | Delete |
36
+ |------|--------|--------|--------|--------|
37
+ | `<id>` (positional) | | required | required | required |
38
+ | `--name` | required | optional | | |
39
+ | `--type` | required | required with type-specific flags | | |
40
+ | `--chains` | recommended | optional | | |
41
+ | `--telegram` | chat ID | optional | | |
42
+ | `--slack` | webhook URL | optional | | |
43
+ | `--discord` | webhook URL | optional | | |
44
+ | `--description` | optional | optional | | |
45
+ | `--enabled` | | flag | flag | |
46
+ | `--disabled` | flag | flag | flag | |
47
+ | `--data` | optional (JSON escape hatch) | optional | | |
48
+
49
+ ## Alert Types
50
+
51
+ ### 1. `sm-token-flows` — Smart Money Token Flows
52
+
53
+ Track aggregated SM inflow/outflow. At least one flow threshold should be specified.
54
+
55
+ **Type-specific flags:**
56
+ - `--inflow-1h-min/max`, `--inflow-1d-min/max`, `--inflow-7d-min/max` (USD thresholds)
57
+ - `--outflow-1h-min/max`, `--outflow-1d-min/max`, `--outflow-7d-min/max`
58
+ - `--netflow-1h-min/max`, `--netflow-1d-min/max`, `--netflow-7d-min/max`
59
+ - `--token <address:chain>` (repeatable) — include specific tokens
60
+ - `--exclude-token <address:chain>` (repeatable)
61
+ - `--token-sector <name>` / `--exclude-token-sector <name>` (repeatable)
62
+ - `--token-age-max <days>`
63
+ - `--market-cap-min/max <usd>`, `--fdv-min/max <usd>`
64
+
65
+ **Example:**
66
+ ```bash
67
+ nansen alerts create \
68
+ --name 'SM ETH Inflow >5M' \
69
+ --type sm-token-flows \
70
+ --chains ethereum \
71
+ --telegram 5238612255 \
72
+ --inflow-1h-min 5000000 \
73
+ --token 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2:ethereum
74
+ ```
75
+
76
+ ### 2. `common-token-transfer` — Token Transfer Events
77
+
78
+ Track real-time transfer events matching specified criteria.
79
+
80
+ **Subject types:** `address`, `entity`, `label`, `custom-label`
81
+ Format: `--subject type:value` (e.g. `--subject label:"Centralized Exchange"`)
82
+
83
+ **Type-specific flags:**
84
+ - `--events <buy,sell,swap,send,receive>` (comma-separated)
85
+ - `--usd-min/max <usd>`, `--token-amount-min/max <n>`
86
+ - `--subject <type:value>` (repeatable) — addresses/entities/labels to track
87
+ - `--counterparty <type:value>` (repeatable) — requires `--subject`
88
+ - `--token <address:chain>` / `--exclude-token <address:chain>` (repeatable)
89
+ - `--token-sector <name>` / `--exclude-token-sector <name>` (repeatable)
90
+ - `--token-age-min/max <days>`, `--market-cap-min/max <usd>`
91
+ - `--exclude-from <type:value>` / `--exclude-to <type:value>` (repeatable)
92
+
93
+ **Event direction notes:**
94
+ - `buy` for counterparties = `sell` for subjects
95
+ - `send` for counterparties = `receive` for subjects
96
+ - To track "any address sending to CEX": use `--subject` with `receive`, not `--counterparty` with `send`
97
+
98
+ **Example:**
99
+ ```bash
100
+ nansen alerts create \
101
+ --name 'Large USDC Transfers' \
102
+ --type common-token-transfer \
103
+ --chains ethereum \
104
+ --telegram 123456789 \
105
+ --events send,receive \
106
+ --usd-min 1000000 \
107
+ --token 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48:ethereum
108
+ ```
109
+
110
+ ### 3. `smart-contract-call` — Smart Contract Interactions
111
+
112
+ Track contract calls matching specified criteria.
113
+
114
+ **Type-specific flags:**
115
+ - `--usd-min/max <usd>`
116
+ - `--signature-hash <hash>` (repeatable, e.g. `0x095ea7b3` for `approve`)
117
+ - `--caller <type:value>` / `--exclude-caller <type:value>` (repeatable)
118
+ - `--contract <type:value>` / `--exclude-contract <type:value>` (repeatable)
119
+
120
+ **Example:**
121
+ ```bash
122
+ nansen alerts create \
123
+ --name 'Uniswap V3 Large Swaps' \
124
+ --type smart-contract-call \
125
+ --chains ethereum \
126
+ --telegram 123456789 \
127
+ --usd-min 1000000 \
128
+ --contract entity:"Uniswap V3"
129
+ ```
130
+
131
+ ## Notes
132
+
133
+ - Chain aliases: Hyperliquid = `hyperevm`, BSC = `bnb`.
134
+ - Multiple channels can be combined: `--telegram 123 --slack https://...`
135
+ - `--data '<json>'` merges raw JSON on top of named flags (escape hatch for fields without named flags).
136
+ - Alert endpoints are internal-only. Non-internal users receive 404.
137
+ - Use single quotes for names with `$` or special characters: `--name 'SM >$1M'`
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: nansen-alpha-discovery
3
+ description: "What tokens is smart money accumulating before they pump? Token screener with SM filter cross-referenced against netflow."
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - NANSEN_API_KEY
9
+ bins:
10
+ - nansen
11
+ primaryEnv: NANSEN_API_KEY
12
+ install:
13
+ - kind: node
14
+ package: nansen-cli
15
+ bins: [nansen]
16
+ allowed-tools: Bash(nansen:*)
17
+ ---
18
+
19
+ # Alpha Discovery
20
+
21
+ **Answers:** "What tokens is smart money accumulating before they pump?"
22
+
23
+ ```bash
24
+ CHAIN=solana
25
+
26
+ nansen research token screener --chain $CHAIN --timeframe 24h --smart-money --limit 20
27
+ # → token_symbol, price_usd, price_change, volume, buy_volume, market_cap_usd, fdv, liquidity, token_age_days
28
+
29
+ nansen research smart-money netflow --chain $CHAIN --labels "Smart Trader" --limit 10
30
+ # → token_symbol, net_flow_1h/24h/7d/30d_usd, trader_count
31
+
32
+ # Confirm SM flow on a specific token from screener results
33
+ TOKEN=<address_from_screener>
34
+ nansen research token flow-intelligence --token $TOKEN --chain $CHAIN
35
+ # → net_flow_usd per label: smart_trader, whale, exchange, fresh_wallets
36
+ ```
37
+
38
+ Cross-reference screener results with positive netflow to find early accumulation.
39
+
40
+ ## Source
41
+
42
+ - npm: https://www.npmjs.com/package/nansen-cli
43
+ - GitHub: https://github.com/nansen-ai/nansen-cli
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: nansen-batch-wallet
3
+ description: "Which of these addresses are smart money? Batch-profile a list in one call."
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - NANSEN_API_KEY
9
+ bins:
10
+ - nansen
11
+ primaryEnv: NANSEN_API_KEY
12
+ install:
13
+ - kind: node
14
+ package: nansen-cli
15
+ bins: [nansen]
16
+ allowed-tools: Bash(nansen:*)
17
+ ---
18
+ ```bash
19
+ ADDRESSES="0xaddr1,0xaddr2,0xaddr3,..." CHAIN=ethereum
20
+ nansen research profiler batch --addresses "$ADDRESSES" --chain $CHAIN --include labels,balance
21
+ # → .data.{total, completed, results[]: {address, chain, labels[], balance, error}}
22
+ # labels[]: {label, category ("smart_money","fund","social","behavioral","others"), fullname}
23
+ # balance: {data[]: {token_symbol, token_amount, price_usd, value_usd}}
24
+ ```
25
+ Check .error per result — invalid addresses return an error message, not a crash. Skip those.
26
+ Keep addresses where any label.category == "smart_money" or "fund". Omit balance for faster checks.
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: nansen-cross-chain-flow
3
+ description: "Is SM buying this token on one chain but selling on another? Detect capital rotation."
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - NANSEN_API_KEY
9
+ bins:
10
+ - nansen
11
+ primaryEnv: NANSEN_API_KEY
12
+ install:
13
+ - kind: node
14
+ package: nansen-cli
15
+ bins: [nansen]
16
+ allowed-tools: Bash(nansen:*)
17
+ ---
18
+ ```bash
19
+ TOKEN_SYMBOL=<symbol e.g. "AAVE"> CHAINS=(ethereum solana base bnb)
20
+ for chain in "${CHAINS[@]}"; do
21
+ nansen research smart-money netflow --chain $chain --limit 200
22
+ # Filter by token_symbol; → net_flow_1h_usd, net_flow_24h_usd, net_flow_7d_usd, net_flow_30d_usd
23
+ done
24
+ ```
25
+ Absent from results = SM activity below threshold on that chain, not necessarily unsupported. Use --limit 200; --limit 100 silently drops mid-tier tokens.
26
+ ETH+ & SOL− = rotating from SOL→ETH. One chain positive only = chain-specific play.
27
+ 24h/7d divergence across chains is the rotation signal, not 1h.
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: nansen-dca-watch
3
+ description: "What tokens are whales dollar-cost averaging into? Jupiter DCA strategies by smart money and target token fundamentals."
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - NANSEN_API_KEY
9
+ bins:
10
+ - nansen
11
+ primaryEnv: NANSEN_API_KEY
12
+ install:
13
+ - kind: node
14
+ package: nansen-cli
15
+ bins: [nansen]
16
+ allowed-tools: Bash(nansen:*)
17
+ ---
18
+
19
+ # DCA Watch
20
+
21
+ **Answers:** "What tokens are whales dollar-cost averaging into on Solana?"
22
+
23
+ ```bash
24
+ nansen research smart-money dcas --limit 20
25
+ # → trader_address, trader_address_label, input/output_token_symbol, deposit_value_usd, dca_status, dca_created_at
26
+
27
+ # For each top DCA target, check token fundamentals
28
+ TARGET=<output_token_address>
29
+ nansen research token info --token $TARGET --chain solana
30
+ # → name, symbol, price, market_cap, token_details
31
+
32
+ nansen research token flow-intelligence --token $TARGET --chain solana
33
+ # → net_flow_usd per label: smart_trader, whale, exchange, fresh_wallets
34
+ ```
35
+
36
+ To see DCA strategies targeting a specific token: `nansen research token jup-dca --token $TARGET`
37
+
38
+ DCAs show long-term conviction — SM DCA targets with positive smart_trader_net_flow = high-confidence accumulation.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: nansen-defi-exposure
3
+ description: "What DeFi positions does a wallet hold? Protocol-by-protocol breakdown of assets, debts, and rewards across chains."
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - NANSEN_API_KEY
9
+ bins:
10
+ - nansen
11
+ primaryEnv: NANSEN_API_KEY
12
+ install:
13
+ - kind: node
14
+ package: nansen-cli
15
+ bins: [nansen]
16
+ allowed-tools: Bash(nansen:*)
17
+ ---
18
+
19
+ # DeFi Exposure
20
+
21
+ **Answers:** "What DeFi positions does this wallet have across protocols?"
22
+
23
+ ```bash
24
+ ADDR=<address>
25
+
26
+ nansen research portfolio defi --wallet $ADDR
27
+ # → protocol_name, chain, total_value_usd, total_assets_usd, total_debts_usd, total_rewards_usd, tokens
28
+
29
+ nansen research profiler balance --address $ADDR --chain ethereum
30
+ # → token_symbol, token_name, token_amount, value_usd per holding
31
+
32
+ nansen research profiler balance --address $ADDR --chain base
33
+ ```
34
+
35
+ Combine DeFi positions (lending, LPs, staking) with spot balances for a complete picture of on-chain exposure.
36
+
37
+ Note: portfolio defi may return empty for wallets with no tracked DeFi positions.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: nansen-exit-signal
3
+ description: "Is smart money exiting a token I hold? Net flow direction, seller breakdown by label, and recent SM trades."
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - NANSEN_API_KEY
9
+ bins:
10
+ - nansen
11
+ primaryEnv: NANSEN_API_KEY
12
+ install:
13
+ - kind: node
14
+ package: nansen-cli
15
+ bins: [nansen]
16
+ allowed-tools: Bash(nansen:*)
17
+ ---
18
+
19
+ # Exit Signal
20
+
21
+ **Answers:** "Is smart money exiting a token I hold? Should I be worried?"
22
+
23
+ ```bash
24
+ TOKEN=<address> CHAIN=ethereum
25
+
26
+ nansen research token flow-intelligence --token $TOKEN --chain $CHAIN
27
+ # → net_flow_usd per label: smart_trader, whale, exchange, fresh_wallets (negative = selling)
28
+
29
+ nansen research token who-bought-sold --token $TOKEN --chain $CHAIN --limit 20
30
+ # → address, address_label, bought/sold_volume_usd, trade_volume_usd
31
+
32
+ nansen research smart-money netflow --chain $CHAIN --limit 10
33
+ # → token_symbol, net_flow_1h/24h/7d/30d_usd, trader_count
34
+
35
+ nansen research token dex-trades --token $TOKEN --chain $CHAIN --limit 20
36
+ # → block_timestamp, action (BUY/SELL), trader_address_label, estimated_value_usd
37
+ ```
38
+
39
+ Red flag: negative smart_trader_net_flow_usd + Smart Trader labels in who-bought-sold sellers = exit signal.
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: nansen-fund-watch
3
+ description: "What are crypto funds and VCs holding right now? Cross-chain fund portfolios and net accumulation signals."
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - NANSEN_API_KEY
9
+ bins:
10
+ - nansen
11
+ primaryEnv: NANSEN_API_KEY
12
+ install:
13
+ - kind: node
14
+ package: nansen-cli
15
+ bins: [nansen]
16
+ allowed-tools: Bash(nansen:*)
17
+ ---
18
+
19
+ # Fund Watch
20
+
21
+ **Answers:** "What are crypto funds and VCs holding right now?"
22
+
23
+ ```bash
24
+ nansen research smart-money holdings --chain ethereum --labels "Fund" --limit 20
25
+ # → token_symbol, value_usd, holders_count, balance_24h_percent_change, share_of_holdings_percent
26
+
27
+ nansen research smart-money holdings --chain solana --labels "Fund" --limit 20
28
+
29
+ nansen research smart-money netflow --chain ethereum --labels "Fund" --limit 10
30
+ # → token_symbol, net_flow_1h/24h/7d/30d_usd, market_cap_usd, trader_count
31
+
32
+ nansen research smart-money netflow --chain solana --labels "Fund" --limit 10
33
+ ```
34
+
35
+ Cross-reference holdings with netflow to see directional conviction. Positive net_flow_24h = active accumulation.
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: nansen-holder-quality
3
+ description: "Is this token held by quality wallets or retail noise? SM holder ratio, flow breakdown by label, and recent buyer quality."
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - NANSEN_API_KEY
9
+ bins:
10
+ - nansen
11
+ primaryEnv: NANSEN_API_KEY
12
+ install:
13
+ - kind: node
14
+ package: nansen-cli
15
+ bins: [nansen]
16
+ allowed-tools: Bash(nansen:*)
17
+ ---
18
+
19
+ # Holder Quality
20
+
21
+ **Answers:** "Is this token held by quality wallets or retail noise?"
22
+
23
+ ```bash
24
+ TOKEN=<address> CHAIN=ethereum
25
+
26
+ nansen research token holders --token $TOKEN --chain $CHAIN --smart-money --limit 20
27
+ # → address, address_label, value_usd, ownership_percentage, balance_change_24h/7d/30d
28
+
29
+ nansen research token flow-intelligence --token $TOKEN --chain $CHAIN
30
+ # → net_flow_usd and wallet_count per label: smart_trader, whale, exchange, fresh_wallets
31
+
32
+ nansen research token who-bought-sold --token $TOKEN --chain $CHAIN --limit 20
33
+ # → address, address_label, bought/sold_volume_usd, bought/sold_token_volume, trade_volume_usd
34
+ ```
35
+
36
+ Red flag: high fresh_wallets flow + low SM holders. Green flag: Fund/Smart Trader labels in top 20.
37
+
38
+ Note: holders endpoint does not support native/wrapped tokens. Use a specific token contract address.
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: nansen-perp-scan
3
+ description: "What is the state of the Hyperliquid perp market? Top contracts by volume/OI, trader leaderboard, and SM perp activity."
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - NANSEN_API_KEY
9
+ bins:
10
+ - nansen
11
+ primaryEnv: NANSEN_API_KEY
12
+ install:
13
+ - kind: node
14
+ package: nansen-cli
15
+ bins: [nansen]
16
+ allowed-tools: Bash(nansen:*)
17
+ ---
18
+
19
+ # Perp Market Scan
20
+
21
+ **Answers:** "What's the state of the Hyperliquid perp market right now?"
22
+
23
+ ```bash
24
+ nansen research perp screener --sort volume:desc --limit 20
25
+ # → token_symbol, volume, buy/sell_volume, buy_sell_pressure, open_interest, funding, mark_price
26
+
27
+ nansen research perp leaderboard --days 7 --limit 20
28
+ # → trader_address, trader_address_label, total_pnl, roi, account_value
29
+
30
+ nansen research smart-money perp-trades --limit 20
31
+ # → token_symbol, side, action (Open/Close), value_usd, price_usd, trader_address_label
32
+ ```
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: nansen-perp-trader
3
+ description: "Deep dive on a Hyperliquid perp trader. Identity, open positions, recent trades, and overall PnL."
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - NANSEN_API_KEY
9
+ bins:
10
+ - nansen
11
+ primaryEnv: NANSEN_API_KEY
12
+ install:
13
+ - kind: node
14
+ package: nansen-cli
15
+ bins: [nansen]
16
+ allowed-tools: Bash(nansen:*)
17
+ ---
18
+
19
+ # Perp Trader
20
+
21
+ **Answers:** "What is this perp trader doing? What are their positions and track record?"
22
+
23
+ ```bash
24
+ ADDR=<address>
25
+
26
+ nansen research profiler labels --address $ADDR --chain ethereum
27
+ # → label, category (identity, SM labels)
28
+
29
+ nansen research profiler perp-positions --address $ADDR
30
+ # → asset_positions, margin_summary_account_value_usd, margin_summary_total_margin_used_usd
31
+
32
+ nansen research profiler perp-trades --address $ADDR --days 7 --limit 20
33
+ # → timestamp, token_symbol, side, action (Open/Close/Reduce), price, size, value_usd, closed_pnl, fee_usd
34
+
35
+ nansen research perp leaderboard --days 7 --limit 50
36
+ # → trader_address, total_pnl, roi, account_value (check if ADDR appears)
37
+ ```
38
+
39
+ Cross-reference perp-trades with perp-positions to see if the trader is scaling in/out. Leaderboard shows relative standing.
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: nansen-pm-deep-dive
3
+ description: "Deep dive on a Polymarket market — OHLCV, orderbook, top holders, positions, trades, and PnL leaderboard. Use when analysing a specific prediction market."
4
+ metadata:
5
+ openclaw:
6
+ requires:
7
+ env:
8
+ - NANSEN_API_KEY
9
+ bins:
10
+ - nansen
11
+ primaryEnv: NANSEN_API_KEY
12
+ install:
13
+ - kind: node
14
+ package: nansen-cli
15
+ bins: [nansen]
16
+ allowed-tools: Bash(nansen:*)
17
+ ---
18
+
19
+ # Prediction Market Deep Dive
20
+
21
+ **Answers:** "What's happening in this specific market? Who holds it, who's trading it?"
22
+
23
+ Use `market_id` from the screener (`nansen-prediction-market` skill).
24
+
25
+ ```bash
26
+ MID=<market_id>
27
+
28
+ nansen research pm ohlcv --market-id $MID --sort period_start:desc --limit 50
29
+ # → period_start, open, high, low, close, volume
30
+
31
+ nansen research pm orderbook --market-id $MID
32
+ # → bids[], asks[] with price and size
33
+
34
+ nansen research pm top-holders --market-id $MID --limit 20
35
+ # → address, side, position_size, avg_entry_price, current_price, unrealized_pnl_usd
36
+
37
+ nansen research pm position-detail --market-id $MID --limit 20
38
+ # → address, side, size, avg_entry_price, current_price, pnl
39
+
40
+ nansen research pm trades-by-market --market-id $MID --limit 20
41
+ # → timestamp, buyer, seller, taker_action, side, size, price, usdc_value
42
+
43
+ nansen research pm pnl-by-market --market-id $MID --limit 20
44
+ # → address, side_held, net_buy_cost_usd, unrealized_value_usd, total_pnl_usd
45
+ ```
46
+
47
+ Notes:
48
+ - `--market-id` is a numeric ID from the screener, not a slug.
49
+ - Works with any market ID regardless of status (active or closed/resolved).
50
+ - All addresses are Polygon (EVM).