@0xprotovox/deficlaw 0.4.1 → 0.6.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/README.md +222 -194
- package/dist/analysis/formatOutput.js +3 -1
- package/dist/analysis/formatOutput.js.map +1 -1
- package/dist/analysis/summaryGenerator.js +14 -5
- package/dist/analysis/summaryGenerator.js.map +1 -1
- package/dist/server.js +51 -1
- package/dist/server.js.map +1 -1
- package/dist/sources/jupiter.d.ts +37 -0
- package/dist/sources/jupiter.js +82 -0
- package/dist/sources/jupiter.js.map +1 -0
- package/dist/test.js +1 -1
- package/dist/tools/analyzeToken.js +3 -1
- package/dist/tools/analyzeToken.js.map +1 -1
- package/dist/tools/compareTokens.d.ts +49 -0
- package/dist/tools/compareTokens.js +160 -0
- package/dist/tools/compareTokens.js.map +1 -0
- package/dist/tools/estimateSlippage.d.ts +22 -0
- package/dist/tools/estimateSlippage.js +70 -0
- package/dist/tools/estimateSlippage.js.map +1 -0
- package/dist/tools/getTokenSecurity.d.ts +20 -0
- package/dist/tools/getTokenSecurity.js +73 -0
- package/dist/tools/getTokenSecurity.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,291 +1,286 @@
|
|
|
1
|
+
[](https://www.npmjs.com/package/@0xprotovox/deficlaw)
|
|
2
|
+
[](https://opensource.org/licenses/MIT)
|
|
3
|
+
[](https://nodejs.org)
|
|
4
|
+
[](https://modelcontextprotocol.io)
|
|
5
|
+
|
|
1
6
|
# deficlaw
|
|
2
7
|
|
|
3
8
|
**The first open-source DeFi MCP server for Claude Code.**
|
|
4
9
|
|
|
5
|
-
Analyze any
|
|
10
|
+
Analyze any token in seconds. Holder intelligence, risk scoring, smart money tracking, KOL detection, slippage estimation, contract security. Zero API keys required.
|
|
6
11
|
|
|
7
12
|
```
|
|
8
|
-
> "analyze token
|
|
13
|
+
> "analyze Jupiter token"
|
|
9
14
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Only 18.0% of holders are in profit, most are underwater with avg loss of $844 per wallet.
|
|
14
|
-
Buy pressure is strong at 3.3:1 ratio (1093 buys vs 395 sells), accumulation phase.
|
|
15
|
+
JUP is a 2.2y old Meteora token with $1.2M liquidity and $525.1M market cap.
|
|
16
|
+
Top 5 wallets control 61.5% of supply, very concentrated.
|
|
17
|
+
30 diamond hands among holders, decent conviction.
|
|
15
18
|
Contract looks safe: mint and freeze authorities revoked.
|
|
16
|
-
|
|
19
|
+
10 KOLs tracked: 5 holding, 5 selling.
|
|
20
|
+
|
|
21
|
+
Risk: 18/100 [LOW]
|
|
22
|
+
VERDICT: NEUTRAL — Mixed signals: 2 bull vs 2 bear.
|
|
23
|
+
Sources: dexscreener + gmgn + solana-rpc | 1.1s
|
|
17
24
|
```
|
|
18
25
|
|
|
19
26
|
## Why deficlaw?
|
|
20
27
|
|
|
21
28
|
Claude Code can write code, fix bugs, deploy apps. But ask it "what's the price of BONK?" and it says *"I don't have real-time data."*
|
|
22
29
|
|
|
23
|
-
**deficlaw fixes that.**
|
|
30
|
+
**deficlaw fixes that.** 9 tools, 3 data sources, zero config.
|
|
24
31
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
| Feature | Details |
|
|
33
|
+
|---------|---------|
|
|
34
|
+
| **Token Analysis** | Holder intelligence, risk scoring, KOL tracking, actionable verdicts |
|
|
35
|
+
| **Real-time Prices** | Sub-second lookups across Solana, Ethereum, Base, BSC, Arbitrum |
|
|
36
|
+
| **Trending Tokens** | Volume, liquidity, and boost data from DexScreener |
|
|
37
|
+
| **New Launches** | Recently created tokens with age, mcap, liquidity |
|
|
38
|
+
| **Top Traders** | Who made and lost money on any token with PnL breakdown |
|
|
39
|
+
| **Token Search** | Find any token by name or symbol across all chains |
|
|
40
|
+
| **Slippage Estimation** | Jupiter-based price impact for $50-$1000 buys |
|
|
41
|
+
| **Token Comparison** | Side-by-side analysis of two tokens |
|
|
42
|
+
| **Contract Security** | Mint/freeze authority, supply checks on Solana |
|
|
35
43
|
|
|
36
44
|
## Install
|
|
37
45
|
|
|
38
|
-
### Option A: npm (recommended)
|
|
39
|
-
|
|
40
46
|
```bash
|
|
41
47
|
npm install -g @0xprotovox/deficlaw
|
|
42
48
|
claude mcp add defi -- deficlaw
|
|
43
49
|
```
|
|
44
50
|
|
|
45
|
-
|
|
51
|
+
That's it. No API keys, no config files, no accounts needed.
|
|
52
|
+
|
|
53
|
+
<details>
|
|
54
|
+
<summary>Install from source</summary>
|
|
46
55
|
|
|
47
56
|
```bash
|
|
48
57
|
git clone https://github.com/0xprotovox/deficlaw.git
|
|
49
|
-
cd deficlaw
|
|
50
|
-
npm install && npm run build
|
|
58
|
+
cd deficlaw && npm install && npm run build
|
|
51
59
|
claude mcp add defi -- node /path/to/deficlaw/dist/index.js
|
|
52
60
|
```
|
|
61
|
+
</details>
|
|
53
62
|
|
|
54
|
-
|
|
63
|
+
## Quick Start
|
|
55
64
|
|
|
56
|
-
|
|
65
|
+
Once installed, just type naturally in Claude Code:
|
|
57
66
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
### Check a token price (fastest, ~300ms)
|
|
67
|
+
### Prices (fastest, ~50ms cached / ~300ms first call)
|
|
61
68
|
```
|
|
62
69
|
> what's the price of BONK?
|
|
63
70
|
> price of JUP
|
|
64
71
|
> how much is SOL right now?
|
|
65
72
|
```
|
|
66
73
|
|
|
67
|
-
###
|
|
68
|
-
```
|
|
69
|
-
> quick analyze So11111...
|
|
70
|
-
> give me a quick look at this token: 3oQw...pump
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### Full deep analysis (~1.5s, with holders + risk + verdict)
|
|
74
|
+
### Full Analysis (~1.1s with holders + risk + verdict)
|
|
74
75
|
```
|
|
75
|
-
> analyze token
|
|
76
|
-
> deep analyze
|
|
76
|
+
> analyze token JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN
|
|
77
|
+
> deep analyze BONK
|
|
77
78
|
> is this token safe? EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
|
|
78
79
|
```
|
|
79
80
|
|
|
80
|
-
###
|
|
81
|
+
### Quick Scan (~350ms, price + risk only, no holders)
|
|
81
82
|
```
|
|
82
|
-
>
|
|
83
|
-
> give me a
|
|
83
|
+
> quick analyze So11111...
|
|
84
|
+
> give me a quick look at this token
|
|
84
85
|
```
|
|
85
86
|
|
|
86
|
-
### Search
|
|
87
|
+
### Search, Trending, New Launches
|
|
87
88
|
```
|
|
88
89
|
> search for BONK
|
|
89
|
-
> find tokens named "dog"
|
|
90
|
-
> search Jupiter token
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Trending tokens
|
|
94
|
-
```
|
|
95
90
|
> what's trending on solana?
|
|
96
|
-
> show
|
|
97
|
-
> top tokens on base right now
|
|
91
|
+
> show new launches on solana in the last 30 minutes
|
|
98
92
|
```
|
|
99
93
|
|
|
100
|
-
###
|
|
94
|
+
### Top Traders & Comparison
|
|
101
95
|
```
|
|
102
|
-
>
|
|
103
|
-
>
|
|
96
|
+
> who profited on this token?
|
|
97
|
+
> compare JUP vs BONK
|
|
104
98
|
```
|
|
105
99
|
|
|
106
|
-
###
|
|
100
|
+
### Slippage & Security
|
|
107
101
|
```
|
|
108
|
-
>
|
|
109
|
-
>
|
|
110
|
-
> who lost money on BONK?
|
|
102
|
+
> estimate slippage for buying this token
|
|
103
|
+
> is this token contract safe?
|
|
111
104
|
```
|
|
112
105
|
|
|
113
|
-
|
|
114
|
-
- Use **quick mode** for fast scans when you just need price + risk
|
|
115
|
-
- Use **compact mode** when you want holder data but don't need the full 20-holder table
|
|
116
|
-
- **Paste any Solana token address** and ask "is this safe?" for instant security + risk check
|
|
117
|
-
- Chain commands: "analyze this token and tell me if I should buy it"
|
|
118
|
-
- Works with **any chain** for prices: solana, ethereum, base, bsc, arbitrum
|
|
119
|
-
|
|
120
|
-
## Tools
|
|
106
|
+
## Tools Reference
|
|
121
107
|
|
|
122
108
|
### `analyze_token`
|
|
123
109
|
|
|
124
110
|
Full token analysis with holder intelligence, risk scoring, and human-readable summary.
|
|
125
111
|
|
|
126
|
-
**Input:**
|
|
127
112
|
| Parameter | Type | Default | Description |
|
|
128
113
|
|-----------|------|---------|-------------|
|
|
129
|
-
| `address` | string | required | Token contract address |
|
|
114
|
+
| `address` | string | *required* | Token contract address |
|
|
130
115
|
| `chain` | string | `"solana"` | Blockchain (solana, ethereum, bsc, base, arbitrum) |
|
|
131
116
|
| `include_holders` | boolean | `true` | Include GMGN holder analysis |
|
|
117
|
+
| `quick` | boolean | `false` | Quick mode: skip holders, price/market/risk only (<1s) |
|
|
118
|
+
| `compact` | boolean | `false` | Compact response: summary, price, risk, top 5 holders only |
|
|
132
119
|
|
|
133
|
-
**
|
|
134
|
-
- Token info (name, symbol, age, socials)
|
|
135
|
-
- Price with 5m/1h/6h/24h changes
|
|
136
|
-
- Market data (mcap, fdv, volume, liquidity, vol/liq ratio)
|
|
137
|
-
- Contract security (mint authority, freeze authority, supply)
|
|
138
|
-
- Risk score (0-100) with detailed flags
|
|
139
|
-
- Holder concentration (top 5/10/20)
|
|
140
|
-
- Holder categories (diamond hands, snipers, KOLs, fresh wallets, insiders)
|
|
141
|
-
- Buy/sell pressure ratio
|
|
142
|
-
- Sentiment (profitable vs underwater holders, avg PnL)
|
|
143
|
-
- Dev wallet detection and status
|
|
144
|
-
- Top 20 holders table with PnL and tags
|
|
145
|
-
- KOL list with Twitter handles
|
|
146
|
-
- Human-readable summary with actionable insights
|
|
120
|
+
**Returns:** Token info, price (5m/1h/6h/24h), market data (mcap, fdv, volume, liquidity), contract security, risk score (0-100), holder concentration, holder categories (diamond hands, snipers, KOLs, fresh wallets, insiders, smart money), buy/sell pressure, dev wallet status, top 20 holders with PnL, KOL list, socials, actionable verdict (BUY/SELL/NEUTRAL/AVOID).
|
|
147
121
|
|
|
148
|
-
### `
|
|
122
|
+
### `get_price`
|
|
149
123
|
|
|
150
|
-
|
|
124
|
+
Sub-second price lookup. Accepts both addresses and name/symbol searches.
|
|
151
125
|
|
|
152
|
-
|
|
153
|
-
|
|
126
|
+
| Parameter | Type | Default | Description |
|
|
127
|
+
|-----------|------|---------|-------------|
|
|
128
|
+
| `token` | string | *required* | Token address or search query |
|
|
129
|
+
| `chain` | string | `"solana"` | Blockchain |
|
|
154
130
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
```
|
|
131
|
+
### `search_token`
|
|
132
|
+
|
|
133
|
+
Search tokens by name or symbol across all chains.
|
|
159
134
|
|
|
160
|
-
**Input:**
|
|
161
135
|
| Parameter | Type | Default | Description |
|
|
162
136
|
|-----------|------|---------|-------------|
|
|
163
|
-
| `query` | string | required | Token name or symbol |
|
|
137
|
+
| `query` | string | *required* | Token name or symbol (e.g. "BONK", "Jupiter") |
|
|
164
138
|
| `chain` | string | all | Filter by chain |
|
|
165
139
|
| `limit` | number | `10` | Results to return (1-20) |
|
|
166
140
|
|
|
167
|
-
### `
|
|
141
|
+
### `get_trending`
|
|
168
142
|
|
|
169
|
-
|
|
143
|
+
Trending and boosted tokens with price enrichment.
|
|
170
144
|
|
|
171
|
-
|
|
172
|
-
|
|
145
|
+
| Parameter | Type | Default | Description |
|
|
146
|
+
|-----------|------|---------|-------------|
|
|
147
|
+
| `chain` | string | `"solana"` | Blockchain |
|
|
148
|
+
| `limit` | number | `20` | Number of tokens (1-50) |
|
|
173
149
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
150
|
+
### `get_new_launches`
|
|
151
|
+
|
|
152
|
+
Recently created tokens sorted by creation time.
|
|
177
153
|
|
|
178
|
-
**Input:**
|
|
179
154
|
| Parameter | Type | Default | Description |
|
|
180
155
|
|-----------|------|---------|-------------|
|
|
181
156
|
| `chain` | string | `"solana"` | Blockchain |
|
|
182
157
|
| `max_age_minutes` | number | `60` | Max token age in minutes (5-1440) |
|
|
183
158
|
| `limit` | number | `20` | Tokens to return (1-50) |
|
|
184
159
|
|
|
185
|
-
### `get_price`
|
|
186
|
-
|
|
187
|
-
Quick price lookup. Sub-second response. Supports both token addresses and name/symbol search.
|
|
188
|
-
|
|
189
|
-
```
|
|
190
|
-
> "price of So11111112222..."
|
|
191
|
-
|
|
192
|
-
BONK -- $0.000024 (+5.2% 24h)
|
|
193
|
-
Volume: $142M | Liquidity: $12M | MCap: $1.8B
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
### `get_trending`
|
|
197
|
-
|
|
198
|
-
Trending and boosted tokens on any chain.
|
|
199
|
-
|
|
200
|
-
```
|
|
201
|
-
> "trending tokens on solana"
|
|
202
|
-
|
|
203
|
-
1. BONK -- $0.000024 (+12%) -- $142M volume
|
|
204
|
-
2. WIF -- $0.89 (-2.1%) -- $89M volume
|
|
205
|
-
3. JUP -- $0.94 (+3.5%) -- $45M volume
|
|
206
|
-
...
|
|
207
|
-
```
|
|
208
|
-
|
|
209
160
|
### `get_top_traders`
|
|
210
161
|
|
|
211
|
-
Who made and lost money on a token.
|
|
162
|
+
Who made and lost money on a token. Shows winners and losers with PnL, tags, and Twitter handles.
|
|
212
163
|
|
|
213
|
-
|
|
214
|
-
|
|
164
|
+
| Parameter | Type | Default | Description |
|
|
165
|
+
|-----------|------|---------|-------------|
|
|
166
|
+
| `address` | string | *required* | Token contract address |
|
|
167
|
+
| `limit` | number | `10` | Number of top winners/losers (1-50) |
|
|
215
168
|
|
|
216
|
-
|
|
217
|
-
1. CR5N... -- +$680 (+124%) still holding
|
|
218
|
-
2. EsRB... -- +$166 (+16%) diamond hands
|
|
169
|
+
### `estimate_slippage`
|
|
219
170
|
|
|
220
|
-
|
|
221
|
-
1. BgeeV... -- -$7,548 (-65%) diamond hands (!)
|
|
222
|
-
2. 5vqid... -- -$5,420 (-50%) gmgn user
|
|
223
|
-
```
|
|
171
|
+
Jupiter-based price impact estimation for $50, $100, $500, $1000 buys. Solana only.
|
|
224
172
|
|
|
225
|
-
|
|
173
|
+
| Parameter | Type | Default | Description |
|
|
174
|
+
|-----------|------|---------|-------------|
|
|
175
|
+
| `address` | string | *required* | Solana token mint address |
|
|
226
176
|
|
|
227
|
-
|
|
177
|
+
### `compare_tokens`
|
|
228
178
|
|
|
229
|
-
|
|
230
|
-
|--------|------|-------|
|
|
231
|
-
| **DexScreener** | Prices, volume, liquidity, pairs, trending | <0.5s |
|
|
232
|
-
| **GMGN** | Holders, tags, KOLs, PnL, dev wallet, snipers | ~1s |
|
|
233
|
-
| **Solana RPC** | Mint authority, freeze authority, supply | <0.5s |
|
|
179
|
+
Side-by-side comparison of two tokens: price, mcap, volume, liquidity, age, holders.
|
|
234
180
|
|
|
235
|
-
|
|
181
|
+
| Parameter | Type | Default | Description |
|
|
182
|
+
|-----------|------|---------|-------------|
|
|
183
|
+
| `address_a` | string | *required* | First token address |
|
|
184
|
+
| `address_b` | string | *required* | Second token address |
|
|
185
|
+
| `chain` | string | `"solana"` | Blockchain |
|
|
236
186
|
|
|
237
|
-
|
|
187
|
+
### `get_token_security`
|
|
238
188
|
|
|
239
|
-
|
|
189
|
+
Quick contract security check. Solana only.
|
|
240
190
|
|
|
241
|
-
|
|
191
|
+
| Parameter | Type | Default | Description |
|
|
192
|
+
|-----------|------|---------|-------------|
|
|
193
|
+
| `address` | string | *required* | Solana token mint address |
|
|
242
194
|
|
|
243
|
-
|
|
195
|
+
**Returns:** Mint authority status, freeze authority status, total supply, decimals, and a SAFE/CAUTION/DANGEROUS verdict.
|
|
244
196
|
|
|
245
|
-
##
|
|
197
|
+
## Architecture
|
|
246
198
|
|
|
247
|
-
|
|
199
|
+
```
|
|
200
|
+
Claude Code
|
|
201
|
+
|
|
|
202
|
+
| MCP stdio
|
|
203
|
+
v
|
|
204
|
+
+------------------+
|
|
205
|
+
| deficlaw |
|
|
206
|
+
| MCP Server |
|
|
207
|
+
| |
|
|
208
|
+
| +-- Cache ----+ | +--------------+
|
|
209
|
+
| | TTL-based | | ---> | DexScreener | prices, volume,
|
|
210
|
+
| | in-memory | | | (free API) | liquidity, pairs
|
|
211
|
+
| +-------------+ | +--------------+
|
|
212
|
+
| |
|
|
213
|
+
| +-- Risk ----+ | +--------------+
|
|
214
|
+
| | 8-dimension | | ---> | GMGN | holders, KOLs,
|
|
215
|
+
| | scorer | | | (curl/PW) | tags, PnL
|
|
216
|
+
| +-------------+ | +--------------+
|
|
217
|
+
| |
|
|
218
|
+
| +-- Summary --+ | +--------------+
|
|
219
|
+
| | Rule-based | | ---> | Solana RPC | mint/freeze auth,
|
|
220
|
+
| | generator | | | (free) | supply, LP detect
|
|
221
|
+
| +-------------+ | +--------------+
|
|
222
|
+
| |
|
|
223
|
+
| +-- Jupiter --+ | +--------------+
|
|
224
|
+
| | Quote API | | ---> | Jupiter | slippage quotes,
|
|
225
|
+
| | client | | | (free API) | route planning
|
|
226
|
+
| +-------------+ | +--------------+
|
|
227
|
+
+------------------+
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Key design decisions:**
|
|
231
|
+
- **curl-based GMGN fetcher** bypasses Cloudflare TLS fingerprinting (Playwright fallback if curl is blocked)
|
|
232
|
+
- **TTL-based in-memory cache** with automatic cleanup prevents rate limiting and keeps responses fast
|
|
233
|
+
- **Rate limiter** with exponential backoff and retry logic for DexScreener (200ms min interval)
|
|
234
|
+
- **Parallel fetching** where possible (holders + security run simultaneously)
|
|
235
|
+
- **All free APIs**, no keys needed
|
|
236
|
+
|
|
237
|
+
## Performance
|
|
238
|
+
|
|
239
|
+
Benchmarked on real tokens (BONK), averaged across multiple runs:
|
|
240
|
+
|
|
241
|
+
| Operation | Time | Notes |
|
|
242
|
+
|-----------|------|-------|
|
|
243
|
+
| `get_price` | ~54ms | Cached: near-instant |
|
|
244
|
+
| `search_token` | ~340ms | DexScreener search API |
|
|
245
|
+
| `analyze_token` (quick) | ~410ms | Price + market + risk, no holders |
|
|
246
|
+
| `analyze_token` (full) | ~1.1-1.5s | All sources: DexScreener + GMGN + Solana RPC |
|
|
247
|
+
| `get_token_security` | ~300ms | Single Solana RPC call |
|
|
248
|
+
| `estimate_slippage` | ~500ms | 4 Jupiter quotes in parallel |
|
|
248
249
|
|
|
249
|
-
|
|
250
|
-
|-----------|-----------|----------------|
|
|
251
|
-
| Liquidity | 22 | Pool depth in USD |
|
|
252
|
-
| Token Age | 10 | Time since creation |
|
|
253
|
-
| Volume Anomalies | 8 | Wash trading signals, vol/mcap ratio |
|
|
254
|
-
| Holder Concentration | 18 | Top 10 holder % |
|
|
255
|
-
| Dev Wallet | 15 | Dev holdings and selling behavior |
|
|
256
|
-
| Fresh Wallets | 12 | New wallet % (possible wash/bundle) |
|
|
257
|
-
| Sniper Activity | 10 | Bot/sniper wallets in top holders |
|
|
258
|
-
| Contract Security | 5 | Mint/freeze authority status |
|
|
250
|
+
## Risk Scoring
|
|
259
251
|
|
|
260
|
-
|
|
252
|
+
The composite risk scorer analyzes **8 dimensions** to produce a 0-100 score:
|
|
261
253
|
|
|
262
|
-
|
|
254
|
+
| # | Dimension | Max Points | What It Checks |
|
|
255
|
+
|---|-----------|-----------|----------------|
|
|
256
|
+
| 1 | **Liquidity** | 22 | Pool depth in USD. <$1K = critical, <$5K = extreme, <$25K = high |
|
|
257
|
+
| 2 | **Token Age** | 10 | Time since pair creation. <1h = critical, <6h = high, <24h = medium |
|
|
258
|
+
| 3 | **Volume Anomalies** | 8 | Vol/mcap ratio for wash trading signals. >5x = suspicious |
|
|
259
|
+
| 4 | **Holder Concentration** | 18 | Top 10 holder supply %. >60% = critical, >40% = high |
|
|
260
|
+
| 5 | **Dev Wallet** | 15 | Dev holdings % and selling behavior. >20% = rug risk |
|
|
261
|
+
| 6 | **Fresh Wallets** | 12 | New wallet % among holders. >40% = likely bundled/wash |
|
|
262
|
+
| 7 | **Sniper Activity** | 10 | Bot/sniper/sandwich wallets in top holders |
|
|
263
|
+
| 8 | **Contract Security** | 5 | Mint authority (3pts) + freeze authority (2pts) |
|
|
263
264
|
|
|
264
|
-
|
|
265
|
-
Claude Code <-> MCP stdio <-> deficlaw server
|
|
266
|
-
|
|
|
267
|
-
+------------+------------+
|
|
268
|
-
| | |
|
|
269
|
-
DexScreener GMGN API Solana RPC
|
|
270
|
-
(prices) (holders) (security)
|
|
271
|
-
```
|
|
265
|
+
**Risk Levels:**
|
|
272
266
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
-
|
|
277
|
-
-
|
|
267
|
+
| Level | Score Range | Meaning |
|
|
268
|
+
|-------|------------|---------|
|
|
269
|
+
| LOW | 0-19 | Few concerns, safer relative to peers |
|
|
270
|
+
| MEDIUM | 20-44 | Some concerns, do your own research |
|
|
271
|
+
| HIGH | 45-69 | Multiple red flags, elevated caution |
|
|
272
|
+
| CRITICAL | 70-100 | Extreme risk, likely scam or rug-pull |
|
|
278
273
|
|
|
279
274
|
## Configuration
|
|
280
275
|
|
|
281
|
-
|
|
276
|
+
All environment variables are optional. deficlaw works out of the box with zero config.
|
|
282
277
|
|
|
283
278
|
| Variable | Default | Description |
|
|
284
279
|
|----------|---------|-------------|
|
|
285
|
-
| `SOLANA_RPC_URL` | `https://api.mainnet-beta.solana.com` | Custom Solana RPC endpoint |
|
|
280
|
+
| `SOLANA_RPC_URL` | `https://api.mainnet-beta.solana.com` | Custom Solana RPC endpoint (use a private RPC for better reliability) |
|
|
286
281
|
| `DEFICLAW_CACHE_TTL` | `120000` (2 min) | GMGN holder cache TTL in milliseconds |
|
|
287
282
|
| `DEFICLAW_PRICE_CACHE_TTL` | `30000` (30s) | Price cache TTL in milliseconds |
|
|
288
|
-
| `DEBUG` | (unset) | Set to `deficlaw` to enable debug logging to stderr |
|
|
283
|
+
| `DEBUG` | *(unset)* | Set to `deficlaw` to enable debug logging to stderr |
|
|
289
284
|
|
|
290
285
|
### Claude Code Config
|
|
291
286
|
|
|
@@ -296,56 +291,89 @@ Add to your project's `.mcp.json`:
|
|
|
296
291
|
"mcpServers": {
|
|
297
292
|
"defi": {
|
|
298
293
|
"command": "npx",
|
|
299
|
-
"args": ["-y", "@0xprotovox/deficlaw"]
|
|
300
|
-
"env": {
|
|
301
|
-
"SOLANA_RPC_URL": "https://your-rpc.com",
|
|
302
|
-
"DEFICLAW_CACHE_TTL": "120000",
|
|
303
|
-
"DEFICLAW_PRICE_CACHE_TTL": "30000",
|
|
304
|
-
"DEBUG": "deficlaw"
|
|
305
|
-
}
|
|
294
|
+
"args": ["-y", "@0xprotovox/deficlaw"]
|
|
306
295
|
}
|
|
307
296
|
}
|
|
308
297
|
}
|
|
309
298
|
```
|
|
310
299
|
|
|
311
|
-
|
|
300
|
+
<details>
|
|
301
|
+
<summary>With custom environment variables</summary>
|
|
312
302
|
|
|
313
303
|
```json
|
|
314
304
|
{
|
|
315
305
|
"mcpServers": {
|
|
316
306
|
"defi": {
|
|
317
|
-
"command": "
|
|
318
|
-
"args": ["/
|
|
307
|
+
"command": "npx",
|
|
308
|
+
"args": ["-y", "@0xprotovox/deficlaw"],
|
|
309
|
+
"env": {
|
|
310
|
+
"SOLANA_RPC_URL": "https://your-rpc.com",
|
|
311
|
+
"DEFICLAW_CACHE_TTL": "120000",
|
|
312
|
+
"DEFICLAW_PRICE_CACHE_TTL": "30000",
|
|
313
|
+
"DEBUG": "deficlaw"
|
|
314
|
+
}
|
|
319
315
|
}
|
|
320
316
|
}
|
|
321
317
|
}
|
|
322
318
|
```
|
|
319
|
+
</details>
|
|
320
|
+
|
|
321
|
+
## Supported Chains
|
|
322
|
+
|
|
323
|
+
**Prices and trending** work on all DexScreener-supported chains: Solana, Ethereum, Base, BSC, Arbitrum, Polygon, Avalanche, Optimism, Fantom, and more.
|
|
324
|
+
|
|
325
|
+
**Holder analysis** (GMGN) currently supports **Solana** tokens.
|
|
326
|
+
|
|
327
|
+
**Slippage estimation** (Jupiter) supports **Solana** tokens.
|
|
323
328
|
|
|
324
329
|
## Roadmap
|
|
325
330
|
|
|
326
331
|
- [x] Token analysis with holder intelligence
|
|
327
|
-
- [x] Risk scoring (8 dimensions)
|
|
328
|
-
- [x] Contract security checks
|
|
332
|
+
- [x] Risk scoring (8 dimensions, 0-100)
|
|
333
|
+
- [x] Contract security checks (mint/freeze authority)
|
|
329
334
|
- [x] KOL detection with Twitter handles
|
|
330
|
-
- [x] Human-readable AI summary
|
|
331
|
-
- [x] Top traders (winners/losers)
|
|
332
|
-
- [x] npm package (`npm install -g @0xprotovox/deficlaw`)
|
|
335
|
+
- [x] Human-readable AI summary with actionable insights
|
|
336
|
+
- [x] Top traders (winners/losers with PnL)
|
|
333
337
|
- [x] Token search by name/symbol
|
|
334
338
|
- [x] New launches detection
|
|
335
339
|
- [x] Actionable verdict (BUY/SELL/NEUTRAL/AVOID)
|
|
340
|
+
- [x] Slippage estimation (Jupiter quotes)
|
|
341
|
+
- [x] Token comparison (side by side)
|
|
336
342
|
- [x] Configurable cache TTL via env vars
|
|
337
343
|
- [x] Debug logging (DEBUG=deficlaw)
|
|
338
|
-
- [x]
|
|
339
|
-
- [ ]
|
|
340
|
-
- [ ] Token comparison (side by side)
|
|
341
|
-
- [ ] Multi-chain holder analysis
|
|
344
|
+
- [x] LP pool detection in top holders
|
|
345
|
+
- [ ] Multi-chain holder analysis (Ethereum, Base)
|
|
342
346
|
- [ ] Price alerts via MCP resources
|
|
347
|
+
- [ ] Wallet portfolio analysis
|
|
348
|
+
- [ ] Historical price charts
|
|
349
|
+
- [ ] DEX aggregator integration for trade execution
|
|
350
|
+
|
|
351
|
+
## Contributing
|
|
352
|
+
|
|
353
|
+
Contributions welcome! Here's how:
|
|
354
|
+
|
|
355
|
+
1. Fork the repo
|
|
356
|
+
2. Create your branch (`git checkout -b feature/my-feature`)
|
|
357
|
+
3. Make changes and ensure `npx tsc --noEmit` passes with zero errors
|
|
358
|
+
4. Run benchmarks (`npm test`) to verify nothing regressed
|
|
359
|
+
5. Commit and open a PR
|
|
360
|
+
|
|
361
|
+
**Development setup:**
|
|
362
|
+
```bash
|
|
363
|
+
git clone https://github.com/0xprotovox/deficlaw.git
|
|
364
|
+
cd deficlaw
|
|
365
|
+
npm install
|
|
366
|
+
npm run build # compile TypeScript
|
|
367
|
+
npm test # run speed benchmarks
|
|
368
|
+
npm run dev # run from source with tsx
|
|
369
|
+
```
|
|
343
370
|
|
|
344
371
|
## Built With
|
|
345
372
|
|
|
346
373
|
- [Model Context Protocol SDK](https://github.com/modelcontextprotocol/typescript-sdk) - MCP server framework
|
|
347
374
|
- [DexScreener API](https://docs.dexscreener.com) - Price and market data
|
|
348
375
|
- [GMGN](https://gmgn.ai) - Holder intelligence
|
|
376
|
+
- [Jupiter Quote API](https://station.jup.ag/docs/apis/swap-api) - Slippage estimation
|
|
349
377
|
- TypeScript, Zod, Node.js 18+
|
|
350
378
|
|
|
351
379
|
## License
|
|
@@ -160,7 +160,9 @@ export function formatAnalysis(data) {
|
|
|
160
160
|
lines.push(` Sell TX: ${h.pressure.totalSellTx}`);
|
|
161
161
|
const ratioStr = h.pressure.buySellRatio === Infinity
|
|
162
162
|
? 'all buys'
|
|
163
|
-
:
|
|
163
|
+
: h.pressure.buySellRatio > 10000
|
|
164
|
+
? `${Math.round(h.pressure.buySellRatio).toLocaleString()}:1 (unreliable, low tx count)`
|
|
165
|
+
: `${h.pressure.buySellRatio.toFixed(2)}:1`;
|
|
164
166
|
const ratioIndicator = h.pressure.buySellRatio > 1.5 ? ' (bullish)'
|
|
165
167
|
: h.pressure.buySellRatio < 0.7 ? ' (bearish)'
|
|
166
168
|
: ' (neutral)';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatOutput.js","sourceRoot":"","sources":["../../src/analysis/formatOutput.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"formatOutput.js","sourceRoot":"","sources":["../../src/analysis/formatOutput.ts"],"names":[],"mappings":"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"}
|