@catalyst-team/poly-mcp 0.1.1 → 0.1.3

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 (107) hide show
  1. package/README.md +264 -21
  2. package/dist/errors.d.ts +11 -0
  3. package/dist/errors.d.ts.map +1 -1
  4. package/dist/errors.js +13 -2
  5. package/dist/errors.js.map +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +98 -5
  8. package/dist/index.js.map +1 -1
  9. package/dist/sdk-instance.d.ts +27 -0
  10. package/dist/sdk-instance.d.ts.map +1 -0
  11. package/dist/sdk-instance.js +64 -0
  12. package/dist/sdk-instance.js.map +1 -0
  13. package/dist/server.d.ts +13 -1
  14. package/dist/server.d.ts.map +1 -1
  15. package/dist/server.js +29 -27
  16. package/dist/server.js.map +1 -1
  17. package/dist/tools/guide.d.ts.map +1 -1
  18. package/dist/tools/guide.js +159 -1
  19. package/dist/tools/guide.js.map +1 -1
  20. package/dist/tools/index.d.ts +8 -4
  21. package/dist/tools/index.d.ts.map +1 -1
  22. package/dist/tools/index.js +20 -4
  23. package/dist/tools/index.js.map +1 -1
  24. package/dist/tools/insider-detection.d.ts +175 -0
  25. package/dist/tools/insider-detection.d.ts.map +1 -0
  26. package/dist/tools/insider-detection.js +654 -0
  27. package/dist/tools/insider-detection.js.map +1 -0
  28. package/dist/tools/insider-signals.d.ts +56 -0
  29. package/dist/tools/insider-signals.d.ts.map +1 -0
  30. package/dist/tools/insider-signals.js +170 -0
  31. package/dist/tools/insider-signals.js.map +1 -0
  32. package/dist/tools/market.d.ts +25 -1
  33. package/dist/tools/market.d.ts.map +1 -1
  34. package/dist/tools/market.js +504 -12
  35. package/dist/tools/market.js.map +1 -1
  36. package/dist/tools/onchain.d.ts +240 -0
  37. package/dist/tools/onchain.d.ts.map +1 -0
  38. package/dist/tools/onchain.js +610 -0
  39. package/dist/tools/onchain.js.map +1 -0
  40. package/dist/tools/order.d.ts.map +1 -1
  41. package/dist/tools/order.js +13 -6
  42. package/dist/tools/order.js.map +1 -1
  43. package/dist/tools/trade.d.ts +15 -0
  44. package/dist/tools/trade.d.ts.map +1 -1
  45. package/dist/tools/trade.js +216 -39
  46. package/dist/tools/trade.js.map +1 -1
  47. package/dist/tools/trader.d.ts +4 -1
  48. package/dist/tools/trader.d.ts.map +1 -1
  49. package/dist/tools/trader.js +316 -4
  50. package/dist/tools/trader.js.map +1 -1
  51. package/dist/tools/wallet-classification.d.ts +166 -0
  52. package/dist/tools/wallet-classification.d.ts.map +1 -0
  53. package/dist/tools/wallet-classification.js +455 -0
  54. package/dist/tools/wallet-classification.js.map +1 -0
  55. package/dist/tools/wallet.d.ts +56 -7
  56. package/dist/tools/wallet.d.ts.map +1 -1
  57. package/dist/tools/wallet.js +141 -20
  58. package/dist/tools/wallet.js.map +1 -1
  59. package/dist/types.d.ts +269 -10
  60. package/dist/types.d.ts.map +1 -1
  61. package/dist/wallet-manager.d.ts +67 -0
  62. package/dist/wallet-manager.d.ts.map +1 -0
  63. package/dist/wallet-manager.js +180 -0
  64. package/dist/wallet-manager.js.map +1 -0
  65. package/docs/01-mcp.md +554 -32
  66. package/docs/02-wallet-deep-research.md +344 -0
  67. package/docs/e2e-02/00-gap-analysis.md +211 -0
  68. package/docs/e2e-02/01-test-scenarios.md +530 -0
  69. package/docs/e2e-02/02-implementation-plan.md +190 -0
  70. package/docs/e2e-02/README.md +102 -0
  71. package/docs/reports/simonbanza-strategy-analysis-2025-12-25.md +420 -0
  72. package/docs/reports/smart-money-analysis-2025-12-23-cn.md +840 -0
  73. package/docs/reports/smart-money-trading-strategies-2025-12-25.md +440 -0
  74. package/docs/reports/weekly/01-v2.5.md +352 -0
  75. package/docs/reports/weekly/01.md +402 -0
  76. package/docs/reports/weekly/02-deep.md +558 -0
  77. package/docs/reports/weekly/02.md +505 -0
  78. package/docs/reports/weekly/03.md +437 -0
  79. package/docs/reports/weekly/04.md +418 -0
  80. package/docs/reports/weekly/05.md +485 -0
  81. package/docs/reports/weekly/06.md +436 -0
  82. package/docs/reports/weekly/07.md +381 -0
  83. package/docs/reports/weekly/08.md +502 -0
  84. package/docs/reports/weekly/09.md +441 -0
  85. package/docs/reports/weekly/10.md +511 -0
  86. package/docs/reports/weekly/README.md +188 -0
  87. package/docs/reports/weekly/prompt-v2.5.md +1019 -0
  88. package/docs/reports/weekly/prompt-v3.md +432 -0
  89. package/docs/reports/weekly/prompt.md +841 -0
  90. package/package.json +3 -2
  91. package/src/errors.ts +13 -2
  92. package/src/index.ts +286 -1
  93. package/src/sdk-instance.ts +78 -0
  94. package/src/server.ts +30 -28
  95. package/src/tools/guide.ts +160 -1
  96. package/src/tools/index.ts +65 -0
  97. package/src/tools/insider-detection.ts +899 -0
  98. package/src/tools/insider-signals.ts +213 -0
  99. package/src/tools/market.ts +569 -12
  100. package/src/tools/onchain.ts +738 -0
  101. package/src/tools/order.ts +25 -12
  102. package/src/tools/trade.ts +265 -53
  103. package/src/tools/trader.ts +350 -4
  104. package/src/tools/wallet-classification.ts +587 -0
  105. package/src/tools/wallet.ts +172 -23
  106. package/src/types.ts +294 -11
  107. package/src/wallet-manager.ts +209 -0
package/README.md CHANGED
@@ -14,7 +14,19 @@ get_trader_profile(address) → 分析盈利模式
14
14
  ```
15
15
  **示例问题**: "Top 10 聪明钱主要在哪些市场有持仓?"
16
16
 
17
- ### 2. 交易者深度分析 (Trader Deep Dive)
17
+ ### 2. 内幕检测 (Insider Detection) 🆕
18
+ ```
19
+ get_political_markets → 获取政治市场列表
20
+
21
+ scan_insider_wallets(conditionId) → 扫描市场内的可疑钱包
22
+
23
+ analyze_wallet_insider(address) → 深度分析钱包内幕特征
24
+
25
+ classify_wallet(address, tags) → 对钱包打标签分类
26
+ ```
27
+ **示例问题**: "委内瑞拉相关市场有没有内幕钱包?帮我分析下"
28
+
29
+ ### 3. 交易者深度分析 (Trader Deep Dive)
18
30
  ```
19
31
  get_trader_positions(address) → 持仓分析
20
32
 
@@ -26,7 +38,7 @@ get_trader_trades(address) → 入场时机分析
26
38
  ```
27
39
  **示例问题**: "这个交易者是什么策略类型?他的盈利主要来自哪里?"
28
40
 
29
- ### 3. 跟单交易 (Copy Trading)
41
+ ### 4. 跟单交易 (Copy Trading)
30
42
  ```
31
43
  get_leaderboard → 选择跟单目标
32
44
 
@@ -38,7 +50,7 @@ place_limit_order → 跟进交易
38
50
  ```
39
51
  **示例问题**: "排名第一的交易者最近买了什么?我应该跟吗?"
40
52
 
41
- ### 4. 钱包追踪 (Wallet Tracking)
53
+ ### 5. 钱包追踪 (Wallet Tracking)
42
54
  ```
43
55
  get_trader_trades(address) → 查看今日交易
44
56
 
@@ -48,7 +60,7 @@ get_market(conditionId) → 深入分析相关市场
48
60
  ```
49
61
  **示例问题**: "这个钱包今天有哪些交易?表现如何?"
50
62
 
51
- ### 5. 热门市场发现 (Market Discovery)
63
+ ### 6. 热门市场发现 (Market Discovery)
52
64
  ```
53
65
  search_markets(query, sortBy: 'volume') → 热门市场
54
66
 
@@ -58,17 +70,27 @@ get_leaderboard → 查看哪些聪明钱参与
58
70
  ```
59
71
  **示例问题**: "最近24小时哪些市场交易量最大?聪明钱在买入什么?"
60
72
 
61
- ### 6. 体育市场策略 (Sports Strategy)
73
+ ### 7. 套利检测 (Arbitrage Detection) 🆕
62
74
  ```
63
- search_markets(query: 'NBA/NFL') → 体育市场
75
+ detect_arbitrage(conditionId) → 检测套利机会
64
76
 
65
- get_market(conditionId) → 查看赔率和截止时间
77
+ get_realtime_spread(conditionId) → 获取实时价差
66
78
 
67
- get_orderbook分析价差和深度
79
+ ctf_split / ctf_merge 执行套利操作
68
80
  ```
69
- **示例问题**: "今天有哪些 NBA 比赛可以投注?赔率合理吗?"
81
+ **示例问题**: "这个市场有套利机会吗?"
70
82
 
71
- ### 7. 充值与授权 (Deposit & Auth)
83
+ ### 8. 短期加密市场 (Crypto Short-Term) 🆕
84
+ ```
85
+ scan_crypto_short_term_markets(coin: 'BTC') → 扫描即将结束的市场
86
+
87
+ get_klines(conditionId, interval: '5s') → 获取高频K线
88
+
89
+ detect_market_signals(conditionId) → 检测市场信号
90
+ ```
91
+ **示例问题**: "找出即将在15分钟内结束的BTC市场"
92
+
93
+ ### 9. 充值与授权 (Deposit & Auth)
72
94
  ```
73
95
  check_allowances() → 检查授权状态
74
96
 
@@ -80,7 +102,7 @@ deposit_usdc(100) → 充值到交易账户
80
102
  ```
81
103
  **示例问题**: "我的钱包准备好交易了吗?帮我检查授权状态"
82
104
 
83
- ### 8. 执行交易 (Trading)
105
+ ### 10. 执行交易 (Trading)
84
106
  ```
85
107
  get_market(identifier) → 获取市场信息
86
108
 
@@ -92,6 +114,18 @@ place_limit_order(conditionId, "Yes", "BUY", 0.55, 100) → 下单
92
114
  ```
93
115
  **示例问题**: "帮我在这个市场买入 100 USDC 的 Yes"
94
116
 
117
+ ### 11. 链上操作 (CTF Operations) 🆕
118
+ ```
119
+ check_ctf_ready("100") → 检查是否准备好
120
+
121
+ ctf_split(conditionId, "100") → 拆分 USDC 为 YES+NO
122
+
123
+ ctf_merge(conditionId, "100") → 合并 YES+NO 为 USDC
124
+
125
+ ctf_redeem(conditionId) → 赎回获胜的 tokens
126
+ ```
127
+ **示例问题**: "帮我把这个市场的 YES+NO tokens 合并回 USDC"
128
+
95
129
  ---
96
130
 
97
131
  ## 📦 安装
@@ -127,7 +161,7 @@ pnpm -F @catalyst-team/poly-mcp build
127
161
  }
128
162
  ```
129
163
 
130
- #### 交易模式 (需要私钥)
164
+ #### 交易模式 - 单钱包
131
165
  ```json
132
166
  {
133
167
  "mcpServers": {
@@ -142,6 +176,45 @@ pnpm -F @catalyst-team/poly-mcp build
142
176
  }
143
177
  ```
144
178
 
179
+ #### 交易模式 - 多钱包 (推荐)
180
+
181
+ **注意**: JSON 中的嵌套 JSON 需要转义,建议先在 shell 中设置环境变量,再在配置中引用。
182
+
183
+ **方式 1: 直接在配置中写 (需要转义引号)**
184
+ ```json
185
+ {
186
+ "mcpServers": {
187
+ "polymarket": {
188
+ "command": "npx",
189
+ "args": ["@catalyst-team/poly-mcp"],
190
+ "env": {
191
+ "POLY_WALLETS": "{\"main\":\"0xYourMainWalletPrivateKey\",\"trading\":\"0xYourTradingWalletPrivateKey\",\"arb\":\"0xYourArbWalletPrivateKey\"}"
192
+ }
193
+ }
194
+ }
195
+ }
196
+ ```
197
+
198
+ **方式 2: 使用 shell 环境变量 (更简洁)**
199
+
200
+ 先在 `~/.zshrc` 或 `~/.bashrc` 中添加:
201
+ ```bash
202
+ export POLY_WALLETS='{"main":"0xYourMainWalletPrivateKey","trading":"0xYourTradingWalletPrivateKey","arb":"0xYourArbWalletPrivateKey"}'
203
+ ```
204
+
205
+ 然后在 Claude Desktop 配置中:
206
+ ```json
207
+ {
208
+ "mcpServers": {
209
+ "polymarket": {
210
+ "command": "npx",
211
+ "args": ["@catalyst-team/poly-mcp"]
212
+ }
213
+ }
214
+ }
215
+ ```
216
+ (MCP Server 会自动读取系统环境变量)
217
+
145
218
  #### 本地开发
146
219
  ```json
147
220
  {
@@ -161,13 +234,21 @@ pnpm -F @catalyst-team/poly-mcp build
161
234
 
162
235
  ## 🛠️ 完整工具列表
163
236
 
237
+ ### Guide Tool
238
+ | 工具 | 描述 |
239
+ |------|------|
240
+ | `get_usage_guide` | 🚀 获取使用指南,AI Agent 应首先调用此工具 |
241
+
164
242
  ### Trader Tools (公开数据)
165
243
  | 工具 | 描述 |
166
244
  |------|------|
167
- | `get_trader_positions` | 获取钱包当前持仓和 PnL |
245
+ | `get_trader_positions` | 获取钱包当前持仓和 PnL,支持分页 |
168
246
  | `get_trader_trades` | 获取钱包交易历史 |
247
+ | `get_trader_activity` | 获取完整活动历史 (TRADE/SPLIT/MERGE/REDEEM 等),支持 fetchAll |
169
248
  | `get_trader_profile` | 获取交易者综合分析 |
170
- | `get_leaderboard` | 获取 PnL 排行榜 |
249
+ | `get_trader_closed_positions` | 获取已平仓位和实现盈亏 |
250
+ | `get_leaderboard` | 获取 PnL 排行榜,支持时间周期过滤 |
251
+ | `get_account_value` | 获取账户总价值 |
171
252
 
172
253
  ### Market Tools (公开数据)
173
254
  | 工具 | 描述 |
@@ -176,6 +257,12 @@ pnpm -F @catalyst-team/poly-mcp build
176
257
  | `search_markets` | 关键词搜索市场 |
177
258
  | `get_trending_markets` | 获取热门市场 |
178
259
  | `get_market_trades` | 获取市场最近成交 |
260
+ | `get_klines` | 获取 K 线数据,支持秒级间隔 (1s/5s/15s) |
261
+ | `get_price_history` | 获取价格历史 |
262
+ | `detect_arbitrage` | 检测套利机会 (long/short arb) |
263
+ | `detect_market_signals` | 检测市场信号 (量能/深度/鲸鱼/动量) |
264
+ | `get_realtime_spread` | 获取实时价差和套利利润 |
265
+ | `scan_crypto_short_term_markets` | 扫描短期加密市场 (5m/15m Up/Down) |
179
266
 
180
267
  ### Order Tools (公开数据)
181
268
  | 工具 | 描述 |
@@ -187,12 +274,28 @@ pnpm -F @catalyst-team/poly-mcp build
187
274
  ### Trade Tools (需要私钥)
188
275
  | 工具 | 描述 |
189
276
  |------|------|
190
- | `place_limit_order` | 下限价单 |
277
+ | `place_limit_order` | 下限价单 (GTC/GTD) |
191
278
  | `place_market_order` | 下市价单 |
192
279
  | `cancel_order` | 取消订单 |
280
+ | `cancel_all_orders` | 取消所有订单 |
193
281
  | `get_my_orders` | 查看挂单 |
282
+ | `get_my_trades` | 查看成交历史 |
283
+
284
+ ### Rewards Tools (需要私钥)
285
+ | 工具 | 描述 |
286
+ |------|------|
287
+ | `get_earnings` | 获取做市收益 |
288
+ | `get_current_rewards` | 获取当前奖励市场 |
289
+ | `check_order_scoring` | 检查订单是否在赚取奖励 |
290
+
291
+ ### Wallet Management Tools (多钱包管理)
292
+ | 工具 | 描述 | 需要私钥 |
293
+ |------|------|:--------:|
294
+ | `list_wallets` | 列出所有配置的钱包 | ✅ |
295
+ | `get_active_wallet` | 获取当前活跃钱包 | ✅ |
296
+ | `set_active_wallet` | 切换活跃钱包 | ✅ |
194
297
 
195
- ### Wallet Tools
298
+ ### Wallet Tools (充值/换币)
196
299
  | 工具 | 描述 | 需要私钥 |
197
300
  |------|------|:--------:|
198
301
  | `get_supported_deposit_assets` | 支持的充值资产和链 | ❌ |
@@ -207,10 +310,92 @@ pnpm -F @catalyst-team/poly-mcp build
207
310
  | `get_swap_quote` | 获取换币报价 | ❌ |
208
311
  | `get_available_pools` | 获取可用交易池 | ❌ |
209
312
 
210
- ### Guide Tool
313
+ ### CTF/Onchain Tools (链上操作) 🆕
314
+ | 工具 | 描述 | 需要私钥 |
315
+ |------|------|:--------:|
316
+ | `ctf_split` | 拆分 USDC 为 YES + NO tokens | ✅ |
317
+ | `ctf_merge` | 合并 YES + NO tokens 为 USDC | ✅ |
318
+ | `ctf_redeem` | 赎回获胜的 tokens | ✅ |
319
+ | `get_position_balance` | 获取持仓 token 余额 | ✅ |
320
+ | `get_market_resolution` | 检查市场是否已结算 | ✅ |
321
+ | `check_ctf_ready` | 检查钱包是否准备好 CTF 交易 | ✅ |
322
+ | `estimate_gas` | 估算 gas 费用 | ✅ |
323
+ | `get_gas_price` | 获取当前 gas 价格 | ✅ |
324
+
325
+ ### Insider Detection Tools (内幕检测) 🆕
211
326
  | 工具 | 描述 |
212
327
  |------|------|
213
- | `get_usage_guide` | 🚀 获取使用指南,AI Agent 应首先调用此工具 |
328
+ | `analyze_wallet_insider` | 分析钱包内幕特征,返回 InsiderScore (0-100) |
329
+ | `scan_insider_wallets` | 扫描市场交易,检测可疑钱包 |
330
+ | `get_insider_candidates` | 获取已检测的内幕候选人列表 |
331
+ | `get_political_markets` | 获取政治市场及内幕活动摘要 |
332
+
333
+ ### Insider Signals Tools (内幕信号) 🆕
334
+ | 工具 | 描述 |
335
+ |------|------|
336
+ | `get_insider_signals` | 获取内幕检测信号 (新钱包/大单/集群) |
337
+ | `get_insider_signal_count` | 获取未读信号数量 |
338
+ | `mark_insider_signal_read` | 标记信号为已读 |
339
+ | `mark_all_insider_signals_read` | 标记所有信号为已读 |
340
+
341
+ ### Wallet Classification Tools (钱包分类) 🆕
342
+ | 工具 | 描述 |
343
+ |------|------|
344
+ | `get_tag_definitions` | 获取所有标签定义 (22 个预定义标签,7 个分类) |
345
+ | `add_tag_definition` | 添加新标签定义 |
346
+ | `get_wallet_classification` | 获取钱包分类 |
347
+ | `classify_wallet` | 对钱包打标签分类 |
348
+ | `get_wallets_by_tag` | 按标签获取钱包列表 |
349
+ | `remove_wallet_tag` | 移除钱包标签 |
350
+
351
+ ---
352
+
353
+ ## 🕵️ 内幕检测系统
354
+
355
+ ### InsiderScore 评分体系
356
+
357
+ 基于委内瑞拉/格陵兰案例研究,分析钱包的内幕交易特征:
358
+
359
+ | 特征 | 权重 | 说明 |
360
+ |------|------|------|
361
+ | 新钱包 (<7天) | 15 | 为特定事件新建的钱包 |
362
+ | 无历史 (<3笔) | 10 | 几乎没有交易历史 |
363
+ | 单边押注 | 20 | 只买 YES 或只买 NO |
364
+ | 大额押注 | 15 | 单笔交易超过 $1000 |
365
+ | 时机敏感 | 10 | 在事件前 24h 内交易 |
366
+ | 存款窗口短 (<24h) | 25 | 充值后立即交易 |
367
+ | 价格不敏感 | 10 | 不在乎买入价格 |
368
+ | 两阶段模式 | 15 | 先失败后成功的交易模式 |
369
+
370
+ **加分项**:
371
+ - 高回报倍数 (>=5x): +10
372
+ - 政治市场: +5
373
+ - 突发事件: +10
374
+ - 跨链资金关联: +15
375
+ - 身份暴露 (ENS/SNS): +20
376
+
377
+ ### 风险等级
378
+
379
+ | 等级 | 分数 | 颜色 | 说明 |
380
+ |------|------|------|------|
381
+ | critical | ≥80 | 🔴 红色 | 高度可疑,需要重点关注 |
382
+ | high | ≥60 | 🟡 黄色 | 中度可疑,建议跟踪 |
383
+ | medium | ≥40 | 🟠 橙色 | 轻度可疑,可能是投机者 |
384
+ | low | <40 | 🟢 绿色 | 正常交易者 |
385
+
386
+ ### 标签分类系统
387
+
388
+ 7 个分类,22+ 个预定义标签:
389
+
390
+ | 分类 | 标签示例 |
391
+ |------|---------|
392
+ | trading-style | high-frequency, swing-trader, scalper |
393
+ | market-preference | crypto-focused, politics-focused, sports-focused |
394
+ | scale | whale (>$100k), shark ($10k-$100k), fish (<$10k) |
395
+ | performance | consistently-profitable, break-even, losing |
396
+ | activity | very-active, active, dormant |
397
+ | risk-profile | high-conviction, diversified, risk-averse |
398
+ | special | insider-suspected, copy-worthy, market-maker |
214
399
 
215
400
  ---
216
401
 
@@ -218,9 +403,53 @@ pnpm -F @catalyst-team/poly-mcp build
218
403
 
219
404
  1. **AI Agent 首先调用 `get_usage_guide`** - 获取完整的使用场景指南
220
405
  2. **用 `get_leaderboard` 获取聪明钱地址** - 这是分析的起点
221
- 3. **用 `search_markets` tag 参数过滤** - Politics, Sports, Crypto
222
- 4. **分析持仓时看 `avgPrice` vs `curPrice`** - 判断盈亏状态
223
- 5. **查看 `volume24hr`** - 判断市场活跃度
406
+ 3. **用 `scan_insider_wallets` 检测可疑钱包** - 政治市场特别有用
407
+ 4. **用 `get_klines` 的秒级间隔** - 分析 15 分钟加密市场
408
+ 5. **用 `detect_arbitrage` 发现套利机会** - 结合 `ctf_split/merge` 执行
409
+ 6. **分析持仓时看 `avgPrice` vs `curPrice`** - 判断盈亏状态
410
+ 7. **查看 `volume24hr`** - 判断市场活跃度
411
+
412
+ ---
413
+
414
+ ## 🔐 多钱包配置
415
+
416
+ 支持 3 种方式配置钱包私钥:
417
+
418
+ ### 方式 1: JSON 格式 (推荐)
419
+ ```bash
420
+ export POLY_WALLETS='{"main":"0x123...","trading":"0x456...","arb":"0x789..."}'
421
+ ```
422
+ - 每个钱包有自己的名称
423
+ - 方便管理多个策略钱包
424
+
425
+ ### 方式 2: 单钱包 (向后兼容)
426
+ ```bash
427
+ export POLY_PRIVATE_KEY="0x..."
428
+ ```
429
+ - 钱包名称默认为 `default`
430
+
431
+ ### 方式 3: 索引格式
432
+ ```bash
433
+ export POLY_PRIVATE_KEY_1="0x..."
434
+ export POLY_WALLET_NAME_1="main"
435
+ export POLY_PRIVATE_KEY_2="0x..."
436
+ export POLY_WALLET_NAME_2="trading"
437
+ ```
438
+ - 支持最多 10 个钱包
439
+
440
+ ### 多钱包使用示例
441
+ ```
442
+ # 列出所有钱包
443
+ list_wallets
444
+ → { wallets: [{name: "main", address: "0x...", isActive: true}, ...] }
445
+
446
+ # 切换活跃钱包
447
+ set_active_wallet(wallet: "trading")
448
+ → { success: true, activeWallet: {name: "trading", ...} }
449
+
450
+ # 后续交易将使用 trading 钱包
451
+ place_limit_order(...)
452
+ ```
224
453
 
225
454
  ---
226
455
 
@@ -239,6 +468,19 @@ Polymarket CTF **只接受 USDC.e** (Bridged USDC)!
239
468
 
240
469
  ---
241
470
 
471
+ ## 📂 数据存储
472
+
473
+ MCP Server 会在本地存储一些数据:
474
+
475
+ | 文件 | 位置 | 用途 |
476
+ |------|------|------|
477
+ | 内幕候选人 | `~/.polymarket/insider-candidates.json` | 存储已检测的可疑钱包 |
478
+ | 钱包分类 | `~/.polymarket/wallet-classifications.json` | 存储钱包标签和分类 |
479
+ | 标签定义 | `~/.polymarket/tag-definitions.json` | 存储自定义标签 |
480
+ | 内幕信号 | `./data/signals/` | 存储内幕检测信号 |
481
+
482
+ ---
483
+
242
484
  ## 📦 发布
243
485
 
244
486
  ```bash
@@ -253,6 +495,7 @@ pnpm -F @catalyst-team/poly-mcp publish
253
495
  ## 🔗 相关资源
254
496
 
255
497
  - **poly-sdk**: `@catalyst-team/poly-sdk` - Polymarket SDK
498
+ - **smart-money**: `@catalyst-team/smart-money` - 内幕检测算法
256
499
  - **文档**: `docs/01-mcp.md` - 详细设计文档
257
500
  - **Polymarket**: https://polymarket.com
258
501
 
package/dist/errors.d.ts CHANGED
@@ -25,6 +25,17 @@ export declare class McpToolError extends Error {
25
25
  }
26
26
  export declare function validateAddress(address: string): void;
27
27
  export declare function validateConditionId(conditionId: string): void;
28
+ /**
29
+ * Validate outcome string
30
+ *
31
+ * Accepts any non-empty string since markets can have different outcome names:
32
+ * - Yes/No (standard markets)
33
+ * - Up/Down (crypto short-term markets)
34
+ * - Team A/Team B (sports markets)
35
+ * - Custom outcomes (other markets)
36
+ *
37
+ * @param outcome - The outcome name to validate
38
+ */
28
39
  export declare function validateOutcome(outcome: string): void;
29
40
  export declare function validateSide(side: string): void;
30
41
  export declare function validatePrice(price: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,SAAS;IACnB,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,oBAAoB,yBAAyB;IAC7C,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;CAClC;AAED,qBAAa,YAAa,SAAQ,KAAK;IAE5B,IAAI,EAAE,SAAS;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;IAM1C,UAAU;;;;;;;CASX;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAcrD;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAc7D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQrD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ/C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAQjD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQxE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAepD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,SAAS;IACnB,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,oBAAoB,yBAAyB;IAC7C,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;CAClC;AAED,qBAAa,YAAa,SAAQ,KAAK;IAE5B,IAAI,EAAE,SAAS;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;IAM1C,UAAU;;;;;;;CASX;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAcrD;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAc7D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQrD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ/C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAQjD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQxE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAepD"}
package/dist/errors.js CHANGED
@@ -47,9 +47,20 @@ export function validateConditionId(conditionId) {
47
47
  throw new McpToolError(ErrorCode.INVALID_INPUT, 'Condition ID must start with 0x', { conditionId });
48
48
  }
49
49
  }
50
+ /**
51
+ * Validate outcome string
52
+ *
53
+ * Accepts any non-empty string since markets can have different outcome names:
54
+ * - Yes/No (standard markets)
55
+ * - Up/Down (crypto short-term markets)
56
+ * - Team A/Team B (sports markets)
57
+ * - Custom outcomes (other markets)
58
+ *
59
+ * @param outcome - The outcome name to validate
60
+ */
50
61
  export function validateOutcome(outcome) {
51
- if (!['Yes', 'No'].includes(outcome)) {
52
- throw new McpToolError(ErrorCode.INVALID_INPUT, 'Outcome must be "Yes" or "No"', { outcome });
62
+ if (!outcome || typeof outcome !== 'string' || outcome.trim().length === 0) {
63
+ throw new McpToolError(ErrorCode.INVALID_INPUT, 'Outcome must be a non-empty string (e.g., "Yes", "Up", "Team A")', { outcome });
53
64
  }
54
65
  }
55
66
  export function validateSide(side) {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAwCxD,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,MAAM,MAAM,WAAW,GAAG,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,WAAW,CAwKhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,0CAEjC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAE9B,MAAM,EAAE,GAAG,EACX,GAAG,EAAE,aAAa,GACjB,IAAI,CA0BN"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAoFxD,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,MAAM,MAAM,WAAW,GAAG,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,WAAW,CAyZhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,0CAEjC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAE9B,MAAM,EAAE,GAAG,EACX,GAAG,EAAE,aAAa,GACjB,IAAI,CA0BN"}
package/dist/index.js CHANGED
@@ -28,15 +28,25 @@ import { allToolDefinitions,
28
28
  // Guide handlers
29
29
  createGuideHandlers,
30
30
  // Trader handlers
31
- handleGetTraderPositions, handleGetTraderTrades, handleGetTraderProfile, handleGetLeaderboard,
31
+ handleGetTraderPositions, handleGetTraderTrades, handleGetTraderActivity, handleGetTraderProfile, handleGetLeaderboard, handleGetClosedPositions, handleGetAccountValue,
32
32
  // Market handlers
33
- handleGetMarket, handleSearchMarkets, handleGetTrendingMarkets, handleGetMarketTrades,
33
+ handleGetMarket, handleSearchMarkets, handleGetTrendingMarkets, handleGetMarketTrades, handleGetKLines, handleGetPriceHistory, handleDetectArbitrage, handleDetectMarketSignals, handleGetRealtimeSpread, handleScanCryptoShortTermMarkets,
34
34
  // Order handlers
35
35
  handleGetOrderbook, handleGetBestPrices, handleEstimateExecution,
36
36
  // Trade handlers
37
- handlePlaceLimitOrder, handlePlaceMarketOrder, handleCancelOrder, handleGetMyOrders,
38
- // Wallet handlers
39
- handleGetSupportedAssets, handleGetDepositAddresses, handleDepositUsdc, handleCheckAllowances, handleApproveTrading, handleSwap, handleSwapAndDeposit, handleGetTokenBalances, handleGetWalletBalances, handleGetSwapQuote, handleGetAvailablePools, } from './tools/index.js';
37
+ handlePlaceLimitOrder, handlePlaceMarketOrder, handleCancelOrder, handleGetMyOrders, handleCancelAllOrders, handleGetMyTrades, handleGetEarnings, handleGetCurrentRewards, handleCheckOrderScoring,
38
+ // Wallet management handlers
39
+ handleListWallets, handleGetActiveWallet, handleSetActiveWallet,
40
+ // Wallet deposit/swap handlers
41
+ handleGetSupportedAssets, handleGetDepositAddresses, handleDepositUsdc, handleCheckAllowances, handleApproveTrading, handleSwap, handleSwapAndDeposit, handleGetTokenBalances, handleGetWalletBalances, handleGetSwapQuote, handleGetAvailablePools,
42
+ // Onchain (CTF) handlers
43
+ handleCtfSplit, handleCtfMerge, handleCtfRedeem, handleGetPositionBalance, handleGetMarketResolution, handleCheckCtfReady, handleEstimateGas, handleGetGasPrice,
44
+ // Wallet classification handlers
45
+ handleGetTagDefinitions, handleAddTagDefinition, handleGetWalletClassification, handleClassifyWallet, handleGetWalletsByTag, handleRemoveWalletTag,
46
+ // Insider detection handlers
47
+ handleAnalyzeWalletInsider, handleScanInsiderWallets, handleGetInsiderCandidates, handleGetPoliticalMarkets,
48
+ // Insider signals handlers
49
+ handleGetInsiderSignals, handleGetInsiderSignalCount, handleMarkInsiderSignalRead, handleMarkAllInsiderSignalsRead, } from './tools/index.js';
40
50
  // Re-export types
41
51
  export * from './types.js';
42
52
  export * from './errors.js';
@@ -58,10 +68,16 @@ export function createMcpHandler(sdk) {
58
68
  return await handleGetTraderPositions(sdk, args);
59
69
  case 'get_trader_trades':
60
70
  return await handleGetTraderTrades(sdk, args);
71
+ case 'get_trader_activity':
72
+ return await handleGetTraderActivity(sdk, args);
61
73
  case 'get_trader_profile':
62
74
  return await handleGetTraderProfile(sdk, args);
63
75
  case 'get_leaderboard':
64
76
  return await handleGetLeaderboard(sdk, args);
77
+ case 'get_trader_closed_positions':
78
+ return await handleGetClosedPositions(sdk, args);
79
+ case 'get_account_value':
80
+ return await handleGetAccountValue(sdk, args);
65
81
  // Market Tools
66
82
  case 'get_market':
67
83
  return await handleGetMarket(sdk, args);
@@ -71,6 +87,18 @@ export function createMcpHandler(sdk) {
71
87
  return await handleGetTrendingMarkets(sdk, args);
72
88
  case 'get_market_trades':
73
89
  return await handleGetMarketTrades(sdk, args);
90
+ case 'get_klines':
91
+ return await handleGetKLines(sdk, args);
92
+ case 'get_price_history':
93
+ return await handleGetPriceHistory(sdk, args);
94
+ case 'detect_arbitrage':
95
+ return await handleDetectArbitrage(sdk, args);
96
+ case 'detect_market_signals':
97
+ return await handleDetectMarketSignals(sdk, args);
98
+ case 'get_realtime_spread':
99
+ return await handleGetRealtimeSpread(sdk, args);
100
+ case 'scan_crypto_short_term_markets':
101
+ return await handleScanCryptoShortTermMarkets(sdk, args);
74
102
  // Order Tools
75
103
  case 'get_orderbook':
76
104
  return await handleGetOrderbook(sdk, args);
@@ -87,6 +115,23 @@ export function createMcpHandler(sdk) {
87
115
  return await handleCancelOrder(sdk, args);
88
116
  case 'get_my_orders':
89
117
  return await handleGetMyOrders(sdk, args);
118
+ case 'cancel_all_orders':
119
+ return await handleCancelAllOrders(sdk);
120
+ case 'get_my_trades':
121
+ return await handleGetMyTrades(sdk, args);
122
+ case 'get_earnings':
123
+ return await handleGetEarnings(sdk, args);
124
+ case 'get_current_rewards':
125
+ return await handleGetCurrentRewards(sdk);
126
+ case 'check_order_scoring':
127
+ return await handleCheckOrderScoring(sdk, args);
128
+ // Wallet Management Tools
129
+ case 'list_wallets':
130
+ return await handleListWallets();
131
+ case 'get_active_wallet':
132
+ return await handleGetActiveWallet();
133
+ case 'set_active_wallet':
134
+ return await handleSetActiveWallet(args);
90
135
  // Wallet Tools
91
136
  case 'get_supported_deposit_assets':
92
137
  return await handleGetSupportedAssets(sdk, args);
@@ -110,6 +155,54 @@ export function createMcpHandler(sdk) {
110
155
  return await handleGetSwapQuote(sdk, args);
111
156
  case 'get_available_pools':
112
157
  return await handleGetAvailablePools(sdk);
158
+ // Onchain (CTF) Tools
159
+ case 'ctf_split':
160
+ return await handleCtfSplit(args);
161
+ case 'ctf_merge':
162
+ return await handleCtfMerge(args);
163
+ case 'ctf_redeem':
164
+ return await handleCtfRedeem(args);
165
+ case 'get_position_balance':
166
+ return await handleGetPositionBalance(args);
167
+ case 'get_market_resolution':
168
+ return await handleGetMarketResolution(args);
169
+ case 'check_ctf_ready':
170
+ return await handleCheckCtfReady(args);
171
+ case 'estimate_gas':
172
+ return await handleEstimateGas(args);
173
+ case 'get_gas_price':
174
+ return await handleGetGasPrice();
175
+ // Wallet Classification Tools
176
+ case 'get_tag_definitions':
177
+ return await handleGetTagDefinitions(sdk, args);
178
+ case 'add_tag_definition':
179
+ return await handleAddTagDefinition(sdk, args);
180
+ case 'get_wallet_classification':
181
+ return await handleGetWalletClassification(sdk, args);
182
+ case 'classify_wallet':
183
+ return await handleClassifyWallet(sdk, args);
184
+ case 'get_wallets_by_tag':
185
+ return await handleGetWalletsByTag(sdk, args);
186
+ case 'remove_wallet_tag':
187
+ return await handleRemoveWalletTag(sdk, args);
188
+ // Insider Detection Tools
189
+ case 'analyze_wallet_insider':
190
+ return await handleAnalyzeWalletInsider(sdk, args);
191
+ case 'scan_insider_wallets':
192
+ return await handleScanInsiderWallets(sdk, args);
193
+ case 'get_insider_candidates':
194
+ return await handleGetInsiderCandidates(sdk, args);
195
+ case 'get_political_markets':
196
+ return await handleGetPoliticalMarkets(sdk, args);
197
+ // Insider Signals Tools
198
+ case 'get_insider_signals':
199
+ return await handleGetInsiderSignals(sdk, args);
200
+ case 'get_insider_signal_count':
201
+ return await handleGetInsiderSignalCount(sdk, {});
202
+ case 'mark_insider_signal_read':
203
+ return await handleMarkInsiderSignalRead(sdk, args);
204
+ case 'mark_all_insider_signals_read':
205
+ return await handleMarkAllInsiderSignalsRead(sdk, {});
113
206
  default:
114
207
  throw new McpToolError('INVALID_INPUT', `Unknown tool: ${toolName}`);
115
208
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}