@catalyst-team/poly-mcp 0.1.1 → 0.1.2

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 +240 -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
@@ -0,0 +1,64 @@
1
+ /**
2
+ * SDK Instance Management
3
+ *
4
+ * Provides singleton instances of poly-sdk services for use across MCP tools.
5
+ * This ensures consistent configuration and efficient resource usage.
6
+ */
7
+ import { MarketService, RateLimiter, createUnifiedCache, } from '@catalyst-team/poly-sdk';
8
+ // ===== Singleton Instances =====
9
+ let marketService = null;
10
+ let rateLimiter = null;
11
+ let cache = null;
12
+ /**
13
+ * Get or create shared RateLimiter instance
14
+ */
15
+ function getRateLimiter() {
16
+ if (!rateLimiter) {
17
+ rateLimiter = new RateLimiter();
18
+ }
19
+ return rateLimiter;
20
+ }
21
+ /**
22
+ * Get or create shared UnifiedCache instance
23
+ */
24
+ function getCache() {
25
+ if (!cache) {
26
+ cache = createUnifiedCache();
27
+ }
28
+ return cache;
29
+ }
30
+ /**
31
+ * Get or create shared MarketService instance
32
+ *
33
+ * The MarketService provides:
34
+ * - CLOB market data (getClobMarket)
35
+ * - Token resolution (resolveMarketTokens)
36
+ * - Orderbook data
37
+ * - K-Line aggregation
38
+ *
39
+ * Note: This creates a read-only MarketService without GammaApiClient or DataApiClient.
40
+ * For full functionality, use the PolymarketSDK directly.
41
+ */
42
+ export function getMarketService() {
43
+ if (!marketService) {
44
+ // Create MarketService with minimal dependencies
45
+ // GammaApiClient and DataApiClient are optional for basic token resolution
46
+ marketService = new MarketService(undefined, // gammaApi - not needed for token resolution
47
+ undefined, // dataApi - not needed for token resolution
48
+ getRateLimiter(), getCache(), undefined, // config - uses default CLOB settings
49
+ undefined // binanceService - not needed for token resolution
50
+ );
51
+ }
52
+ return marketService;
53
+ }
54
+ /**
55
+ * Clear all cached SDK instances
56
+ *
57
+ * Useful for testing or when configuration changes.
58
+ */
59
+ export function clearSdkInstances() {
60
+ marketService = null;
61
+ rateLimiter = null;
62
+ cache = null;
63
+ }
64
+ //# sourceMappingURL=sdk-instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-instance.js","sourceRoot":"","sources":["../src/sdk-instance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,WAAW,EACX,kBAAkB,GAEnB,MAAM,yBAAyB,CAAC;AAEjC,kCAAkC;AAElC,IAAI,aAAa,GAAyB,IAAI,CAAC;AAC/C,IAAI,WAAW,GAAuB,IAAI,CAAC;AAC3C,IAAI,KAAK,GAAwB,IAAI,CAAC;AAEtC;;GAEG;AACH,SAAS,cAAc;IACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ;IACf,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,kBAAkB,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,iDAAiD;QACjD,2EAA2E;QAC3E,aAAa,GAAG,IAAI,aAAa,CAC/B,SAAS,EAAE,6CAA6C;QACxD,SAAS,EAAE,4CAA4C;QACvD,cAAc,EAAE,EAChB,QAAQ,EAAE,EACV,SAAS,EAAE,sCAAsC;QACjD,SAAS,CAAE,mDAAmD;SAC/D,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,aAAa,GAAG,IAAI,CAAC;IACrB,WAAW,GAAG,IAAI,CAAC;IACnB,KAAK,GAAG,IAAI,CAAC;AACf,CAAC"}
package/dist/server.d.ts CHANGED
@@ -10,7 +10,19 @@
10
10
  * node dist/server.js
11
11
  *
12
12
  * Configuration via environment variables:
13
- * - POLY_PRIVATE_KEY: Wallet private key (required for trading, API credentials are derived automatically)
13
+ *
14
+ * Single wallet (backward compatible):
15
+ * - POLY_PRIVATE_KEY: Wallet private key
16
+ *
17
+ * Multiple wallets (recommended):
18
+ * - POLY_WALLETS: JSON object with named wallets
19
+ * Example: POLY_WALLETS='{"main":"0x...","trading":"0x...","arb":"0x..."}'
20
+ *
21
+ * Indexed wallets:
22
+ * - POLY_PRIVATE_KEY_1, POLY_PRIVATE_KEY_2, etc.
23
+ * - POLY_WALLET_NAME_1, POLY_WALLET_NAME_2, etc. (optional names)
24
+ *
25
+ * Other options:
14
26
  * - POLY_CHAIN_ID: Chain ID (137 for mainnet, 80002 for testnet, default: 137)
15
27
  */
16
28
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG"}
package/dist/server.js CHANGED
@@ -10,34 +10,28 @@
10
10
  * node dist/server.js
11
11
  *
12
12
  * Configuration via environment variables:
13
- * - POLY_PRIVATE_KEY: Wallet private key (required for trading, API credentials are derived automatically)
13
+ *
14
+ * Single wallet (backward compatible):
15
+ * - POLY_PRIVATE_KEY: Wallet private key
16
+ *
17
+ * Multiple wallets (recommended):
18
+ * - POLY_WALLETS: JSON object with named wallets
19
+ * Example: POLY_WALLETS='{"main":"0x...","trading":"0x...","arb":"0x..."}'
20
+ *
21
+ * Indexed wallets:
22
+ * - POLY_PRIVATE_KEY_1, POLY_PRIVATE_KEY_2, etc.
23
+ * - POLY_WALLET_NAME_1, POLY_WALLET_NAME_2, etc. (optional names)
24
+ *
25
+ * Other options:
14
26
  * - POLY_CHAIN_ID: Chain ID (137 for mainnet, 80002 for testnet, default: 137)
15
27
  */
16
28
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
17
29
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
18
30
  import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
19
- import { Wallet } from 'ethers';
20
31
  import { PolymarketSDK } from '@catalyst-team/poly-sdk';
21
32
  import { allToolDefinitions } from './tools/index.js';
22
33
  import { createMcpHandler } from './index.js';
23
- /**
24
- * Create a wallet signer from private key if available
25
- */
26
- function createSigner() {
27
- const privateKey = process.env.POLY_PRIVATE_KEY;
28
- if (!privateKey) {
29
- return undefined;
30
- }
31
- try {
32
- // Ensure private key has 0x prefix
33
- const formattedKey = privateKey.startsWith('0x') ? privateKey : `0x${privateKey}`;
34
- return new Wallet(formattedKey);
35
- }
36
- catch (error) {
37
- console.error('Failed to create wallet from POLY_PRIVATE_KEY:', error);
38
- return undefined;
39
- }
40
- }
34
+ import { getWalletManager } from './wallet-manager.js';
41
35
  // Server metadata
42
36
  const SERVER_NAME = 'polymarket-mcp';
43
37
  const SERVER_VERSION = '0.1.0';
@@ -53,20 +47,28 @@ function createServer() {
53
47
  tools: {},
54
48
  },
55
49
  });
56
- // Create signer from private key if available
57
- const signer = createSigner();
50
+ // Initialize wallet manager (supports multiple wallets)
51
+ const walletManager = getWalletManager();
52
+ // Get active wallet's private key for SDK initialization
53
+ const activeWallet = walletManager.getActiveWallet();
54
+ const privateKey = activeWallet?.wallet.privateKey;
58
55
  // Initialize SDK with environment configuration
59
56
  // API credentials are derived automatically from private key via createOrDeriveApiKey()
60
57
  const sdk = new PolymarketSDK({
61
58
  chainId: process.env.POLY_CHAIN_ID ? parseInt(process.env.POLY_CHAIN_ID) : 137,
62
- signer,
59
+ privateKey,
63
60
  });
64
- // Log trading status
65
- if (signer) {
66
- console.error(`Trading enabled for wallet: ${signer.address}`);
61
+ // Log wallet status
62
+ if (walletManager.hasWallets()) {
63
+ const wallets = walletManager.listWallets();
64
+ console.error(`Trading enabled with ${wallets.length} wallet(s):`);
65
+ for (const w of wallets) {
66
+ const marker = w.isActive ? '* ' : ' ';
67
+ console.error(`${marker}${w.name}: ${w.address}`);
68
+ }
67
69
  }
68
70
  else {
69
- console.error('Trading disabled (set POLY_PRIVATE_KEY to enable)');
71
+ console.error('Trading disabled (set POLY_PRIVATE_KEY or POLY_WALLETS to enable)');
70
72
  }
71
73
  // Create the tool handler
72
74
  const handler = createMcpHandler(sdk);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../src/tools/guide.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAExE,eAAO,MAAM,oBAAoB,EAAE,cAAc,EA2BhD,CAAC;AAkvBF,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CA2BlE"}
1
+ {"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../src/tools/guide.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAExE,eAAO,MAAM,oBAAoB,EAAE,cAAc,EA4BhD,CAAC;AA+4BF,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CA4BlE"}
@@ -23,6 +23,7 @@ export const guideToolDefinitions = [
23
23
  'copy_trading',
24
24
  'deposit_and_auth',
25
25
  'trading',
26
+ 'redeem_positions',
26
27
  ],
27
28
  description: 'Specific scenario to get detailed guide for. Default: overview',
28
29
  },
@@ -45,7 +46,8 @@ const OVERVIEW_GUIDE = `
45
46
  | **充值** | deposit_usdc, swap, swap_and_deposit | 资金充值和转换 |
46
47
  | **授权** | check_allowances, approve_trading | 交易授权管理 |
47
48
  | **交易** | create_order, cancel_order, get_open_orders | 执行交易 |
48
- | **CTF** | check_ctf_ready | 检查 CTF 准备状态 |
49
+ | **CTF** | ctf_split, ctf_merge, ctf_redeem | 拆分/合并/赎回条件代币 |
50
+ | **结算** | get_market_resolution, get_position_balance | 检查市场结算和仓位余额 |
49
51
 
50
52
  ## 📋 常见场景
51
53
 
@@ -107,6 +109,17 @@ get_market(conditionId) → 查看赔率和截止时间
107
109
  get_orderbook → 分析价差和深度
108
110
  \`\`\`
109
111
 
112
+ ### 7. 赎回获胜仓位 (redeem_positions) ⭐ 新增
113
+ \`\`\`
114
+ get_trader_positions(address) → 查找 redeemable=true 的仓位
115
+
116
+ get_market(conditionId) → 获取 tokenIds
117
+
118
+ get_market_resolution(conditionId) → 确认已结算
119
+
120
+ ctf_redeem(conditionId, tokenIds) → 赎回获胜代币
121
+ \`\`\`
122
+
110
123
  ## 💡 Pro Tips
111
124
 
112
125
  1. **总是先用 get_leaderboard** 获取聪明钱地址列表
@@ -716,6 +729,150 @@ A: 可以,但推荐授权无限额度,避免每次交易都要重新授权
716
729
  - "我需要充值多少才能开始交易?"
717
730
  - "为什么我的 USDC 余额显示为 0?"
718
731
  `;
732
+ const REDEEM_POSITIONS_GUIDE = `
733
+ # 仓位赎回指南
734
+
735
+ ## 🎯 目标
736
+ 在市场结算后赎回获胜仓位,将条件代币转换为 USDC。
737
+
738
+ ## ⚠️ 关键概念
739
+
740
+ ### CLOB 仓位 vs CTF 仓位
741
+
742
+ | 类型 | 来源 | 代币位置 | 赎回方式 |
743
+ |------|------|----------|----------|
744
+ | **CLOB** | 通过 Polymarket 订单簿交易 | ERC1155 在钱包 | \`ctf_redeem\` ✅ |
745
+ | **CTF Split** | 通过 \`ctf_split\` 拆分 USDC | ERC1155 在钱包 | \`ctf_redeem\` ✅ |
746
+
747
+ 💡 **重要发现**:CLOB 仓位的代币实际上存储在你的钱包里(作为 ERC1155),
748
+ 可以使用 \`ctf_redeem\` 手动赎回!
749
+
750
+ ## 📋 赎回流程
751
+
752
+ ### Step 1: 查看可赎回仓位
753
+ \`\`\`
754
+ get_trader_positions(address: "0x...")
755
+ \`\`\`
756
+ 筛选条件:
757
+ - \`status.redeemable: true\` - 可赎回
758
+ - \`holding.curPrice: 1\` - 获胜方(价格为 1)
759
+ - \`holding.curPrice: 0\` - 失败方(价格为 0,无需赎回)
760
+
761
+ ### Step 2: 检查市场结算状态
762
+ \`\`\`
763
+ get_market_resolution(conditionId: "0x...")
764
+ \`\`\`
765
+ 返回:
766
+ - \`isResolved\`: 是否已结算
767
+ - \`winningOutcome\`: 获胜方 (YES/NO)
768
+ - \`payoutNumerators\`: 赔付比例
769
+
770
+ ### Step 3: 获取 Token IDs
771
+ \`\`\`
772
+ get_market(identifier: "0x...") // conditionId 或 slug
773
+ \`\`\`
774
+ 从返回的 \`tokens\` 数组获取:
775
+ - \`tokens[0].tokenId\`: YES/Up token ID
776
+ - \`tokens[1].tokenId\`: NO/Down token ID
777
+
778
+ ### Step 4: 执行赎回
779
+ \`\`\`
780
+ ctf_redeem(
781
+ conditionId: "0x...",
782
+ tokenIds: {
783
+ yesTokenId: "...",
784
+ noTokenId: "..."
785
+ },
786
+ outcome: "Yes" | "No" // 可选,会自动检测获胜方
787
+ )
788
+ \`\`\`
789
+
790
+ 返回:
791
+ - \`success\`: 是否成功
792
+ - \`tokensRedeemed\`: 赎回的代币数量
793
+ - \`usdcReceived\`: 收到的 USDC 金额
794
+ - \`txHash\`: 交易哈希
795
+ - \`explorerUrl\`: Polygonscan 链接
796
+
797
+ ## 💡 实战示例
798
+
799
+ ### 示例:赎回 ETH 15分钟市场获胜仓位
800
+
801
+ \`\`\`
802
+ // 1. 获取市场信息和 token IDs
803
+ get_market(identifier: "0x85c33bef...")
804
+
805
+ // 返回:
806
+ // tokens: [
807
+ // { tokenId: "37845751...", outcome: "Up" },
808
+ // { tokenId: "94775948...", outcome: "Down" }
809
+ // ]
810
+
811
+ // 2. 检查市场结算
812
+ get_market_resolution(conditionId: "0x85c33bef...")
813
+
814
+ // 返回:
815
+ // isResolved: true
816
+ // winningOutcome: "NO" (Down 赢了)
817
+
818
+ // 3. 执行赎回
819
+ ctf_redeem(
820
+ conditionId: "0x85c33bef...",
821
+ tokenIds: {
822
+ yesTokenId: "37845751...",
823
+ noTokenId: "94775948..."
824
+ },
825
+ outcome: "No" // Down = No
826
+ )
827
+
828
+ // 返回:
829
+ // success: true
830
+ // tokensRedeemed: "98.195932"
831
+ // usdcReceived: "98.195932"
832
+ // txHash: "0xe1b35c47..."
833
+ \`\`\`
834
+
835
+ ## 📊 批量赎回策略
836
+
837
+ 如果有多个获胜仓位需要赎回:
838
+
839
+ \`\`\`
840
+ 1. 获取所有仓位
841
+ get_trader_positions(address)
842
+
843
+ 2. 筛选可赎回仓位
844
+ filter: redeemable=true AND curPrice=1
845
+
846
+ 3. 对每个仓位:
847
+ a. get_market → 获取 tokenIds
848
+ b. get_market_resolution → 确认结算
849
+ c. ctf_redeem → 执行赎回
850
+ \`\`\`
851
+
852
+ ## ⚠️ 常见问题
853
+
854
+ ### Q: 为什么赎回失败?
855
+ 可能原因:
856
+ - 市场尚未结算 → 等待结算
857
+ - 没有获胜代币 → 检查 curPrice 是否为 1
858
+ - Token IDs 错误 → 从 get_market 获取正确的 IDs
859
+
860
+ ### Q: 输掉的仓位需要赎回吗?
861
+ 不需要。失败方代币价值为 $0,无需操作。
862
+
863
+ ### Q: Gas 费用多少?
864
+ Polygon 网络约 73,000 gas (~$0.01)。
865
+
866
+ ### Q: Polymarket 不会自动赎回吗?
867
+ 会自动赎回,但可能有延迟。手动赎回更快拿到资金。
868
+
869
+ ## 📝 示例问题
870
+
871
+ - "帮我赎回所有获胜仓位"
872
+ - "检查哪些仓位可以赎回"
873
+ - "这个市场结算了吗?"
874
+ - "帮我赎回 ETH 12:00PM 的仓位"
875
+ `;
719
876
  const TRADING_GUIDE = `
720
877
  # 交易操作指南
721
878
 
@@ -787,6 +944,7 @@ export function createGuideHandlers() {
787
944
  copy_trading: COPY_TRADING_GUIDE,
788
945
  deposit_and_auth: DEPOSIT_AND_AUTH_GUIDE,
789
946
  trading: TRADING_GUIDE,
947
+ redeem_positions: REDEEM_POSITIONS_GUIDE,
790
948
  };
791
949
  const guide = guides[scenario] || OVERVIEW_GUIDE;
792
950
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/tools/guide.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IACpD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,kJAAkJ;QACpJ,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE;wBACJ,UAAU;wBACV,sBAAsB;wBACtB,kBAAkB;wBAClB,iBAAiB;wBACjB,kBAAkB;wBAClB,iBAAiB;wBACjB,cAAc;wBACd,kBAAkB;wBAClB,SAAS;qBACV;oBACD,WAAW,EACT,gEAAgE;iBACnE;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqFtB,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDzB,CAAC;AAEF,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+F9B,CAAC;AAEF,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoG1B,CAAC;AAEF,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC7B,CAAC;AAEF,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqD9B,CAAC;AAEF,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkE7B,CAAC;AAEF,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuL9B,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDrB,CAAC;AAEF,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,eAAe,EAAE,KAAK,EAAE,IAA6B,EAAE,EAAE;YACvD,MAAM,QAAQ,GAAI,IAAI,CAAC,QAAmB,IAAI,UAAU,CAAC;YAEzD,MAAM,MAAM,GAA2B;gBACrC,QAAQ,EAAE,cAAc;gBACxB,oBAAoB,EAAE,iBAAiB;gBACvC,gBAAgB,EAAE,sBAAsB;gBACxC,eAAe,EAAE,qBAAqB;gBACtC,gBAAgB,EAAE,sBAAsB;gBACxC,eAAe,EAAE,qBAAqB;gBACtC,YAAY,EAAE,kBAAkB;gBAChC,gBAAgB,EAAE,sBAAsB;gBACxC,OAAO,EAAE,aAAa;aACvB,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC;YAEjD,OAAO;gBACL,QAAQ;gBACR,KAAK;gBACL,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACxC,GAAG,EAAE,iDAAiD;aACvD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/tools/guide.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,14 @@
2
2
  * MCP Tools Index
3
3
  */
4
4
  export { guideToolDefinitions, createGuideHandlers, } from './guide.js';
5
- export { traderToolDefinitions, handleGetTraderPositions, handleGetTraderTrades, handleGetTraderProfile, handleGetLeaderboard, } from './trader.js';
6
- export { marketToolDefinitions, handleGetMarket, handleSearchMarkets, handleGetTrendingMarkets, handleGetMarketTrades, } from './market.js';
5
+ export { traderToolDefinitions, handleGetTraderPositions, handleGetTraderTrades, handleGetTraderActivity, handleGetTraderProfile, handleGetLeaderboard, handleGetClosedPositions, handleGetAccountValue, } from './trader.js';
6
+ export { marketToolDefinitions, handleGetMarket, handleSearchMarkets, handleGetTrendingMarkets, handleGetMarketTrades, handleGetKLines, handleGetPriceHistory, handleDetectArbitrage, handleDetectMarketSignals, handleGetRealtimeSpread, handleScanCryptoShortTermMarkets, } from './market.js';
7
7
  export { orderToolDefinitions, handleGetOrderbook, handleGetBestPrices, handleEstimateExecution, } from './order.js';
8
- export { tradeToolDefinitions, handlePlaceLimitOrder, handlePlaceMarketOrder, handleCancelOrder, handleGetMyOrders, } from './trade.js';
9
- export { walletToolDefinitions, handleGetSupportedAssets, handleGetDepositAddresses, handleDepositUsdc, handleCheckAllowances, handleApproveTrading, handleSwap, handleSwapAndDeposit, handleGetTokenBalances, handleGetWalletBalances, handleGetSwapQuote, handleGetAvailablePools, } from './wallet.js';
8
+ export { tradeToolDefinitions, handlePlaceLimitOrder, handlePlaceMarketOrder, handleCancelOrder, handleGetMyOrders, handleCancelAllOrders, handleGetMyTrades, handleGetEarnings, handleGetCurrentRewards, handleCheckOrderScoring, } from './trade.js';
9
+ export { walletToolDefinitions, handleListWallets, handleGetActiveWallet, handleSetActiveWallet, handleGetSupportedAssets, handleGetDepositAddresses, handleDepositUsdc, handleCheckAllowances, handleApproveTrading, handleSwap, handleSwapAndDeposit, handleGetTokenBalances, handleGetWalletBalances, handleGetSwapQuote, handleGetAvailablePools, } from './wallet.js';
10
+ export { onchainToolDefinitions, handleCtfSplit, handleCtfMerge, handleCtfRedeem, handleGetPositionBalance, handleGetMarketResolution, handleCheckCtfReady, handleEstimateGas, handleGetGasPrice, } from './onchain.js';
11
+ export { walletClassificationToolDefinitions, handleGetTagDefinitions, handleAddTagDefinition, handleGetWalletClassification, handleClassifyWallet, handleGetWalletsByTag, handleRemoveWalletTag, } from './wallet-classification.js';
12
+ export { insiderDetectionToolDefinitions, handleAnalyzeWalletInsider, handleScanInsiderWallets, handleGetInsiderCandidates, handleGetPoliticalMarkets, } from './insider-detection.js';
13
+ export { insiderSignalsToolDefinitions, handleGetInsiderSignals, handleGetInsiderSignalCount, handleMarkInsiderSignalRead, handleMarkAllInsiderSignalsRead, } from './insider-signals.js';
10
14
  export declare const allToolDefinitions: import("../types.js").ToolDefinition[];
11
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAWrB,eAAO,MAAM,kBAAkB,wCAO9B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,gCAAgC,GACjC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,qBAAqB,EAErB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EAErB,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mCAAmC,EACnC,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,sBAAsB,CAAC;AAe9B,eAAO,MAAM,kBAAkB,wCAW9B,CAAC"}
@@ -3,11 +3,19 @@
3
3
  */
4
4
  // Re-export all tool definitions and handlers
5
5
  export { guideToolDefinitions, createGuideHandlers, } from './guide.js';
6
- export { traderToolDefinitions, handleGetTraderPositions, handleGetTraderTrades, handleGetTraderProfile, handleGetLeaderboard, } from './trader.js';
7
- export { marketToolDefinitions, handleGetMarket, handleSearchMarkets, handleGetTrendingMarkets, handleGetMarketTrades, } from './market.js';
6
+ export { traderToolDefinitions, handleGetTraderPositions, handleGetTraderTrades, handleGetTraderActivity, handleGetTraderProfile, handleGetLeaderboard, handleGetClosedPositions, handleGetAccountValue, } from './trader.js';
7
+ export { marketToolDefinitions, handleGetMarket, handleSearchMarkets, handleGetTrendingMarkets, handleGetMarketTrades, handleGetKLines, handleGetPriceHistory, handleDetectArbitrage, handleDetectMarketSignals, handleGetRealtimeSpread, handleScanCryptoShortTermMarkets, } from './market.js';
8
8
  export { orderToolDefinitions, handleGetOrderbook, handleGetBestPrices, handleEstimateExecution, } from './order.js';
9
- export { tradeToolDefinitions, handlePlaceLimitOrder, handlePlaceMarketOrder, handleCancelOrder, handleGetMyOrders, } from './trade.js';
10
- export { walletToolDefinitions, handleGetSupportedAssets, handleGetDepositAddresses, handleDepositUsdc, handleCheckAllowances, handleApproveTrading, handleSwap, handleSwapAndDeposit, handleGetTokenBalances, handleGetWalletBalances, handleGetSwapQuote, handleGetAvailablePools, } from './wallet.js';
9
+ export { tradeToolDefinitions, handlePlaceLimitOrder, handlePlaceMarketOrder, handleCancelOrder, handleGetMyOrders, handleCancelAllOrders, handleGetMyTrades, handleGetEarnings, handleGetCurrentRewards, handleCheckOrderScoring, } from './trade.js';
10
+ export { walletToolDefinitions,
11
+ // Wallet management handlers
12
+ handleListWallets, handleGetActiveWallet, handleSetActiveWallet,
13
+ // Deposit and swap handlers
14
+ handleGetSupportedAssets, handleGetDepositAddresses, handleDepositUsdc, handleCheckAllowances, handleApproveTrading, handleSwap, handleSwapAndDeposit, handleGetTokenBalances, handleGetWalletBalances, handleGetSwapQuote, handleGetAvailablePools, } from './wallet.js';
15
+ export { onchainToolDefinitions, handleCtfSplit, handleCtfMerge, handleCtfRedeem, handleGetPositionBalance, handleGetMarketResolution, handleCheckCtfReady, handleEstimateGas, handleGetGasPrice, } from './onchain.js';
16
+ export { walletClassificationToolDefinitions, handleGetTagDefinitions, handleAddTagDefinition, handleGetWalletClassification, handleClassifyWallet, handleGetWalletsByTag, handleRemoveWalletTag, } from './wallet-classification.js';
17
+ export { insiderDetectionToolDefinitions, handleAnalyzeWalletInsider, handleScanInsiderWallets, handleGetInsiderCandidates, handleGetPoliticalMarkets, } from './insider-detection.js';
18
+ export { insiderSignalsToolDefinitions, handleGetInsiderSignals, handleGetInsiderSignalCount, handleMarkInsiderSignalRead, handleMarkAllInsiderSignalsRead, } from './insider-signals.js';
11
19
  // Combined tool definitions
12
20
  import { guideToolDefinitions } from './guide.js';
13
21
  import { traderToolDefinitions } from './trader.js';
@@ -15,6 +23,10 @@ import { marketToolDefinitions } from './market.js';
15
23
  import { orderToolDefinitions } from './order.js';
16
24
  import { tradeToolDefinitions } from './trade.js';
17
25
  import { walletToolDefinitions } from './wallet.js';
26
+ import { onchainToolDefinitions } from './onchain.js';
27
+ import { walletClassificationToolDefinitions } from './wallet-classification.js';
28
+ import { insiderDetectionToolDefinitions } from './insider-detection.js';
29
+ import { insiderSignalsToolDefinitions } from './insider-signals.js';
18
30
  // Guide tool FIRST so AI sees it prominently
19
31
  export const allToolDefinitions = [
20
32
  ...guideToolDefinitions,
@@ -23,5 +35,9 @@ export const allToolDefinitions = [
23
35
  ...orderToolDefinitions,
24
36
  ...tradeToolDefinitions,
25
37
  ...walletToolDefinitions,
38
+ ...onchainToolDefinitions,
39
+ ...walletClassificationToolDefinitions,
40
+ ...insiderDetectionToolDefinitions,
41
+ ...insiderSignalsToolDefinitions,
26
42
  ];
27
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,8CAA8C;AAC9C,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,4BAA4B;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,6CAA6C;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,GAAG,oBAAoB;IACvB,GAAG,qBAAqB;IACxB,GAAG,qBAAqB;IACxB,GAAG,oBAAoB;IACvB,GAAG,oBAAoB;IACvB,GAAG,qBAAqB;CACzB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}