nansen-cli 1.17.0 → 1.19.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 +41 -0
- package/package.json +5 -3
- package/skills/nansen-dca-tracker/SKILL.md +38 -0
- package/skills/nansen-defi-positions/SKILL.md +37 -0
- package/skills/nansen-exit-signals/SKILL.md +39 -0
- package/skills/nansen-fund-tracker/SKILL.md +35 -0
- package/skills/nansen-general-search/SKILL.md +34 -0
- package/skills/nansen-holder-analysis/SKILL.md +38 -0
- package/skills/nansen-perp-screener/SKILL.md +32 -0
- package/skills/nansen-perp-trader-profile/SKILL.md +39 -0
- package/skills/nansen-polymarket-deep-dive/SKILL.md +50 -0
- package/skills/nansen-polymarket-insider-scan/SKILL.md +62 -0
- package/skills/nansen-polymarket-trader-profile/SKILL.md +43 -0
- package/skills/nansen-portfolio-tracker/SKILL.md +36 -0
- package/skills/nansen-prediction-markets/SKILL.md +47 -0
- package/skills/nansen-sm-cross-chain-flows/SKILL.md +27 -0
- package/skills/nansen-smart-alerts/SKILL.md +137 -0
- package/skills/nansen-smart-money-alpha/SKILL.md +43 -0
- package/skills/nansen-smart-money-tracker/SKILL.md +71 -0
- package/skills/nansen-smart-money-trend/SKILL.md +30 -0
- package/skills/nansen-token-research/SKILL.md +90 -0
- package/skills/nansen-token-screener/SKILL.md +54 -0
- package/skills/nansen-token-transfer-analysis/SKILL.md +40 -0
- package/skills/nansen-trading/SKILL.md +100 -0
- package/skills/nansen-wallet-batch/SKILL.md +26 -0
- package/skills/nansen-wallet-clustering/REFERENCE.md +43 -0
- package/skills/nansen-wallet-clustering/SKILL.md +46 -0
- package/skills/nansen-wallet-deep-dive/SKILL.md +45 -0
- package/skills/nansen-wallet-keychain-migration/SKILL.md +183 -0
- package/skills/nansen-wallet-manager/SKILL.md +140 -0
- package/skills/nansen-wallet-profiler/SKILL.md +98 -0
- package/skills/nansen-web-fetcher/SKILL.md +50 -0
- package/skills/nansen-web-searcher/SKILL.md +39 -0
- package/src/api.js +76 -3
- package/src/cli.js +176 -14
- package/src/commands/alerts.js +717 -0
- 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,46 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.19.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#306](https://github.com/nansen-ai/nansen-cli/pull/306) [`f685eb8`](https://github.com/nansen-ai/nansen-cli/commit/f685eb8b87d2915a7a94e8c1a3d92f84e4802e4a) Thanks [@0xlaveen](https://github.com/0xlaveen)! - Rename 30 skills for clarity and clawhub slug uniqueness. Abbreviations expanded (`pm` → `polymarket`, `sm` prefix added where relevant), ambiguous names made specific (`nansen-wallet` → `nansen-wallet-manager`, `nansen-profiler` → `nansen-wallet-profiler`, `nansen-search` → `nansen-general-search`, `nansen-trade` → `nansen-trading`, etc.).
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- [#308](https://github.com/nansen-ai/nansen-cli/pull/308) [`569d7d4`](https://github.com/nansen-ai/nansen-cli/commit/569d7d43e428732d3c10b4e57368cb12ef0086c3) Thanks [@kome12](https://github.com/kome12)! - fix: include src subdirectories in npm package
|
|
12
|
+
|
|
13
|
+
The `files` field in package.json used `src/*.js` which only matched files directly in `src/`, causing `src/commands/` to be missing from the 1.18.0 publish. Changed to `src/**/*.js` to include all subdirectories recursively, and added `!src/__tests__/**` to exclude test files from the package.
|
|
14
|
+
|
|
15
|
+
## 1.18.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- [#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).
|
|
20
|
+
|
|
21
|
+
Supports three alert types: `sm-token-flows`, `common-token-transfer`, and `smart-contract-call`.
|
|
22
|
+
Named flags (`--inflow-1h-min`, `--chains`, `--telegram`, etc.) let you build alerts without raw JSON;
|
|
23
|
+
a `--data` escape hatch is available for full config overrides.
|
|
24
|
+
|
|
25
|
+
Also adds a `nansen-alerts` skill for agent integration.
|
|
26
|
+
|
|
27
|
+
- [#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)
|
|
28
|
+
|
|
29
|
+
- `nansen web search <query> [query...]` — search the web for one or more queries in parallel via `/api/v1/search/web-search`
|
|
30
|
+
- `nansen web fetch <url> [url...] --question <q>` — fetch and analyze URL content with AI via `/api/v1/search/web-fetch`
|
|
31
|
+
|
|
32
|
+
### Patch Changes
|
|
33
|
+
|
|
34
|
+
- [#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
|
|
35
|
+
|
|
36
|
+
- [#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`).
|
|
37
|
+
|
|
38
|
+
Filters were sent as query params but silently ignored by the API. Now applied client-side after fetching all alerts.
|
|
39
|
+
|
|
40
|
+
- [#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
|
|
41
|
+
|
|
42
|
+
- [#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
|
|
43
|
+
|
|
3
44
|
## 1.17.0
|
|
4
45
|
|
|
5
46
|
### Minor Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nansen-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.19.0",
|
|
4
4
|
"description": "Command-line interface for Nansen API - designed for AI agents",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -8,8 +8,10 @@
|
|
|
8
8
|
"nansen": "./src/index.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
|
-
"src
|
|
12
|
-
"src
|
|
11
|
+
"src/**/*.js",
|
|
12
|
+
"src/**/*.json",
|
|
13
|
+
"!src/__tests__/**",
|
|
14
|
+
"skills/**",
|
|
13
15
|
"CHANGELOG.md"
|
|
14
16
|
],
|
|
15
17
|
"scripts": {
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nansen-dca-tracker
|
|
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-positions
|
|
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-signals
|
|
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-tracker
|
|
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,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nansen-general-search
|
|
3
|
+
description: Search for tokens or entities by name. Use when you have a token name and need the full address, or want to find an entity.
|
|
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
|
+
# Search
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
nansen research search "jupiter" --type token
|
|
23
|
+
nansen research search "Vitalik" --type entity --limit 5
|
|
24
|
+
nansen research search "bonk" --chain solana --fields address,name,symbol,chain
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
| Flag | Purpose |
|
|
28
|
+
|------|---------|
|
|
29
|
+
| `--type` | `token` or `entity` |
|
|
30
|
+
| `--chain` | Filter by chain |
|
|
31
|
+
| `--limit` | Number of results (default 25, max 50) |
|
|
32
|
+
| `--fields` | Select specific output fields |
|
|
33
|
+
|
|
34
|
+
Case-insensitive. Does NOT match by address — use `profiler labels` for address lookup.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nansen-holder-analysis
|
|
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-screener
|
|
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-profile
|
|
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-polymarket-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-polymarket-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.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nansen-polymarket-trader-profile
|
|
3
|
+
description: "What is a Polymarket trader betting on? Trades by address, PnL breakdown, and market context. Use when analysing a specific Polymarket wallet."
|
|
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
|
+
# Polymarket Wallet Activity
|
|
20
|
+
|
|
21
|
+
**Answers:** "What is this Polymarket trader betting on? Are they profitable?"
|
|
22
|
+
|
|
23
|
+
**Finding an active trader address:** Source from `trades-by-market` (guarantees trade history) rather than `top-holders` (position holders may have no recorded trades):
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Step 1: find active traders from a market
|
|
27
|
+
nansen research pm trades-by-market --market-id <market_id> --limit 5
|
|
28
|
+
# → seller/buyer addresses with confirmed trade history — use one as ADDR below
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
ADDR=<polymarket_address>
|
|
33
|
+
|
|
34
|
+
nansen research pm trades-by-address --address $ADDR --limit 20
|
|
35
|
+
# → timestamp, market_question, event_title, taker_action, side, size, price, usdc_value
|
|
36
|
+
|
|
37
|
+
nansen research pm pnl-by-address --address $ADDR --limit 20
|
|
38
|
+
# → question, event_title, side_held, net_buy_cost_usd, unrealized_value_usd, total_pnl_usd, market_resolved
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Note: addresses sourced from `top-holders` may return empty trade history — use `trades-by-market` to find addresses with confirmed activity.
|
|
42
|
+
|
|
43
|
+
Look at PnL across resolved vs unresolved markets to gauge trader skill. Large positions in trending categories signal conviction.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nansen-portfolio-tracker
|
|
3
|
+
description: "How has a wallet's portfolio changed over time? Historical balances, current snapshot, and per-token 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
|
+
# Portfolio History
|
|
20
|
+
|
|
21
|
+
**Answers:** "How has this wallet's portfolio evolved over the past month?"
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
ADDR=<address> CHAIN=ethereum
|
|
25
|
+
|
|
26
|
+
nansen research profiler historical-balances --address $ADDR --chain $CHAIN --days 30 --limit 20
|
|
27
|
+
# → block_timestamp, token_symbol, token_amount, value_usd, chain
|
|
28
|
+
|
|
29
|
+
nansen research profiler balance --address $ADDR --chain $CHAIN
|
|
30
|
+
# → token_symbol, token_name, token_amount, price_usd, value_usd
|
|
31
|
+
|
|
32
|
+
nansen research profiler pnl --address $ADDR --chain $CHAIN --days 30 --limit 20
|
|
33
|
+
# → token_symbol, pnl_usd_realised, roi_percent_realised, bought_usd, sold_usd, holding_usd, nof_buys, nof_sells
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Compare historical-balances over time against current balance to see what was added/removed. PnL shows trade performance.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nansen-prediction-markets
|
|
3
|
+
description: "Polymarket screeners — discover trending events, top markets by volume, and search for specific markets. Use when browsing what's happening on prediction markets."
|
|
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 Screeners
|
|
20
|
+
|
|
21
|
+
All commands: `nansen research prediction-market <sub> [options]` (alias: `nansen research pm <sub>`)
|
|
22
|
+
|
|
23
|
+
No `--chain` flag needed — Polymarket runs on Polygon.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Top events (groups of related markets)
|
|
27
|
+
nansen research pm event-screener --sort-by volume_24hr --limit 20
|
|
28
|
+
# → event_title, market_count, total_volume, total_volume_24hr, total_liquidity, total_open_interest, tags
|
|
29
|
+
|
|
30
|
+
# Top markets by 24h volume
|
|
31
|
+
nansen research pm market-screener --sort-by volume_24hr --limit 20
|
|
32
|
+
# → market_id, question, best_bid, best_ask, volume_24hr, liquidity, open_interest, unique_traders_24h
|
|
33
|
+
|
|
34
|
+
# Search for specific markets
|
|
35
|
+
nansen research pm market-screener --query "bitcoin" --limit 10
|
|
36
|
+
|
|
37
|
+
# Find resolved/closed markets
|
|
38
|
+
nansen research pm market-screener --status closed --limit 10
|
|
39
|
+
|
|
40
|
+
# Browse categories
|
|
41
|
+
nansen research pm categories --pretty
|
|
42
|
+
# → category, active_markets, total_volume_24hr, total_open_interest
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Sort options: `volume_24hr`, `volume`, `volume_1wk`, `volume_1mo`, `liquidity`, `open_interest`, `unique_traders_24h`, `age_hours`
|
|
46
|
+
|
|
47
|
+
Screeners return active/open markets by default. Use `--status closed` for resolved markets.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nansen-sm-cross-chain-flows
|
|
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.
|