@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.
- package/README.md +264 -21
- 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-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
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Onchain Tools - MCP tools for CTF (Conditional Token Framework) operations
|
|
3
|
+
*
|
|
4
|
+
* These tools use the OnchainService from poly-sdk:
|
|
5
|
+
* - Split: USDC -> YES + NO tokens
|
|
6
|
+
* - Merge: YES + NO tokens -> USDC
|
|
7
|
+
* - Redeem: Winning tokens -> USDC (after market resolution)
|
|
8
|
+
* - Position balance queries
|
|
9
|
+
* - Market resolution status
|
|
10
|
+
* - Gas estimation
|
|
11
|
+
*
|
|
12
|
+
* ## Token ID Auto-Discovery
|
|
13
|
+
*
|
|
14
|
+
* Polymarket CLOB markets use custom ERC-1155 token IDs that differ from
|
|
15
|
+
* standard CTF calculated positionIds. These tools auto-discover tokenIds
|
|
16
|
+
* from the CLOB API when not explicitly provided.
|
|
17
|
+
*
|
|
18
|
+
* ## Dynamic Outcome Names
|
|
19
|
+
*
|
|
20
|
+
* Markets can have different outcome names:
|
|
21
|
+
* - Yes/No (standard)
|
|
22
|
+
* - Up/Down (crypto short-term)
|
|
23
|
+
* - Team A/Team B (sports)
|
|
24
|
+
*
|
|
25
|
+
* The tools handle all outcome types dynamically.
|
|
26
|
+
*/
|
|
27
|
+
import { type TokenIds } from '@catalyst-team/poly-sdk';
|
|
28
|
+
import type { ToolDefinition } from '../types.js';
|
|
29
|
+
export declare const onchainToolDefinitions: ToolDefinition[];
|
|
30
|
+
interface CtfSplitInput {
|
|
31
|
+
conditionId: string;
|
|
32
|
+
amount: string;
|
|
33
|
+
}
|
|
34
|
+
interface CtfMergeInput {
|
|
35
|
+
conditionId: string;
|
|
36
|
+
amount: string;
|
|
37
|
+
tokenIds?: TokenIds;
|
|
38
|
+
}
|
|
39
|
+
interface CtfRedeemInput {
|
|
40
|
+
conditionId: string;
|
|
41
|
+
tokenIds?: TokenIds;
|
|
42
|
+
/** Dynamic outcome name - can be Yes/No, Up/Down, Team A/B, etc. */
|
|
43
|
+
outcome?: string;
|
|
44
|
+
}
|
|
45
|
+
interface GetPositionBalanceInput {
|
|
46
|
+
conditionId: string;
|
|
47
|
+
tokenIds?: TokenIds;
|
|
48
|
+
}
|
|
49
|
+
interface GetMarketResolutionInput {
|
|
50
|
+
conditionId: string;
|
|
51
|
+
}
|
|
52
|
+
interface CheckCtfReadyInput {
|
|
53
|
+
amount: string;
|
|
54
|
+
}
|
|
55
|
+
interface EstimateGasInput {
|
|
56
|
+
operation: 'split' | 'merge';
|
|
57
|
+
conditionId: string;
|
|
58
|
+
amount: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Split USDC into YES + NO tokens
|
|
62
|
+
*/
|
|
63
|
+
export declare function handleCtfSplit(input: CtfSplitInput): Promise<{
|
|
64
|
+
success: boolean;
|
|
65
|
+
error: string | undefined;
|
|
66
|
+
wallet: string;
|
|
67
|
+
conditionId: string;
|
|
68
|
+
amount: string;
|
|
69
|
+
yesTokens?: undefined;
|
|
70
|
+
noTokens?: undefined;
|
|
71
|
+
txHash?: undefined;
|
|
72
|
+
gasUsed?: undefined;
|
|
73
|
+
explorerUrl?: undefined;
|
|
74
|
+
message?: undefined;
|
|
75
|
+
} | {
|
|
76
|
+
success: boolean;
|
|
77
|
+
wallet: string;
|
|
78
|
+
conditionId: string;
|
|
79
|
+
amount: string;
|
|
80
|
+
yesTokens: string;
|
|
81
|
+
noTokens: string;
|
|
82
|
+
txHash: string;
|
|
83
|
+
gasUsed: string | undefined;
|
|
84
|
+
explorerUrl: string;
|
|
85
|
+
message: string;
|
|
86
|
+
error?: undefined;
|
|
87
|
+
}>;
|
|
88
|
+
/**
|
|
89
|
+
* Merge primary + secondary tokens back to USDC
|
|
90
|
+
*
|
|
91
|
+
* Automatically discovers tokenIds from CLOB API if not provided.
|
|
92
|
+
*/
|
|
93
|
+
export declare function handleCtfMerge(input: CtfMergeInput): Promise<{
|
|
94
|
+
success: boolean;
|
|
95
|
+
error: string;
|
|
96
|
+
wallet: string;
|
|
97
|
+
conditionId: string;
|
|
98
|
+
amount: string;
|
|
99
|
+
tokenIdsSource: "provided" | "auto-discovered" | "calculated";
|
|
100
|
+
outcomeNames: {
|
|
101
|
+
primary: string;
|
|
102
|
+
secondary: string;
|
|
103
|
+
} | undefined;
|
|
104
|
+
hint: string | undefined;
|
|
105
|
+
usdcReceived?: undefined;
|
|
106
|
+
txHash?: undefined;
|
|
107
|
+
gasUsed?: undefined;
|
|
108
|
+
explorerUrl?: undefined;
|
|
109
|
+
message?: undefined;
|
|
110
|
+
} | {
|
|
111
|
+
success: boolean;
|
|
112
|
+
wallet: string;
|
|
113
|
+
conditionId: string;
|
|
114
|
+
amount: string;
|
|
115
|
+
usdcReceived: string;
|
|
116
|
+
txHash: string;
|
|
117
|
+
gasUsed: string | undefined;
|
|
118
|
+
explorerUrl: string;
|
|
119
|
+
tokenIdsSource: "provided" | "auto-discovered" | "calculated";
|
|
120
|
+
outcomeNames: {
|
|
121
|
+
primary: string;
|
|
122
|
+
secondary: string;
|
|
123
|
+
} | undefined;
|
|
124
|
+
message: string;
|
|
125
|
+
error?: undefined;
|
|
126
|
+
hint?: undefined;
|
|
127
|
+
}>;
|
|
128
|
+
/**
|
|
129
|
+
* Redeem winning tokens after market resolution
|
|
130
|
+
*
|
|
131
|
+
* Automatically discovers tokenIds from CLOB API if not provided.
|
|
132
|
+
*/
|
|
133
|
+
export declare function handleCtfRedeem(input: CtfRedeemInput): Promise<{
|
|
134
|
+
success: boolean;
|
|
135
|
+
error: string;
|
|
136
|
+
wallet: string;
|
|
137
|
+
conditionId: string;
|
|
138
|
+
isResolved: boolean;
|
|
139
|
+
winningOutcome?: undefined;
|
|
140
|
+
tokensRedeemed?: undefined;
|
|
141
|
+
usdcReceived?: undefined;
|
|
142
|
+
txHash?: undefined;
|
|
143
|
+
gasUsed?: undefined;
|
|
144
|
+
explorerUrl?: undefined;
|
|
145
|
+
tokenIdsSource?: undefined;
|
|
146
|
+
outcomeNames?: undefined;
|
|
147
|
+
message?: undefined;
|
|
148
|
+
} | {
|
|
149
|
+
success: boolean;
|
|
150
|
+
wallet: string;
|
|
151
|
+
conditionId: string;
|
|
152
|
+
winningOutcome: string | undefined;
|
|
153
|
+
tokensRedeemed: string;
|
|
154
|
+
usdcReceived: string;
|
|
155
|
+
txHash: string;
|
|
156
|
+
gasUsed: string | undefined;
|
|
157
|
+
explorerUrl: string;
|
|
158
|
+
tokenIdsSource: "provided" | "auto-discovered" | "calculated";
|
|
159
|
+
outcomeNames: {
|
|
160
|
+
primary: string;
|
|
161
|
+
secondary: string;
|
|
162
|
+
} | undefined;
|
|
163
|
+
message: string;
|
|
164
|
+
error?: undefined;
|
|
165
|
+
isResolved?: undefined;
|
|
166
|
+
}>;
|
|
167
|
+
/**
|
|
168
|
+
* Get token balances for a market position
|
|
169
|
+
*
|
|
170
|
+
* Automatically discovers tokenIds from CLOB API if not provided.
|
|
171
|
+
*/
|
|
172
|
+
export declare function handleGetPositionBalance(input: GetPositionBalanceInput): Promise<{
|
|
173
|
+
wallet: string;
|
|
174
|
+
conditionId: string;
|
|
175
|
+
balances: {
|
|
176
|
+
[x: string]: string;
|
|
177
|
+
};
|
|
178
|
+
positionIds: {
|
|
179
|
+
[x: string]: string;
|
|
180
|
+
};
|
|
181
|
+
outcomeNames: {
|
|
182
|
+
primary: string;
|
|
183
|
+
secondary: string;
|
|
184
|
+
} | undefined;
|
|
185
|
+
tokenIdsSource: "provided" | "auto-discovered" | "calculated";
|
|
186
|
+
hasPosition: boolean;
|
|
187
|
+
}>;
|
|
188
|
+
/**
|
|
189
|
+
* Check if market is resolved
|
|
190
|
+
*/
|
|
191
|
+
export declare function handleGetMarketResolution(input: GetMarketResolutionInput): Promise<{
|
|
192
|
+
conditionId: string;
|
|
193
|
+
isResolved: boolean;
|
|
194
|
+
winningOutcome: string | undefined;
|
|
195
|
+
payoutNumerators: [number, number];
|
|
196
|
+
payoutDenominator: number;
|
|
197
|
+
message: string;
|
|
198
|
+
}>;
|
|
199
|
+
/**
|
|
200
|
+
* Check if wallet is ready for CTF trading
|
|
201
|
+
*/
|
|
202
|
+
export declare function handleCheckCtfReady(input: CheckCtfReadyInput): Promise<{
|
|
203
|
+
wallet: string;
|
|
204
|
+
ready: boolean;
|
|
205
|
+
balances: {
|
|
206
|
+
usdcE: string;
|
|
207
|
+
nativeUsdc: string;
|
|
208
|
+
matic: string;
|
|
209
|
+
};
|
|
210
|
+
tradingReady: boolean;
|
|
211
|
+
issues: string[];
|
|
212
|
+
suggestion: string | undefined;
|
|
213
|
+
message: string;
|
|
214
|
+
}>;
|
|
215
|
+
/**
|
|
216
|
+
* Estimate gas for CTF operation
|
|
217
|
+
*/
|
|
218
|
+
export declare function handleEstimateGas(input: EstimateGasInput): Promise<{
|
|
219
|
+
operation: "split" | "merge";
|
|
220
|
+
conditionId: string;
|
|
221
|
+
amount: string;
|
|
222
|
+
gas: {
|
|
223
|
+
gasUnits: string;
|
|
224
|
+
gasPriceGwei: string;
|
|
225
|
+
costMatic: string;
|
|
226
|
+
costUsdc: string;
|
|
227
|
+
maticPrice: number;
|
|
228
|
+
};
|
|
229
|
+
message: string;
|
|
230
|
+
}>;
|
|
231
|
+
/**
|
|
232
|
+
* Get current gas price
|
|
233
|
+
*/
|
|
234
|
+
export declare function handleGetGasPrice(): Promise<{
|
|
235
|
+
gwei: string;
|
|
236
|
+
wei: string;
|
|
237
|
+
message: string;
|
|
238
|
+
}>;
|
|
239
|
+
export {};
|
|
240
|
+
//# sourceMappingURL=onchain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onchain.d.ts","sourceRoot":"","sources":["../../src/tools/onchain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA+ClD,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAqJlD,CAAC;AAIF,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,UAAU,cAAc;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAaD,UAAU,uBAAuB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,UAAU,wBAAwB;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,gBAAgB;IACxB,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAqCD;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;GA2CxD;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmGxD;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2E1D;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB;;;;;;;;;;;;;;;GAuD5E;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,wBAAwB;;;;;;;GAoB9E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB;;;;;;;;;;;;GA8BlE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB;;;;;;;;;;;;GA2C9D;AAED;;GAEG;AACH,wBAAsB,iBAAiB;;;;GAatC"}
|