@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.
- package/README.md +384 -221
- package/dist/errors.d.ts +11 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +13 -2
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +98 -5
- package/dist/index.js.map +1 -1
- package/dist/sdk-instance.d.ts +27 -0
- package/dist/sdk-instance.d.ts.map +1 -0
- package/dist/sdk-instance.js +64 -0
- package/dist/sdk-instance.js.map +1 -0
- package/dist/server.d.ts +13 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +29 -27
- package/dist/server.js.map +1 -1
- package/dist/tools/guide.d.ts.map +1 -1
- package/dist/tools/guide.js +159 -1
- package/dist/tools/guide.js.map +1 -1
- package/dist/tools/index.d.ts +8 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +20 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/insider-detection.d.ts +175 -0
- package/dist/tools/insider-detection.d.ts.map +1 -0
- package/dist/tools/insider-detection.js +654 -0
- package/dist/tools/insider-detection.js.map +1 -0
- package/dist/tools/insider-signals.d.ts +56 -0
- package/dist/tools/insider-signals.d.ts.map +1 -0
- package/dist/tools/insider-signals.js +170 -0
- package/dist/tools/insider-signals.js.map +1 -0
- package/dist/tools/market.d.ts +25 -1
- package/dist/tools/market.d.ts.map +1 -1
- package/dist/tools/market.js +504 -12
- package/dist/tools/market.js.map +1 -1
- package/dist/tools/onchain.d.ts +240 -0
- package/dist/tools/onchain.d.ts.map +1 -0
- package/dist/tools/onchain.js +610 -0
- package/dist/tools/onchain.js.map +1 -0
- package/dist/tools/order.d.ts.map +1 -1
- package/dist/tools/order.js +13 -6
- package/dist/tools/order.js.map +1 -1
- package/dist/tools/trade.d.ts +15 -0
- package/dist/tools/trade.d.ts.map +1 -1
- package/dist/tools/trade.js +216 -39
- package/dist/tools/trade.js.map +1 -1
- package/dist/tools/trader.d.ts +4 -1
- package/dist/tools/trader.d.ts.map +1 -1
- package/dist/tools/trader.js +316 -4
- package/dist/tools/trader.js.map +1 -1
- package/dist/tools/wallet-classification.d.ts +166 -0
- package/dist/tools/wallet-classification.d.ts.map +1 -0
- package/dist/tools/wallet-classification.js +455 -0
- package/dist/tools/wallet-classification.js.map +1 -0
- package/dist/tools/wallet.d.ts +56 -7
- package/dist/tools/wallet.d.ts.map +1 -1
- package/dist/tools/wallet.js +141 -20
- package/dist/tools/wallet.js.map +1 -1
- package/dist/types.d.ts +269 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/wallet-manager.d.ts +67 -0
- package/dist/wallet-manager.d.ts.map +1 -0
- package/dist/wallet-manager.js +180 -0
- package/dist/wallet-manager.js.map +1 -0
- package/docs/01-mcp.md +554 -32
- package/docs/02-wallet-deep-research.md +344 -0
- package/docs/e2e/01-trader-tools.md +159 -0
- package/docs/e2e/02-market-tools.md +180 -0
- package/docs/e2e/03-order-tools.md +166 -0
- package/docs/e2e/04-wallet-tools.md +224 -0
- package/docs/e2e/05-trading-tools.md +327 -0
- package/docs/e2e/06-integration-scenarios.md +481 -0
- package/docs/e2e/coordinator.md +376 -0
- package/docs/e2e-02/00-gap-analysis.md +211 -0
- package/docs/e2e-02/01-test-scenarios.md +530 -0
- package/docs/e2e-02/02-implementation-plan.md +190 -0
- package/docs/e2e-02/README.md +102 -0
- package/docs/reports/simonbanza-strategy-analysis-2025-12-25.md +420 -0
- package/docs/reports/smart-money-analysis-2025-12-23-cn.md +840 -0
- package/docs/reports/smart-money-trading-strategies-2025-12-25.md +440 -0
- package/docs/reports/weekly/01-v2.5.md +352 -0
- package/docs/reports/weekly/01.md +402 -0
- package/docs/reports/weekly/02-deep.md +558 -0
- package/docs/reports/weekly/02.md +505 -0
- package/docs/reports/weekly/03.md +437 -0
- package/docs/reports/weekly/04.md +418 -0
- package/docs/reports/weekly/05.md +485 -0
- package/docs/reports/weekly/06.md +436 -0
- package/docs/reports/weekly/07.md +381 -0
- package/docs/reports/weekly/08.md +502 -0
- package/docs/reports/weekly/09.md +441 -0
- package/docs/reports/weekly/10.md +511 -0
- package/docs/reports/weekly/README.md +188 -0
- package/docs/reports/weekly/prompt-v2.5.md +1019 -0
- package/docs/reports/weekly/prompt-v3.md +432 -0
- package/docs/reports/weekly/prompt.md +841 -0
- package/package.json +3 -2
- package/src/errors.ts +13 -2
- package/src/index.ts +286 -1
- package/src/sdk-instance.ts +78 -0
- package/src/server.ts +30 -28
- package/src/tools/guide.ts +160 -1
- package/src/tools/index.ts +65 -0
- package/src/tools/insider-detection.ts +899 -0
- package/src/tools/insider-signals.ts +213 -0
- package/src/tools/market.ts +569 -12
- package/src/tools/onchain.ts +738 -0
- package/src/tools/order.ts +25 -12
- package/src/tools/trade.ts +265 -53
- package/src/tools/trader.ts +350 -4
- package/src/tools/wallet-classification.ts +587 -0
- package/src/tools/wallet.ts +172 -23
- package/src/types.ts +294 -11
- package/src/wallet-manager.ts +209 -0
package/src/tools/guide.ts
CHANGED
|
@@ -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** |
|
|
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;
|
package/src/tools/index.ts
CHANGED
|
@@ -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
|
];
|