@catalyst-team/poly-mcp 0.1.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 +317 -0
- package/dist/errors.d.ts +33 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +86 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +62 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +173 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +17 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +155 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/guide.d.ts +12 -0
- package/dist/tools/guide.d.ts.map +1 -0
- package/dist/tools/guide.js +801 -0
- package/dist/tools/guide.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +27 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/market.d.ts +11 -0
- package/dist/tools/market.d.ts.map +1 -0
- package/dist/tools/market.js +314 -0
- package/dist/tools/market.js.map +1 -0
- package/dist/tools/order.d.ts +10 -0
- package/dist/tools/order.d.ts.map +1 -0
- package/dist/tools/order.js +258 -0
- package/dist/tools/order.js.map +1 -0
- package/dist/tools/trade.d.ts +38 -0
- package/dist/tools/trade.d.ts.map +1 -0
- package/dist/tools/trade.js +313 -0
- package/dist/tools/trade.js.map +1 -0
- package/dist/tools/trader.d.ts +11 -0
- package/dist/tools/trader.d.ts.map +1 -0
- package/dist/tools/trader.js +277 -0
- package/dist/tools/trader.js.map +1 -0
- package/dist/tools/wallet.d.ts +274 -0
- package/dist/tools/wallet.d.ts.map +1 -0
- package/dist/tools/wallet.js +579 -0
- package/dist/tools/wallet.js.map +1 -0
- package/dist/types.d.ts +413 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/docs/01-mcp.md +2075 -0
- package/package.json +55 -0
- package/src/errors.ts +124 -0
- package/src/index.ts +309 -0
- package/src/server.ts +183 -0
- package/src/tools/guide.ts +821 -0
- package/src/tools/index.ts +73 -0
- package/src/tools/market.ts +363 -0
- package/src/tools/order.ts +326 -0
- package/src/tools/trade.ts +417 -0
- package/src/tools/trader.ts +322 -0
- package/src/tools/wallet.ts +683 -0
- package/src/types.ts +472 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,821 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Usage Guide Tool
|
|
3
|
+
*
|
|
4
|
+
* AI agents should call this tool FIRST to understand how to use Polymarket MCP.
|
|
5
|
+
* Returns common use cases and recommended tool combinations.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ToolDefinition } from '../types.js';
|
|
9
|
+
|
|
10
|
+
// Local type to avoid circular import
|
|
11
|
+
type GuideHandler = (args: Record<string, unknown>) => Promise<unknown>;
|
|
12
|
+
|
|
13
|
+
export const guideToolDefinitions: ToolDefinition[] = [
|
|
14
|
+
{
|
|
15
|
+
name: 'get_usage_guide',
|
|
16
|
+
description:
|
|
17
|
+
'🚀 START HERE! Get usage guide and common scenarios for Polymarket MCP. Call this FIRST to understand available tools and recommended workflows.',
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
properties: {
|
|
21
|
+
scenario: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
enum: [
|
|
24
|
+
'overview',
|
|
25
|
+
'smart_money_analysis',
|
|
26
|
+
'trader_deep_dive',
|
|
27
|
+
'wallet_tracking',
|
|
28
|
+
'market_discovery',
|
|
29
|
+
'sports_strategy',
|
|
30
|
+
'copy_trading',
|
|
31
|
+
'deposit_and_auth',
|
|
32
|
+
'trading',
|
|
33
|
+
],
|
|
34
|
+
description:
|
|
35
|
+
'Specific scenario to get detailed guide for. Default: overview',
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
const OVERVIEW_GUIDE = `
|
|
43
|
+
# Polymarket MCP 使用指南
|
|
44
|
+
|
|
45
|
+
## 🎯 核心能力
|
|
46
|
+
|
|
47
|
+
本 MCP 提供 Polymarket 预测市场的完整访问能力:
|
|
48
|
+
|
|
49
|
+
| 类别 | 工具 | 用途 |
|
|
50
|
+
|------|------|------|
|
|
51
|
+
| **市场** | search_markets, get_market, get_orderbook | 发现和分析市场 |
|
|
52
|
+
| **钱包** | get_wallet_positions, get_wallet_trades, get_wallet_pnl | 追踪钱包活动 |
|
|
53
|
+
| **排行榜** | get_leaderboard | 获取聪明钱地址 |
|
|
54
|
+
| **充值** | deposit_usdc, swap, swap_and_deposit | 资金充值和转换 |
|
|
55
|
+
| **授权** | check_allowances, approve_trading | 交易授权管理 |
|
|
56
|
+
| **交易** | create_order, cancel_order, get_open_orders | 执行交易 |
|
|
57
|
+
| **CTF** | check_ctf_ready | 检查 CTF 准备状态 |
|
|
58
|
+
|
|
59
|
+
## 📋 常见场景
|
|
60
|
+
|
|
61
|
+
### 1. 分析聪明钱 (smart_money_analysis)
|
|
62
|
+
\`\`\`
|
|
63
|
+
get_leaderboard → 获取 Top 10 聪明钱
|
|
64
|
+
↓
|
|
65
|
+
get_wallet_positions(address) → 查看每个钱包持仓
|
|
66
|
+
↓
|
|
67
|
+
get_wallet_pnl(address) → 分析盈利模式
|
|
68
|
+
\`\`\`
|
|
69
|
+
|
|
70
|
+
### 2. 深度分析交易者策略 (trader_deep_dive) ⭐ 新增
|
|
71
|
+
\`\`\`
|
|
72
|
+
get_wallet_positions(address) → 持仓分析
|
|
73
|
+
↓
|
|
74
|
+
按 eventSlug 分组 → 识别对冲 vs 单边策略
|
|
75
|
+
↓
|
|
76
|
+
get_wallet_trades(address) → 入场时机分析
|
|
77
|
+
↓
|
|
78
|
+
判断策略类型: 对冲型/方向型/套利型/做市型
|
|
79
|
+
\`\`\`
|
|
80
|
+
|
|
81
|
+
### 3. 跟单交易 (copy_trading) ⭐ 新增
|
|
82
|
+
\`\`\`
|
|
83
|
+
get_leaderboard → 选择跟单目标
|
|
84
|
+
↓
|
|
85
|
+
get_wallet_trades(address) → 监控新交易
|
|
86
|
+
↓
|
|
87
|
+
get_market + get_orderbook → 评估当前价格
|
|
88
|
+
↓
|
|
89
|
+
create_order → 跟进交易
|
|
90
|
+
\`\`\`
|
|
91
|
+
|
|
92
|
+
### 4. 追踪特定钱包 (wallet_tracking)
|
|
93
|
+
\`\`\`
|
|
94
|
+
get_wallet_trades(address, startTime) → 查看今日交易
|
|
95
|
+
↓
|
|
96
|
+
get_wallet_positions(address) → 当前持仓
|
|
97
|
+
↓
|
|
98
|
+
get_market(conditionId) → 深入分析相关市场
|
|
99
|
+
\`\`\`
|
|
100
|
+
|
|
101
|
+
### 5. 发现热门市场 (market_discovery)
|
|
102
|
+
\`\`\`
|
|
103
|
+
search_markets(query, sortBy: 'volume24hr') → 热门市场
|
|
104
|
+
↓
|
|
105
|
+
get_orderbook(conditionId) → 分析流动性
|
|
106
|
+
↓
|
|
107
|
+
get_leaderboard → 查看哪些聪明钱参与
|
|
108
|
+
\`\`\`
|
|
109
|
+
|
|
110
|
+
### 6. 体育市场策略 (sports_strategy)
|
|
111
|
+
\`\`\`
|
|
112
|
+
search_markets(query: 'NBA/NFL/soccer', tag: 'Sports') → 体育市场
|
|
113
|
+
↓
|
|
114
|
+
get_market(conditionId) → 查看赔率和截止时间
|
|
115
|
+
↓
|
|
116
|
+
get_orderbook → 分析价差和深度
|
|
117
|
+
\`\`\`
|
|
118
|
+
|
|
119
|
+
## 💡 Pro Tips
|
|
120
|
+
|
|
121
|
+
1. **总是先用 get_leaderboard** 获取聪明钱地址列表
|
|
122
|
+
2. **用 search_markets 的 tag 参数** 过滤特定类别 (Politics, Sports, Crypto)
|
|
123
|
+
3. **分析持仓时看 avgPrice vs curPrice** 判断盈亏状态
|
|
124
|
+
4. **查看 volume24hr** 判断市场活跃度
|
|
125
|
+
|
|
126
|
+
调用 get_usage_guide(scenario: 'xxx') 获取特定场景的详细指南。
|
|
127
|
+
`;
|
|
128
|
+
|
|
129
|
+
const SMART_MONEY_GUIDE = `
|
|
130
|
+
# 聪明钱分析指南
|
|
131
|
+
|
|
132
|
+
## 🎯 目标
|
|
133
|
+
分析 Top 聪明钱的持仓策略,了解他们如何获利。
|
|
134
|
+
|
|
135
|
+
## 📋 推荐流程
|
|
136
|
+
|
|
137
|
+
### Step 1: 获取聪明钱列表
|
|
138
|
+
\`\`\`
|
|
139
|
+
get_leaderboard(limit: 10)
|
|
140
|
+
\`\`\`
|
|
141
|
+
返回按 PnL 排名的钱包,关注字段:
|
|
142
|
+
- \`address\`: 钱包地址
|
|
143
|
+
- \`pnl\`: 总盈亏
|
|
144
|
+
- \`volume\`: 总交易量
|
|
145
|
+
|
|
146
|
+
### Step 2: 分析每个钱包持仓
|
|
147
|
+
\`\`\`
|
|
148
|
+
get_wallet_positions(address)
|
|
149
|
+
\`\`\`
|
|
150
|
+
关键分析点:
|
|
151
|
+
- \`size\`: 持仓大小
|
|
152
|
+
- \`avgPrice\` vs \`curPrice\`: 判断浮盈/浮亏
|
|
153
|
+
- \`cashPnl\`: 该持仓盈亏
|
|
154
|
+
- \`outcome\`: 押注方向 (Yes/No)
|
|
155
|
+
|
|
156
|
+
### Step 3: 分析交易历史
|
|
157
|
+
\`\`\`
|
|
158
|
+
get_wallet_trades(address, limit: 50)
|
|
159
|
+
\`\`\`
|
|
160
|
+
观察:
|
|
161
|
+
- 买入时机和价格
|
|
162
|
+
- 是否有加仓/减仓行为
|
|
163
|
+
- 偏好的市场类型
|
|
164
|
+
|
|
165
|
+
### Step 4: 计算盈利效率
|
|
166
|
+
\`\`\`
|
|
167
|
+
get_wallet_pnl(address)
|
|
168
|
+
\`\`\`
|
|
169
|
+
关注:
|
|
170
|
+
- 胜率
|
|
171
|
+
- 平均盈亏比
|
|
172
|
+
- ROI
|
|
173
|
+
|
|
174
|
+
## 💡 分析要点
|
|
175
|
+
|
|
176
|
+
1. **跟踪大单**: size > $10,000 的持仓值得关注
|
|
177
|
+
2. **价格优势**: avgPrice 远低于 curPrice 说明入场时机好
|
|
178
|
+
3. **市场选择**: 看他们主要玩哪类市场 (政治/体育/加密)
|
|
179
|
+
4. **风险管理**: 是否分散投资还是集中押注
|
|
180
|
+
|
|
181
|
+
## 📝 示例问题
|
|
182
|
+
|
|
183
|
+
- "Top 10 聪明钱主要在哪些市场有持仓?"
|
|
184
|
+
- "排名第一的钱包是怎么赚钱的?"
|
|
185
|
+
- "聪明钱最近买入了哪些市场?"
|
|
186
|
+
`;
|
|
187
|
+
|
|
188
|
+
const TRADER_DEEP_DIVE_GUIDE = `
|
|
189
|
+
# 交易者深度分析指南
|
|
190
|
+
|
|
191
|
+
## 🎯 目标
|
|
192
|
+
深入分析一个交易者的策略模式,理解他们如何盈利。
|
|
193
|
+
|
|
194
|
+
## 📋 分析框架
|
|
195
|
+
|
|
196
|
+
### Step 1: 识别策略类型
|
|
197
|
+
|
|
198
|
+
通过交易模式判断交易者类型:
|
|
199
|
+
|
|
200
|
+
| 类型 | 特征 | 如何识别 |
|
|
201
|
+
|------|------|---------|
|
|
202
|
+
| **对冲型** | 同一事件买 Yes 和 No | 持仓中同一 eventSlug 有多个方向 |
|
|
203
|
+
| **方向型** | 单边押注 | 只买 Yes 或只买 No |
|
|
204
|
+
| **套利型** | 跨市场价差 | 相关市场有相反方向持仓 |
|
|
205
|
+
| **做市型** | 提供流动性 | 大量小额双向交易 |
|
|
206
|
+
|
|
207
|
+
\`\`\`
|
|
208
|
+
get_wallet_positions(address)
|
|
209
|
+
→ 检查同一 eventSlug 是否有多个持仓
|
|
210
|
+
→ 如果有,很可能是对冲型策略
|
|
211
|
+
\`\`\`
|
|
212
|
+
|
|
213
|
+
### Step 2: 分析入场时机
|
|
214
|
+
|
|
215
|
+
\`\`\`
|
|
216
|
+
get_wallet_trades(address, limit: 100)
|
|
217
|
+
\`\`\`
|
|
218
|
+
|
|
219
|
+
关键分析点:
|
|
220
|
+
- **avgPrice vs curPrice**: 入场价格好不好
|
|
221
|
+
- **交易时间顺序**: 先买什么后买什么
|
|
222
|
+
- **同一事件的多笔交易**: 是否在加仓或对冲
|
|
223
|
+
|
|
224
|
+
### Step 3: 对冲配对检测
|
|
225
|
+
|
|
226
|
+
手动检测方法:
|
|
227
|
+
\`\`\`
|
|
228
|
+
1. 获取所有持仓
|
|
229
|
+
2. 按 eventSlug 分组
|
|
230
|
+
3. 如果同一事件有 Yes 和 No 持仓 = 对冲
|
|
231
|
+
|
|
232
|
+
示例分析:
|
|
233
|
+
positions.filter(p => p.eventSlug === "cs2-xxx-match")
|
|
234
|
+
→ [{ outcome: "Team A", size: 1000, avgPrice: 0.65 },
|
|
235
|
+
{ outcome: "Team B", size: 500, avgPrice: 0.20 }]
|
|
236
|
+
→ 这是对冲!先买 favorite,后买 underdog
|
|
237
|
+
\`\`\`
|
|
238
|
+
|
|
239
|
+
### Step 4: 盈利归因
|
|
240
|
+
|
|
241
|
+
| 盈利来源 | 如何判断 |
|
|
242
|
+
|---------|---------|
|
|
243
|
+
| **时机好** | avgPrice 远低于 curPrice |
|
|
244
|
+
| **对冲锁利** | 两边持仓成本 < 1,无论结果都赚 |
|
|
245
|
+
| **方向正确** | 单边押注,市场走向有利 |
|
|
246
|
+
| **高胜率** | 历史交易多数盈利 |
|
|
247
|
+
|
|
248
|
+
### Step 5: 策略可复制性评估
|
|
249
|
+
|
|
250
|
+
问自己:
|
|
251
|
+
- 这个策略需要什么信息优势?
|
|
252
|
+
- 入场时机是否可以复制?
|
|
253
|
+
- 资金量要求是多少?
|
|
254
|
+
- 是否依赖特定市场类型?
|
|
255
|
+
|
|
256
|
+
## 💡 Black-rabbit 风格分析
|
|
257
|
+
|
|
258
|
+
文章中 Black-rabbit 的策略特征:
|
|
259
|
+
\`\`\`
|
|
260
|
+
1. 市场类型: 电竞比赛 (CS2)
|
|
261
|
+
2. 策略类型: 对冲型
|
|
262
|
+
3. 入场模式:
|
|
263
|
+
- 早期买入 favorite (高概率方)
|
|
264
|
+
- 等待赔率极化
|
|
265
|
+
- 后期买入 underdog (极低价格)
|
|
266
|
+
4. 盈利来源: 赔率波动,不是结果预测
|
|
267
|
+
\`\`\`
|
|
268
|
+
|
|
269
|
+
要识别这种策略:
|
|
270
|
+
\`\`\`
|
|
271
|
+
get_wallet_trades(address)
|
|
272
|
+
→ 按 eventSlug 分组
|
|
273
|
+
→ 检查交易时间顺序
|
|
274
|
+
→ 如果: 先买高概率方,后买低概率方 = 对冲策略
|
|
275
|
+
\`\`\`
|
|
276
|
+
|
|
277
|
+
## 📝 示例问题
|
|
278
|
+
|
|
279
|
+
- "这个交易者是什么策略类型?"
|
|
280
|
+
- "他的盈利主要来自哪里?"
|
|
281
|
+
- "他的策略可以复制吗?"
|
|
282
|
+
- "他在这场比赛是怎么操作的?"
|
|
283
|
+
`;
|
|
284
|
+
|
|
285
|
+
const COPY_TRADING_GUIDE = `
|
|
286
|
+
# 跟单交易指南
|
|
287
|
+
|
|
288
|
+
## 🎯 目标
|
|
289
|
+
跟随聪明钱的交易策略。
|
|
290
|
+
|
|
291
|
+
## ⚠️ 风险提示
|
|
292
|
+
|
|
293
|
+
跟单交易有固有风险:
|
|
294
|
+
- 你看到的是延迟信息,不是实时
|
|
295
|
+
- 聪明钱可能有你不知道的信息来源
|
|
296
|
+
- 市场条件可能已经变化
|
|
297
|
+
- 入场价格可能已经不理想
|
|
298
|
+
|
|
299
|
+
## 📋 跟单工作流
|
|
300
|
+
|
|
301
|
+
### Step 1: 选择跟单目标
|
|
302
|
+
|
|
303
|
+
\`\`\`
|
|
304
|
+
get_leaderboard(limit: 20)
|
|
305
|
+
\`\`\`
|
|
306
|
+
|
|
307
|
+
筛选标准:
|
|
308
|
+
- **高 PnL**: 证明能赚钱
|
|
309
|
+
- **高 Volume**: 证明是活跃交易者
|
|
310
|
+
- **稳定性**: 不是靠单笔暴赚
|
|
311
|
+
|
|
312
|
+
### Step 2: 理解策略类型
|
|
313
|
+
|
|
314
|
+
\`\`\`
|
|
315
|
+
get_usage_guide(scenario: "trader_deep_dive")
|
|
316
|
+
\`\`\`
|
|
317
|
+
|
|
318
|
+
确保你理解他的策略再跟单!
|
|
319
|
+
|
|
320
|
+
### Step 3: 监控新交易
|
|
321
|
+
|
|
322
|
+
\`\`\`
|
|
323
|
+
// 定期检查
|
|
324
|
+
get_wallet_trades(address, limit: 10)
|
|
325
|
+
→ 对比上次检查,发现新交易
|
|
326
|
+
\`\`\`
|
|
327
|
+
|
|
328
|
+
### Step 4: 评估是否跟进
|
|
329
|
+
|
|
330
|
+
发现新交易后,问自己:
|
|
331
|
+
- 当前价格还有利吗?
|
|
332
|
+
- 这笔交易符合他一贯的策略吗?
|
|
333
|
+
- 市场流动性足够吗?
|
|
334
|
+
|
|
335
|
+
\`\`\`
|
|
336
|
+
get_market(conditionId)
|
|
337
|
+
get_orderbook(conditionId)
|
|
338
|
+
\`\`\`
|
|
339
|
+
|
|
340
|
+
### Step 5: 执行跟单
|
|
341
|
+
|
|
342
|
+
\`\`\`
|
|
343
|
+
// 确认价格可接受后
|
|
344
|
+
create_order(
|
|
345
|
+
conditionId: "...",
|
|
346
|
+
outcome: "Yes", // 和目标交易者一致
|
|
347
|
+
side: "BUY",
|
|
348
|
+
price: 0.55, // 限价,不要市价追高
|
|
349
|
+
size: 100
|
|
350
|
+
)
|
|
351
|
+
\`\`\`
|
|
352
|
+
|
|
353
|
+
## 💡 跟单策略建议
|
|
354
|
+
|
|
355
|
+
### 保守跟单
|
|
356
|
+
- 只跟 Top 5 交易者
|
|
357
|
+
- 只跟他们的大单 (>$1000)
|
|
358
|
+
- 设置严格止损
|
|
359
|
+
|
|
360
|
+
### 选择性跟单
|
|
361
|
+
- 只跟特定类型市场 (如体育)
|
|
362
|
+
- 只跟他们的对冲策略
|
|
363
|
+
- 避免跟方向性赌博
|
|
364
|
+
|
|
365
|
+
### 反向跟单
|
|
366
|
+
- 有时候跟"聪明钱的对手"更赚钱
|
|
367
|
+
- 特别是市场过度反应时
|
|
368
|
+
|
|
369
|
+
## 📊 跟单检查清单
|
|
370
|
+
|
|
371
|
+
\`\`\`
|
|
372
|
+
□ 目标交易者策略类型已理解
|
|
373
|
+
□ 当前入场价格可接受 (和他的 avgPrice 对比)
|
|
374
|
+
□ 市场流动性足够
|
|
375
|
+
□ 仓位大小在风险承受范围内
|
|
376
|
+
□ 有退出计划 (止盈/止损)
|
|
377
|
+
\`\`\`
|
|
378
|
+
|
|
379
|
+
## 📝 示例问题
|
|
380
|
+
|
|
381
|
+
- "排名第一的交易者最近买了什么?"
|
|
382
|
+
- "我应该跟着买入这个市场吗?"
|
|
383
|
+
- "当前价格比他的入场价高多少?"
|
|
384
|
+
- "有哪些活跃交易者值得跟单?"
|
|
385
|
+
`;
|
|
386
|
+
|
|
387
|
+
const WALLET_TRACKING_GUIDE = `
|
|
388
|
+
# 钱包追踪指南
|
|
389
|
+
|
|
390
|
+
## 🎯 目标
|
|
391
|
+
追踪特定钱包的交易活动和持仓变化。
|
|
392
|
+
|
|
393
|
+
## 📋 推荐流程
|
|
394
|
+
|
|
395
|
+
### 查看今日交易
|
|
396
|
+
\`\`\`
|
|
397
|
+
get_wallet_trades(
|
|
398
|
+
address: "0x...",
|
|
399
|
+
startTime: 今天0点的timestamp
|
|
400
|
+
)
|
|
401
|
+
\`\`\`
|
|
402
|
+
|
|
403
|
+
### 查看当前持仓
|
|
404
|
+
\`\`\`
|
|
405
|
+
get_wallet_positions(address: "0x...")
|
|
406
|
+
\`\`\`
|
|
407
|
+
|
|
408
|
+
### 深入分析市场
|
|
409
|
+
\`\`\`
|
|
410
|
+
get_market(conditionId) // 从持仓中获取
|
|
411
|
+
get_orderbook(conditionId)
|
|
412
|
+
\`\`\`
|
|
413
|
+
|
|
414
|
+
## 💡 分析要点
|
|
415
|
+
|
|
416
|
+
1. **交易频率**: 高频交易者 vs 长期持有者
|
|
417
|
+
2. **买卖方向**: 最近是在买入还是卖出
|
|
418
|
+
3. **市场偏好**: 主要参与哪类市场
|
|
419
|
+
4. **时机把握**: 是否在关键时点交易
|
|
420
|
+
|
|
421
|
+
## 📝 示例问题
|
|
422
|
+
|
|
423
|
+
- "这个钱包今天有哪些交易?"
|
|
424
|
+
- "这个钱包目前持有哪些仓位?"
|
|
425
|
+
- "这个钱包最近的交易表现如何?"
|
|
426
|
+
`;
|
|
427
|
+
|
|
428
|
+
const MARKET_DISCOVERY_GUIDE = `
|
|
429
|
+
# 市场发现指南
|
|
430
|
+
|
|
431
|
+
## 🎯 目标
|
|
432
|
+
发现值得关注的热门市场,并分析聪明钱参与情况。
|
|
433
|
+
|
|
434
|
+
## 📋 推荐流程
|
|
435
|
+
|
|
436
|
+
### Step 1: 搜索热门市场
|
|
437
|
+
\`\`\`
|
|
438
|
+
search_markets(
|
|
439
|
+
sortBy: 'volume24hr', // 按24h交易量排序
|
|
440
|
+
limit: 20
|
|
441
|
+
)
|
|
442
|
+
\`\`\`
|
|
443
|
+
|
|
444
|
+
或按类别搜索:
|
|
445
|
+
\`\`\`
|
|
446
|
+
search_markets(
|
|
447
|
+
query: 'Trump', // 关键词
|
|
448
|
+
tag: 'Politics' // 分类标签
|
|
449
|
+
)
|
|
450
|
+
\`\`\`
|
|
451
|
+
|
|
452
|
+
### Step 2: 分析市场深度
|
|
453
|
+
\`\`\`
|
|
454
|
+
get_orderbook(conditionId)
|
|
455
|
+
\`\`\`
|
|
456
|
+
关注:
|
|
457
|
+
- bid/ask spread: 价差越小流动性越好
|
|
458
|
+
- 深度: 大单能否成交
|
|
459
|
+
|
|
460
|
+
### Step 3: 查看聪明钱参与
|
|
461
|
+
\`\`\`
|
|
462
|
+
get_leaderboard(limit: 20)
|
|
463
|
+
↓
|
|
464
|
+
对每个地址: get_wallet_positions(address)
|
|
465
|
+
↓
|
|
466
|
+
过滤: 找出持有该市场的聪明钱
|
|
467
|
+
\`\`\`
|
|
468
|
+
|
|
469
|
+
## 💡 筛选标准
|
|
470
|
+
|
|
471
|
+
1. **volume24hr > $100k**: 活跃市场
|
|
472
|
+
2. **spread < 2%**: 流动性好
|
|
473
|
+
3. **聪明钱参与 > 3个**: 有信号价值
|
|
474
|
+
4. **距离截止 > 24h**: 还有交易时间
|
|
475
|
+
|
|
476
|
+
## 📝 示例问题
|
|
477
|
+
|
|
478
|
+
- "最近24小时哪些市场交易量最大?"
|
|
479
|
+
- "有哪些政治类市场值得关注?"
|
|
480
|
+
- "聪明钱最近在买入哪些市场?"
|
|
481
|
+
`;
|
|
482
|
+
|
|
483
|
+
const SPORTS_STRATEGY_GUIDE = `
|
|
484
|
+
# 体育市场策略指南
|
|
485
|
+
|
|
486
|
+
## 🎯 目标
|
|
487
|
+
制定体育市场投资策略。
|
|
488
|
+
|
|
489
|
+
## 📋 推荐流程
|
|
490
|
+
|
|
491
|
+
### Step 1: 发现体育市场
|
|
492
|
+
\`\`\`
|
|
493
|
+
search_markets(
|
|
494
|
+
tag: 'Sports',
|
|
495
|
+
query: 'NBA' | 'NFL' | 'Soccer'
|
|
496
|
+
)
|
|
497
|
+
\`\`\`
|
|
498
|
+
|
|
499
|
+
### Step 2: 分析赔率
|
|
500
|
+
\`\`\`
|
|
501
|
+
get_market(conditionId)
|
|
502
|
+
\`\`\`
|
|
503
|
+
关注:
|
|
504
|
+
- \`tokens[].price\`: Yes/No 价格即为隐含概率
|
|
505
|
+
- \`endDate\`: 比赛时间
|
|
506
|
+
- \`volume\`: 市场关注度
|
|
507
|
+
|
|
508
|
+
### Step 3: 对比传统赔率
|
|
509
|
+
\`\`\`
|
|
510
|
+
Polymarket Yes 价格 0.65 → 隐含胜率 65%
|
|
511
|
+
传统博彩赔率 1.8 → 隐含胜率 55%
|
|
512
|
+
→ 套利空间: 10%
|
|
513
|
+
\`\`\`
|
|
514
|
+
|
|
515
|
+
### Step 4: 分析流动性
|
|
516
|
+
\`\`\`
|
|
517
|
+
get_orderbook(conditionId)
|
|
518
|
+
\`\`\`
|
|
519
|
+
确保能以期望价格成交。
|
|
520
|
+
|
|
521
|
+
## 💡 体育市场特点
|
|
522
|
+
|
|
523
|
+
1. **时效性强**: 比赛开始前市场关闭
|
|
524
|
+
2. **信息不对称**: 伤病、阵容等内部消息
|
|
525
|
+
3. **波动大**: 赛前消息会剧烈影响价格
|
|
526
|
+
4. **流动性变化**: 临近比赛流动性增加
|
|
527
|
+
|
|
528
|
+
## 📊 策略建议
|
|
529
|
+
|
|
530
|
+
### 价值投注
|
|
531
|
+
- 寻找 Polymarket vs 传统赔率的差异
|
|
532
|
+
- 差异 > 5% 可能有价值
|
|
533
|
+
|
|
534
|
+
### 对冲策略
|
|
535
|
+
- Polymarket 买 Yes
|
|
536
|
+
- 传统博彩买 No (如果赔率更好)
|
|
537
|
+
- 锁定利润
|
|
538
|
+
|
|
539
|
+
### 信息优势
|
|
540
|
+
- 关注伤病报告
|
|
541
|
+
- 关注阵容变化
|
|
542
|
+
- 关注天气影响 (户外运动)
|
|
543
|
+
|
|
544
|
+
## 📝 示例问题
|
|
545
|
+
|
|
546
|
+
- "今天有哪些 NBA 比赛可以投注?"
|
|
547
|
+
- "这场比赛的赔率合理吗?"
|
|
548
|
+
- "哪些体育市场有套利机会?"
|
|
549
|
+
`;
|
|
550
|
+
|
|
551
|
+
const DEPOSIT_AND_AUTH_GUIDE = `
|
|
552
|
+
# 充值与授权指南
|
|
553
|
+
|
|
554
|
+
## 🎯 目标
|
|
555
|
+
准备好钱包进行 Polymarket 交易。
|
|
556
|
+
|
|
557
|
+
## ⚠️ 关键概念:USDC.e vs Native USDC
|
|
558
|
+
|
|
559
|
+
\`\`\`
|
|
560
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
561
|
+
│ Polymarket CTF 只接受 USDC.e (Bridged USDC) │
|
|
562
|
+
│ │
|
|
563
|
+
│ USDC.e: 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 ✅ │
|
|
564
|
+
│ Native USDC: 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 ❌ │
|
|
565
|
+
│ │
|
|
566
|
+
│ 常见错误:钱包显示有 USDC,但 CTF 操作失败 │
|
|
567
|
+
│ 原因:你有的是 Native USDC,不是 USDC.e │
|
|
568
|
+
└─────────────────────────────────────────────────────────────┘
|
|
569
|
+
\`\`\`
|
|
570
|
+
|
|
571
|
+
## 📋 完整准备流程
|
|
572
|
+
|
|
573
|
+
### Step 1: 检查钱包状态
|
|
574
|
+
\`\`\`
|
|
575
|
+
check_ctf_ready(amount: "100")
|
|
576
|
+
\`\`\`
|
|
577
|
+
返回:
|
|
578
|
+
- \`usdcEBalance\`: USDC.e 余额 (用于 CTF)
|
|
579
|
+
- \`nativeUsdcBalance\`: Native USDC 余额 (不能用于 CTF)
|
|
580
|
+
- \`maticBalance\`: MATIC 余额 (用于 gas)
|
|
581
|
+
- \`ready\`: 是否准备就绪
|
|
582
|
+
- \`suggestion\`: 如果未就绪,给出建议
|
|
583
|
+
|
|
584
|
+
### Step 2: 充值 USDC.e
|
|
585
|
+
|
|
586
|
+
Polymarket CTF 交易需要 USDC.e (bridged USDC),不是 Native USDC。
|
|
587
|
+
|
|
588
|
+
#### 方式 A: MATIC → USDC → deposit (推荐)
|
|
589
|
+
最可靠的路径,分两步完成:
|
|
590
|
+
\`\`\`
|
|
591
|
+
// Step 1: Swap MATIC 到 Native USDC (QuickSwap V3)
|
|
592
|
+
swap(
|
|
593
|
+
tokenIn: "MATIC",
|
|
594
|
+
tokenOut: "USDC",
|
|
595
|
+
amount: "50"
|
|
596
|
+
)
|
|
597
|
+
|
|
598
|
+
// Step 2: Deposit USDC,Bridge 自动转成 USDC.e (1-5分钟)
|
|
599
|
+
deposit_usdc(
|
|
600
|
+
amount: 25,
|
|
601
|
+
token: "NATIVE_USDC"
|
|
602
|
+
)
|
|
603
|
+
\`\`\`
|
|
604
|
+
|
|
605
|
+
#### 方式 B: 已有 Native USDC
|
|
606
|
+
如果钱包已有 Native USDC,直接 deposit:
|
|
607
|
+
\`\`\`
|
|
608
|
+
deposit_usdc(
|
|
609
|
+
amount: 100,
|
|
610
|
+
token: "NATIVE_USDC"
|
|
611
|
+
)
|
|
612
|
+
\`\`\`
|
|
613
|
+
Bridge 会自动将 Native USDC 转换为 USDC.e。
|
|
614
|
+
|
|
615
|
+
#### 方式 C: 跨链充值
|
|
616
|
+
从其他链充值,Bridge 自动处理转换:
|
|
617
|
+
\`\`\`
|
|
618
|
+
get_deposit_addresses() // 获取充值地址
|
|
619
|
+
\`\`\`
|
|
620
|
+
支持的链:Ethereum, Arbitrum, Base, Optimism, Solana, Bitcoin
|
|
621
|
+
|
|
622
|
+
#### ✅ 可用的 Swap 路径 (Quoter 验证)
|
|
623
|
+
|
|
624
|
+
QuickSwap V3 上有 15 个流动性池,主要路径:
|
|
625
|
+
\`\`\`
|
|
626
|
+
MATIC → USDC ✅ 推荐
|
|
627
|
+
MATIC → USDC_E ✅ 可直接 swap 到 USDC.e
|
|
628
|
+
USDC → USDC_E ✅ 几乎 1:1 (稳定币对)
|
|
629
|
+
MATIC → USDT ✅
|
|
630
|
+
MATIC → DAI ✅
|
|
631
|
+
MATIC → WETH ✅
|
|
632
|
+
\`\`\`
|
|
633
|
+
|
|
634
|
+
💡 使用 \`get_swap_quote\` 检查路径可用性和预估输出金额。
|
|
635
|
+
💡 使用 \`get_available_pools\` 查看所有 15 个可用的交易对。
|
|
636
|
+
|
|
637
|
+
#### ⚠️ 流动性注意事项
|
|
638
|
+
- 大额交易可能有较高滑点
|
|
639
|
+
- 建议先用 \`get_swap_quote\` 检查预估输出
|
|
640
|
+
- MATIC/USDC 和 USDC/USDC_E 流动性最好
|
|
641
|
+
|
|
642
|
+
#### 💡 检查 Swap 路径可用性
|
|
643
|
+
|
|
644
|
+
使用 \`get_swap_quote\` 在执行前检查路径是否可行:
|
|
645
|
+
\`\`\`
|
|
646
|
+
get_swap_quote(
|
|
647
|
+
tokenIn: "MATIC",
|
|
648
|
+
tokenOut: "USDC",
|
|
649
|
+
amount: "10"
|
|
650
|
+
)
|
|
651
|
+
// 返回: { possible: true, route: ["MATIC", "USDC"], amountOut: "3.75" }
|
|
652
|
+
\`\`\`
|
|
653
|
+
|
|
654
|
+
使用 \`get_available_pools\` 查看所有可用的交易对:
|
|
655
|
+
\`\`\`
|
|
656
|
+
get_available_pools()
|
|
657
|
+
// 返回: { pools: [{ pair: "MATIC/USDC", ... }], totalPools: N }
|
|
658
|
+
\`\`\`
|
|
659
|
+
|
|
660
|
+
这些工具无需私钥,只需链上读取操作。
|
|
661
|
+
|
|
662
|
+
### Step 3: 检查授权状态
|
|
663
|
+
\`\`\`
|
|
664
|
+
check_allowances()
|
|
665
|
+
\`\`\`
|
|
666
|
+
返回每个合约的授权状态:
|
|
667
|
+
- CTF Exchange
|
|
668
|
+
- Neg Risk CTF Exchange
|
|
669
|
+
- Neg Risk Adapter
|
|
670
|
+
- Conditional Tokens
|
|
671
|
+
|
|
672
|
+
### Step 4: 设置授权
|
|
673
|
+
\`\`\`
|
|
674
|
+
approve_trading()
|
|
675
|
+
\`\`\`
|
|
676
|
+
一键授权所有必要的合约:
|
|
677
|
+
- ERC20 授权 (USDC.e)
|
|
678
|
+
- ERC1155 授权 (条件代币)
|
|
679
|
+
|
|
680
|
+
## 💡 授权详解
|
|
681
|
+
|
|
682
|
+
### 需要授权的合约
|
|
683
|
+
|
|
684
|
+
| 合约 | 地址 | 用途 |
|
|
685
|
+
|------|------|------|
|
|
686
|
+
| CTF Exchange | 0x4bFb41d5B... | 普通市场交易 |
|
|
687
|
+
| Neg Risk CTF Exchange | 0xC5d563A36... | 负风险市场交易 |
|
|
688
|
+
| Neg Risk Adapter | 0xd91E80cF2... | 负风险适配 |
|
|
689
|
+
| Conditional Tokens | 0x4D97DCd97... | CTF 操作 |
|
|
690
|
+
|
|
691
|
+
### 授权类型
|
|
692
|
+
|
|
693
|
+
1. **ERC20 授权**: 允许合约使用你的 USDC.e
|
|
694
|
+
2. **ERC1155 授权**: 允许合约转移你的条件代币
|
|
695
|
+
|
|
696
|
+
## 📊 状态检查流程图
|
|
697
|
+
|
|
698
|
+
\`\`\`
|
|
699
|
+
check_ctf_ready()
|
|
700
|
+
│
|
|
701
|
+
├─ ready: true ──→ check_allowances()
|
|
702
|
+
│ │
|
|
703
|
+
│ ├─ all approved ──→ 可以交易!
|
|
704
|
+
│ │
|
|
705
|
+
│ └─ not approved ──→ approve_trading()
|
|
706
|
+
│
|
|
707
|
+
└─ ready: false
|
|
708
|
+
│
|
|
709
|
+
├─ 缺 USDC.e ──→ deposit_usdc() 或 手动转换
|
|
710
|
+
│
|
|
711
|
+
└─ 缺 MATIC ──→ 需要充值 MATIC 作为 gas
|
|
712
|
+
\`\`\`
|
|
713
|
+
|
|
714
|
+
## ⚠️ 常见问题
|
|
715
|
+
|
|
716
|
+
### Q: 为什么显示 USDC 余额为 0?
|
|
717
|
+
A: 你可能有 Native USDC,不是 USDC.e。用 check_ctf_ready() 查看两种余额。
|
|
718
|
+
|
|
719
|
+
### Q: 授权需要 gas 吗?
|
|
720
|
+
A: 是的,每次授权需要少量 MATIC (约 $0.01)。
|
|
721
|
+
|
|
722
|
+
### Q: 授权是一次性的吗?
|
|
723
|
+
A: 是的,授权后除非撤销,否则一直有效。
|
|
724
|
+
|
|
725
|
+
### Q: 可以只授权部分金额吗?
|
|
726
|
+
A: 可以,但推荐授权无限额度,避免每次交易都要重新授权。
|
|
727
|
+
|
|
728
|
+
## 📝 示例问题
|
|
729
|
+
|
|
730
|
+
- "我的钱包准备好交易了吗?"
|
|
731
|
+
- "帮我检查授权状态"
|
|
732
|
+
- "我需要充值多少才能开始交易?"
|
|
733
|
+
- "为什么我的 USDC 余额显示为 0?"
|
|
734
|
+
`;
|
|
735
|
+
|
|
736
|
+
const TRADING_GUIDE = `
|
|
737
|
+
# 交易操作指南
|
|
738
|
+
|
|
739
|
+
## ⚠️ 前置条件
|
|
740
|
+
|
|
741
|
+
### 1. 检查钱包准备状态
|
|
742
|
+
\`\`\`
|
|
743
|
+
check_ctf_ready(amount: "100")
|
|
744
|
+
\`\`\`
|
|
745
|
+
确保有:
|
|
746
|
+
- USDC.e (不是 Native USDC!)
|
|
747
|
+
- MATIC (gas 费)
|
|
748
|
+
|
|
749
|
+
### 2. 检查授权
|
|
750
|
+
\`\`\`
|
|
751
|
+
check_allowances()
|
|
752
|
+
\`\`\`
|
|
753
|
+
如未授权:
|
|
754
|
+
\`\`\`
|
|
755
|
+
approve_trading()
|
|
756
|
+
\`\`\`
|
|
757
|
+
|
|
758
|
+
## 📋 交易流程
|
|
759
|
+
|
|
760
|
+
### 创建限价单
|
|
761
|
+
\`\`\`
|
|
762
|
+
create_order(
|
|
763
|
+
tokenId: "...", // Yes 或 No 的 tokenId
|
|
764
|
+
side: "BUY",
|
|
765
|
+
price: 0.55, // 限价
|
|
766
|
+
size: 100 // 数量
|
|
767
|
+
)
|
|
768
|
+
\`\`\`
|
|
769
|
+
|
|
770
|
+
### 查看挂单
|
|
771
|
+
\`\`\`
|
|
772
|
+
get_open_orders()
|
|
773
|
+
\`\`\`
|
|
774
|
+
|
|
775
|
+
### 取消订单
|
|
776
|
+
\`\`\`
|
|
777
|
+
cancel_order(orderId: "...")
|
|
778
|
+
\`\`\`
|
|
779
|
+
|
|
780
|
+
## 💡 交易技巧
|
|
781
|
+
|
|
782
|
+
1. **先看 orderbook**: 了解当前价格和深度
|
|
783
|
+
2. **用限价单**: 避免滑点
|
|
784
|
+
3. **小额测试**: 先用小金额验证流程
|
|
785
|
+
4. **注意 gas**: Polygon 网络 gas 费通常很低
|
|
786
|
+
|
|
787
|
+
## ⚠️ 重要提醒
|
|
788
|
+
|
|
789
|
+
- **USDC.e vs Native USDC**: CTF 只接受 USDC.e
|
|
790
|
+
- **私钥安全**: 不要泄露私钥
|
|
791
|
+
- **风险管理**: 不要投入无法承受损失的资金
|
|
792
|
+
`;
|
|
793
|
+
|
|
794
|
+
export function createGuideHandlers(): Record<string, GuideHandler> {
|
|
795
|
+
return {
|
|
796
|
+
get_usage_guide: async (args: Record<string, unknown>) => {
|
|
797
|
+
const scenario = (args.scenario as string) || 'overview';
|
|
798
|
+
|
|
799
|
+
const guides: Record<string, string> = {
|
|
800
|
+
overview: OVERVIEW_GUIDE,
|
|
801
|
+
smart_money_analysis: SMART_MONEY_GUIDE,
|
|
802
|
+
trader_deep_dive: TRADER_DEEP_DIVE_GUIDE,
|
|
803
|
+
wallet_tracking: WALLET_TRACKING_GUIDE,
|
|
804
|
+
market_discovery: MARKET_DISCOVERY_GUIDE,
|
|
805
|
+
sports_strategy: SPORTS_STRATEGY_GUIDE,
|
|
806
|
+
copy_trading: COPY_TRADING_GUIDE,
|
|
807
|
+
deposit_and_auth: DEPOSIT_AND_AUTH_GUIDE,
|
|
808
|
+
trading: TRADING_GUIDE,
|
|
809
|
+
};
|
|
810
|
+
|
|
811
|
+
const guide = guides[scenario] || OVERVIEW_GUIDE;
|
|
812
|
+
|
|
813
|
+
return {
|
|
814
|
+
scenario,
|
|
815
|
+
guide,
|
|
816
|
+
available_scenarios: Object.keys(guides),
|
|
817
|
+
tip: '调用 get_usage_guide(scenario: "xxx") 获取其他场景的详细指南',
|
|
818
|
+
};
|
|
819
|
+
},
|
|
820
|
+
};
|
|
821
|
+
}
|