nansen-cli 1.17.0 → 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.
- package/CHANGELOG.md +29 -0
- package/package.json +2 -1
- package/skills/nansen-alerts/SKILL.md +137 -0
- package/skills/nansen-alpha-discovery/SKILL.md +43 -0
- package/skills/nansen-batch-wallet/SKILL.md +26 -0
- package/skills/nansen-cross-chain-flow/SKILL.md +27 -0
- package/skills/nansen-dca-watch/SKILL.md +38 -0
- package/skills/nansen-defi-exposure/SKILL.md +37 -0
- package/skills/nansen-exit-signal/SKILL.md +39 -0
- package/skills/nansen-fund-watch/SKILL.md +35 -0
- package/skills/nansen-holder-quality/SKILL.md +38 -0
- package/skills/nansen-perp-scan/SKILL.md +32 -0
- package/skills/nansen-perp-trader/SKILL.md +39 -0
- package/skills/nansen-pm-deep-dive/SKILL.md +50 -0
- package/skills/nansen-pm-insider-scan/SKILL.md +62 -0
- package/skills/nansen-polymarket-trader/SKILL.md +43 -0
- package/skills/nansen-portfolio-history/SKILL.md +36 -0
- package/skills/nansen-prediction-market/SKILL.md +47 -0
- package/skills/nansen-profiler/SKILL.md +98 -0
- package/skills/nansen-search/SKILL.md +34 -0
- package/skills/nansen-sm-trend/SKILL.md +30 -0
- package/skills/nansen-smart-money/SKILL.md +71 -0
- package/skills/nansen-token/SKILL.md +90 -0
- package/skills/nansen-token-discovery/SKILL.md +54 -0
- package/skills/nansen-token-forensics/SKILL.md +40 -0
- package/skills/nansen-trade/SKILL.md +100 -0
- package/skills/nansen-wallet/SKILL.md +140 -0
- package/skills/nansen-wallet-analysis/SKILL.md +45 -0
- package/skills/nansen-wallet-attribution/REFERENCE.md +43 -0
- package/skills/nansen-wallet-attribution/SKILL.md +46 -0
- package/skills/nansen-wallet-migration/SKILL.md +183 -0
- package/skills/nansen-web-fetch/SKILL.md +50 -0
- package/skills/nansen-web-search/SKILL.md +39 -0
- package/src/api.js +76 -3
- package/src/cli.js +176 -14
- package/src/schema.json +164 -1
- package/src/telemetry.js +237 -0
- package/src/update-check.js +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
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
|
+
|
|
3
32
|
## 1.17.0
|
|
4
33
|
|
|
5
34
|
### Minor Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nansen-cli",
|
|
3
|
-
"version": "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).
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nansen-pm-insider-scan
|
|
3
|
+
description: "Scan a resolved Polymarket market for wallets exhibiting suspicious trading patterns: fresh funding, single-market focus, extreme ROI, late entry at high prices."
|
|
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
|
+
# PM Suspicious Wallet Scanner
|
|
20
|
+
|
|
21
|
+
**Answers:** "Are there wallets with suspicious trading patterns in this Polymarket market?"
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# 1. Find the resolved market
|
|
25
|
+
nansen research prediction-market market-screener --query "<market name>" --status closed --limit 5
|
|
26
|
+
# → market_id, question, volume, last_trade_price
|
|
27
|
+
|
|
28
|
+
# 2. Get top winners (positive PnL) — paginate if needed, keep per_page <= 10
|
|
29
|
+
MID=<market_id>
|
|
30
|
+
nansen research prediction-market pnl-by-market --market-id $MID --limit 10
|
|
31
|
+
# → address (proxy), owner_address (wallet), side_held, net_buy_cost_usd, total_pnl_usd
|
|
32
|
+
|
|
33
|
+
# 3. For each top winner, run these three calls (use proxy address for PM, owner for profiler):
|
|
34
|
+
PROXY=<address_from_pnl>
|
|
35
|
+
nansen research prediction-market trades-by-address --address $PROXY --limit 100
|
|
36
|
+
# → market_id, market_question, side, price, size, usdc_value, taker_action, timestamp
|
|
37
|
+
|
|
38
|
+
OWNER=<owner_address_from_pnl>
|
|
39
|
+
nansen research profiler historical-balances --address $OWNER --chain polygon --days 365 --sort block_timestamp:asc --limit 100
|
|
40
|
+
# → block_timestamp, value_usd, token_symbol — first non-zero value_usd = wallet funding date
|
|
41
|
+
|
|
42
|
+
nansen research profiler labels --address $OWNER --chain polygon
|
|
43
|
+
# → label, category
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
For each winner, compute ROI = total_pnl_usd / net_buy_cost_usd * 100 (skip ROI flags if net_buy_cost_usd <= 0), then score (0–13). Within each tier group, apply only the highest matching flag:
|
|
47
|
+
|
|
48
|
+
| Flag | Pts | Trigger |
|
|
49
|
+
|---|---|---|
|
|
50
|
+
| NEW_WALLET | 3 | First funded within 7 days of now |
|
|
51
|
+
| YOUNG_WALLET | 1 | First funded 8–28 days ago (skip if NEW_WALLET fires) |
|
|
52
|
+
| SINGLE_MARKET | 3 | trades-by-address shows only 1 distinct market_id |
|
|
53
|
+
| FEW_MARKETS | 1 | 2–3 distinct market_ids (skip if SINGLE_MARKET fires) |
|
|
54
|
+
| EXTREME_ROI | 3 | ROI >= 500% |
|
|
55
|
+
| HIGH_ROI | 2 | ROI 200–499% (skip if EXTREME_ROI fires) |
|
|
56
|
+
| LATE_ENTRY | 2 | Any trade on this market at price >= 0.80 |
|
|
57
|
+
| LARGE_POSITION | 2 | net_buy_cost_usd >= $10k |
|
|
58
|
+
| KNOWN_ENTITY | -2 | Has Nansen labels |
|
|
59
|
+
|
|
60
|
+
Flagged at score >= 3. High risk at >= 7. High-confidence suspicious pattern: NEW_WALLET + SINGLE_MARKET + EXTREME_ROI (score 9+).
|
|
61
|
+
|
|
62
|
+
If owner_address is invalid (e.g. "0x"), use the proxy address for profiler calls too. If historical-balances returns no records with value_usd > 0, the wallet may predate the 365-day window — treat wallet age as unknown and skip NEW_WALLET / YOUNG_WALLET flags. Pause ~1.5s between wallets to avoid rate limits. Skip wallets that error and continue scanning.
|