@catalyst-team/poly-mcp 0.1.0 → 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 (114) hide show
  1. package/README.md +384 -221
  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/01-trader-tools.md +159 -0
  68. package/docs/e2e/02-market-tools.md +180 -0
  69. package/docs/e2e/03-order-tools.md +166 -0
  70. package/docs/e2e/04-wallet-tools.md +224 -0
  71. package/docs/e2e/05-trading-tools.md +327 -0
  72. package/docs/e2e/06-integration-scenarios.md +481 -0
  73. package/docs/e2e/coordinator.md +376 -0
  74. package/docs/e2e-02/00-gap-analysis.md +211 -0
  75. package/docs/e2e-02/01-test-scenarios.md +530 -0
  76. package/docs/e2e-02/02-implementation-plan.md +190 -0
  77. package/docs/e2e-02/README.md +102 -0
  78. package/docs/reports/simonbanza-strategy-analysis-2025-12-25.md +420 -0
  79. package/docs/reports/smart-money-analysis-2025-12-23-cn.md +840 -0
  80. package/docs/reports/smart-money-trading-strategies-2025-12-25.md +440 -0
  81. package/docs/reports/weekly/01-v2.5.md +352 -0
  82. package/docs/reports/weekly/01.md +402 -0
  83. package/docs/reports/weekly/02-deep.md +558 -0
  84. package/docs/reports/weekly/02.md +505 -0
  85. package/docs/reports/weekly/03.md +437 -0
  86. package/docs/reports/weekly/04.md +418 -0
  87. package/docs/reports/weekly/05.md +485 -0
  88. package/docs/reports/weekly/06.md +436 -0
  89. package/docs/reports/weekly/07.md +381 -0
  90. package/docs/reports/weekly/08.md +502 -0
  91. package/docs/reports/weekly/09.md +441 -0
  92. package/docs/reports/weekly/10.md +511 -0
  93. package/docs/reports/weekly/README.md +188 -0
  94. package/docs/reports/weekly/prompt-v2.5.md +1019 -0
  95. package/docs/reports/weekly/prompt-v3.md +432 -0
  96. package/docs/reports/weekly/prompt.md +841 -0
  97. package/package.json +3 -2
  98. package/src/errors.ts +13 -2
  99. package/src/index.ts +286 -1
  100. package/src/sdk-instance.ts +78 -0
  101. package/src/server.ts +30 -28
  102. package/src/tools/guide.ts +160 -1
  103. package/src/tools/index.ts +65 -0
  104. package/src/tools/insider-detection.ts +899 -0
  105. package/src/tools/insider-signals.ts +213 -0
  106. package/src/tools/market.ts +569 -12
  107. package/src/tools/onchain.ts +738 -0
  108. package/src/tools/order.ts +25 -12
  109. package/src/tools/trade.ts +265 -53
  110. package/src/tools/trader.ts +350 -4
  111. package/src/tools/wallet-classification.ts +587 -0
  112. package/src/tools/wallet.ts +172 -23
  113. package/src/types.ts +294 -11
  114. package/src/wallet-manager.ts +209 -0
@@ -30,6 +30,7 @@ export const guideToolDefinitions: ToolDefinition[] = [
30
30
  'copy_trading',
31
31
  'deposit_and_auth',
32
32
  'trading',
33
+ 'redeem_positions',
33
34
  ],
34
35
  description:
35
36
  'Specific scenario to get detailed guide for. Default: overview',
@@ -54,7 +55,8 @@ const OVERVIEW_GUIDE = `
54
55
  | **充值** | deposit_usdc, swap, swap_and_deposit | 资金充值和转换 |
55
56
  | **授权** | check_allowances, approve_trading | 交易授权管理 |
56
57
  | **交易** | create_order, cancel_order, get_open_orders | 执行交易 |
57
- | **CTF** | check_ctf_ready | 检查 CTF 准备状态 |
58
+ | **CTF** | ctf_split, ctf_merge, ctf_redeem | 拆分/合并/赎回条件代币 |
59
+ | **结算** | get_market_resolution, get_position_balance | 检查市场结算和仓位余额 |
58
60
 
59
61
  ## 📋 常见场景
60
62
 
@@ -116,6 +118,17 @@ get_market(conditionId) → 查看赔率和截止时间
116
118
  get_orderbook → 分析价差和深度
117
119
  \`\`\`
118
120
 
121
+ ### 7. 赎回获胜仓位 (redeem_positions) ⭐ 新增
122
+ \`\`\`
123
+ get_trader_positions(address) → 查找 redeemable=true 的仓位
124
+
125
+ get_market(conditionId) → 获取 tokenIds
126
+
127
+ get_market_resolution(conditionId) → 确认已结算
128
+
129
+ ctf_redeem(conditionId, tokenIds) → 赎回获胜代币
130
+ \`\`\`
131
+
119
132
  ## 💡 Pro Tips
120
133
 
121
134
  1. **总是先用 get_leaderboard** 获取聪明钱地址列表
@@ -733,6 +746,151 @@ A: 可以,但推荐授权无限额度,避免每次交易都要重新授权
733
746
  - "为什么我的 USDC 余额显示为 0?"
734
747
  `;
735
748
 
749
+ const REDEEM_POSITIONS_GUIDE = `
750
+ # 仓位赎回指南
751
+
752
+ ## 🎯 目标
753
+ 在市场结算后赎回获胜仓位,将条件代币转换为 USDC。
754
+
755
+ ## ⚠️ 关键概念
756
+
757
+ ### CLOB 仓位 vs CTF 仓位
758
+
759
+ | 类型 | 来源 | 代币位置 | 赎回方式 |
760
+ |------|------|----------|----------|
761
+ | **CLOB** | 通过 Polymarket 订单簿交易 | ERC1155 在钱包 | \`ctf_redeem\` ✅ |
762
+ | **CTF Split** | 通过 \`ctf_split\` 拆分 USDC | ERC1155 在钱包 | \`ctf_redeem\` ✅ |
763
+
764
+ 💡 **重要发现**:CLOB 仓位的代币实际上存储在你的钱包里(作为 ERC1155),
765
+ 可以使用 \`ctf_redeem\` 手动赎回!
766
+
767
+ ## 📋 赎回流程
768
+
769
+ ### Step 1: 查看可赎回仓位
770
+ \`\`\`
771
+ get_trader_positions(address: "0x...")
772
+ \`\`\`
773
+ 筛选条件:
774
+ - \`status.redeemable: true\` - 可赎回
775
+ - \`holding.curPrice: 1\` - 获胜方(价格为 1)
776
+ - \`holding.curPrice: 0\` - 失败方(价格为 0,无需赎回)
777
+
778
+ ### Step 2: 检查市场结算状态
779
+ \`\`\`
780
+ get_market_resolution(conditionId: "0x...")
781
+ \`\`\`
782
+ 返回:
783
+ - \`isResolved\`: 是否已结算
784
+ - \`winningOutcome\`: 获胜方 (YES/NO)
785
+ - \`payoutNumerators\`: 赔付比例
786
+
787
+ ### Step 3: 获取 Token IDs
788
+ \`\`\`
789
+ get_market(identifier: "0x...") // conditionId 或 slug
790
+ \`\`\`
791
+ 从返回的 \`tokens\` 数组获取:
792
+ - \`tokens[0].tokenId\`: YES/Up token ID
793
+ - \`tokens[1].tokenId\`: NO/Down token ID
794
+
795
+ ### Step 4: 执行赎回
796
+ \`\`\`
797
+ ctf_redeem(
798
+ conditionId: "0x...",
799
+ tokenIds: {
800
+ yesTokenId: "...",
801
+ noTokenId: "..."
802
+ },
803
+ outcome: "Yes" | "No" // 可选,会自动检测获胜方
804
+ )
805
+ \`\`\`
806
+
807
+ 返回:
808
+ - \`success\`: 是否成功
809
+ - \`tokensRedeemed\`: 赎回的代币数量
810
+ - \`usdcReceived\`: 收到的 USDC 金额
811
+ - \`txHash\`: 交易哈希
812
+ - \`explorerUrl\`: Polygonscan 链接
813
+
814
+ ## 💡 实战示例
815
+
816
+ ### 示例:赎回 ETH 15分钟市场获胜仓位
817
+
818
+ \`\`\`
819
+ // 1. 获取市场信息和 token IDs
820
+ get_market(identifier: "0x85c33bef...")
821
+
822
+ // 返回:
823
+ // tokens: [
824
+ // { tokenId: "37845751...", outcome: "Up" },
825
+ // { tokenId: "94775948...", outcome: "Down" }
826
+ // ]
827
+
828
+ // 2. 检查市场结算
829
+ get_market_resolution(conditionId: "0x85c33bef...")
830
+
831
+ // 返回:
832
+ // isResolved: true
833
+ // winningOutcome: "NO" (Down 赢了)
834
+
835
+ // 3. 执行赎回
836
+ ctf_redeem(
837
+ conditionId: "0x85c33bef...",
838
+ tokenIds: {
839
+ yesTokenId: "37845751...",
840
+ noTokenId: "94775948..."
841
+ },
842
+ outcome: "No" // Down = No
843
+ )
844
+
845
+ // 返回:
846
+ // success: true
847
+ // tokensRedeemed: "98.195932"
848
+ // usdcReceived: "98.195932"
849
+ // txHash: "0xe1b35c47..."
850
+ \`\`\`
851
+
852
+ ## 📊 批量赎回策略
853
+
854
+ 如果有多个获胜仓位需要赎回:
855
+
856
+ \`\`\`
857
+ 1. 获取所有仓位
858
+ get_trader_positions(address)
859
+
860
+ 2. 筛选可赎回仓位
861
+ filter: redeemable=true AND curPrice=1
862
+
863
+ 3. 对每个仓位:
864
+ a. get_market → 获取 tokenIds
865
+ b. get_market_resolution → 确认结算
866
+ c. ctf_redeem → 执行赎回
867
+ \`\`\`
868
+
869
+ ## ⚠️ 常见问题
870
+
871
+ ### Q: 为什么赎回失败?
872
+ 可能原因:
873
+ - 市场尚未结算 → 等待结算
874
+ - 没有获胜代币 → 检查 curPrice 是否为 1
875
+ - Token IDs 错误 → 从 get_market 获取正确的 IDs
876
+
877
+ ### Q: 输掉的仓位需要赎回吗?
878
+ 不需要。失败方代币价值为 $0,无需操作。
879
+
880
+ ### Q: Gas 费用多少?
881
+ Polygon 网络约 73,000 gas (~$0.01)。
882
+
883
+ ### Q: Polymarket 不会自动赎回吗?
884
+ 会自动赎回,但可能有延迟。手动赎回更快拿到资金。
885
+
886
+ ## 📝 示例问题
887
+
888
+ - "帮我赎回所有获胜仓位"
889
+ - "检查哪些仓位可以赎回"
890
+ - "这个市场结算了吗?"
891
+ - "帮我赎回 ETH 12:00PM 的仓位"
892
+ `;
893
+
736
894
  const TRADING_GUIDE = `
737
895
  # 交易操作指南
738
896
 
@@ -806,6 +964,7 @@ export function createGuideHandlers(): Record<string, GuideHandler> {
806
964
  copy_trading: COPY_TRADING_GUIDE,
807
965
  deposit_and_auth: DEPOSIT_AND_AUTH_GUIDE,
808
966
  trading: TRADING_GUIDE,
967
+ redeem_positions: REDEEM_POSITIONS_GUIDE,
809
968
  };
810
969
 
811
970
  const guide = guides[scenario] || OVERVIEW_GUIDE;
@@ -12,8 +12,11 @@ export {
12
12
  traderToolDefinitions,
13
13
  handleGetTraderPositions,
14
14
  handleGetTraderTrades,
15
+ handleGetTraderActivity,
15
16
  handleGetTraderProfile,
16
17
  handleGetLeaderboard,
18
+ handleGetClosedPositions,
19
+ handleGetAccountValue,
17
20
  } from './trader.js';
18
21
 
19
22
  export {
@@ -22,6 +25,12 @@ export {
22
25
  handleSearchMarkets,
23
26
  handleGetTrendingMarkets,
24
27
  handleGetMarketTrades,
28
+ handleGetKLines,
29
+ handleGetPriceHistory,
30
+ handleDetectArbitrage,
31
+ handleDetectMarketSignals,
32
+ handleGetRealtimeSpread,
33
+ handleScanCryptoShortTermMarkets,
25
34
  } from './market.js';
26
35
 
27
36
  export {
@@ -37,10 +46,20 @@ export {
37
46
  handlePlaceMarketOrder,
38
47
  handleCancelOrder,
39
48
  handleGetMyOrders,
49
+ handleCancelAllOrders,
50
+ handleGetMyTrades,
51
+ handleGetEarnings,
52
+ handleGetCurrentRewards,
53
+ handleCheckOrderScoring,
40
54
  } from './trade.js';
41
55
 
42
56
  export {
43
57
  walletToolDefinitions,
58
+ // Wallet management handlers
59
+ handleListWallets,
60
+ handleGetActiveWallet,
61
+ handleSetActiveWallet,
62
+ // Deposit and swap handlers
44
63
  handleGetSupportedAssets,
45
64
  handleGetDepositAddresses,
46
65
  handleDepositUsdc,
@@ -54,6 +73,44 @@ export {
54
73
  handleGetAvailablePools,
55
74
  } from './wallet.js';
56
75
 
76
+ export {
77
+ onchainToolDefinitions,
78
+ handleCtfSplit,
79
+ handleCtfMerge,
80
+ handleCtfRedeem,
81
+ handleGetPositionBalance,
82
+ handleGetMarketResolution,
83
+ handleCheckCtfReady,
84
+ handleEstimateGas,
85
+ handleGetGasPrice,
86
+ } from './onchain.js';
87
+
88
+ export {
89
+ walletClassificationToolDefinitions,
90
+ handleGetTagDefinitions,
91
+ handleAddTagDefinition,
92
+ handleGetWalletClassification,
93
+ handleClassifyWallet,
94
+ handleGetWalletsByTag,
95
+ handleRemoveWalletTag,
96
+ } from './wallet-classification.js';
97
+
98
+ export {
99
+ insiderDetectionToolDefinitions,
100
+ handleAnalyzeWalletInsider,
101
+ handleScanInsiderWallets,
102
+ handleGetInsiderCandidates,
103
+ handleGetPoliticalMarkets,
104
+ } from './insider-detection.js';
105
+
106
+ export {
107
+ insiderSignalsToolDefinitions,
108
+ handleGetInsiderSignals,
109
+ handleGetInsiderSignalCount,
110
+ handleMarkInsiderSignalRead,
111
+ handleMarkAllInsiderSignalsRead,
112
+ } from './insider-signals.js';
113
+
57
114
  // Combined tool definitions
58
115
  import { guideToolDefinitions } from './guide.js';
59
116
  import { traderToolDefinitions } from './trader.js';
@@ -61,6 +118,10 @@ import { marketToolDefinitions } from './market.js';
61
118
  import { orderToolDefinitions } from './order.js';
62
119
  import { tradeToolDefinitions } from './trade.js';
63
120
  import { walletToolDefinitions } from './wallet.js';
121
+ import { onchainToolDefinitions } from './onchain.js';
122
+ import { walletClassificationToolDefinitions } from './wallet-classification.js';
123
+ import { insiderDetectionToolDefinitions } from './insider-detection.js';
124
+ import { insiderSignalsToolDefinitions } from './insider-signals.js';
64
125
 
65
126
  // Guide tool FIRST so AI sees it prominently
66
127
  export const allToolDefinitions = [
@@ -70,4 +131,8 @@ export const allToolDefinitions = [
70
131
  ...orderToolDefinitions,
71
132
  ...tradeToolDefinitions,
72
133
  ...walletToolDefinitions,
134
+ ...onchainToolDefinitions,
135
+ ...walletClassificationToolDefinitions,
136
+ ...insiderDetectionToolDefinitions,
137
+ ...insiderSignalsToolDefinitions,
73
138
  ];