@catalyst-team/poly-sdk 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.
Files changed (244) hide show
  1. package/.env +0 -0
  2. package/README.md +803 -0
  3. package/dist/__tests__/clob-api.test.d.ts +5 -0
  4. package/dist/__tests__/clob-api.test.d.ts.map +1 -0
  5. package/dist/__tests__/clob-api.test.js +240 -0
  6. package/dist/__tests__/clob-api.test.js.map +1 -0
  7. package/dist/__tests__/integration/bridge-client.integration.test.d.ts +11 -0
  8. package/dist/__tests__/integration/bridge-client.integration.test.d.ts.map +1 -0
  9. package/dist/__tests__/integration/bridge-client.integration.test.js +260 -0
  10. package/dist/__tests__/integration/bridge-client.integration.test.js.map +1 -0
  11. package/dist/__tests__/integration/clob-api.integration.test.d.ts +13 -0
  12. package/dist/__tests__/integration/clob-api.integration.test.d.ts.map +1 -0
  13. package/dist/__tests__/integration/clob-api.integration.test.js +170 -0
  14. package/dist/__tests__/integration/clob-api.integration.test.js.map +1 -0
  15. package/dist/__tests__/integration/ctf-client.integration.test.d.ts +17 -0
  16. package/dist/__tests__/integration/ctf-client.integration.test.d.ts.map +1 -0
  17. package/dist/__tests__/integration/ctf-client.integration.test.js +234 -0
  18. package/dist/__tests__/integration/ctf-client.integration.test.js.map +1 -0
  19. package/dist/__tests__/integration/data-api.integration.test.d.ts +9 -0
  20. package/dist/__tests__/integration/data-api.integration.test.d.ts.map +1 -0
  21. package/dist/__tests__/integration/data-api.integration.test.js +161 -0
  22. package/dist/__tests__/integration/data-api.integration.test.js.map +1 -0
  23. package/dist/__tests__/integration/gamma-api.integration.test.d.ts +9 -0
  24. package/dist/__tests__/integration/gamma-api.integration.test.d.ts.map +1 -0
  25. package/dist/__tests__/integration/gamma-api.integration.test.js +170 -0
  26. package/dist/__tests__/integration/gamma-api.integration.test.js.map +1 -0
  27. package/dist/__tests__/test-utils.d.ts +92 -0
  28. package/dist/__tests__/test-utils.d.ts.map +1 -0
  29. package/dist/__tests__/test-utils.js +143 -0
  30. package/dist/__tests__/test-utils.js.map +1 -0
  31. package/dist/clients/bridge-client.d.ts +388 -0
  32. package/dist/clients/bridge-client.d.ts.map +1 -0
  33. package/dist/clients/bridge-client.js +587 -0
  34. package/dist/clients/bridge-client.js.map +1 -0
  35. package/dist/clients/clob-api.d.ts +318 -0
  36. package/dist/clients/clob-api.d.ts.map +1 -0
  37. package/dist/clients/clob-api.js +388 -0
  38. package/dist/clients/clob-api.js.map +1 -0
  39. package/dist/clients/ctf-client.d.ts +473 -0
  40. package/dist/clients/ctf-client.d.ts.map +1 -0
  41. package/dist/clients/ctf-client.js +915 -0
  42. package/dist/clients/ctf-client.js.map +1 -0
  43. package/dist/clients/data-api.d.ts +134 -0
  44. package/dist/clients/data-api.d.ts.map +1 -0
  45. package/dist/clients/data-api.js +265 -0
  46. package/dist/clients/data-api.js.map +1 -0
  47. package/dist/clients/gamma-api.d.ts +401 -0
  48. package/dist/clients/gamma-api.d.ts.map +1 -0
  49. package/dist/clients/gamma-api.js +352 -0
  50. package/dist/clients/gamma-api.js.map +1 -0
  51. package/dist/clients/trading-client.d.ts +252 -0
  52. package/dist/clients/trading-client.d.ts.map +1 -0
  53. package/dist/clients/trading-client.js +543 -0
  54. package/dist/clients/trading-client.js.map +1 -0
  55. package/dist/clients/websocket-manager.d.ts +100 -0
  56. package/dist/clients/websocket-manager.d.ts.map +1 -0
  57. package/dist/clients/websocket-manager.js +193 -0
  58. package/dist/clients/websocket-manager.js.map +1 -0
  59. package/dist/core/cache-adapter-bridge.d.ts +36 -0
  60. package/dist/core/cache-adapter-bridge.d.ts.map +1 -0
  61. package/dist/core/cache-adapter-bridge.js +81 -0
  62. package/dist/core/cache-adapter-bridge.js.map +1 -0
  63. package/dist/core/cache.d.ts +40 -0
  64. package/dist/core/cache.d.ts.map +1 -0
  65. package/dist/core/cache.js +71 -0
  66. package/dist/core/cache.js.map +1 -0
  67. package/dist/core/errors.d.ts +38 -0
  68. package/dist/core/errors.d.ts.map +1 -0
  69. package/dist/core/errors.js +84 -0
  70. package/dist/core/errors.js.map +1 -0
  71. package/dist/core/rate-limiter.d.ts +31 -0
  72. package/dist/core/rate-limiter.d.ts.map +1 -0
  73. package/dist/core/rate-limiter.js +70 -0
  74. package/dist/core/rate-limiter.js.map +1 -0
  75. package/dist/core/types.d.ts +314 -0
  76. package/dist/core/types.d.ts.map +1 -0
  77. package/dist/core/types.js +19 -0
  78. package/dist/core/types.js.map +1 -0
  79. package/dist/core/unified-cache.d.ts +63 -0
  80. package/dist/core/unified-cache.d.ts.map +1 -0
  81. package/dist/core/unified-cache.js +114 -0
  82. package/dist/core/unified-cache.js.map +1 -0
  83. package/dist/index.d.ts +94 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +258 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/mcp/errors.d.ts +33 -0
  88. package/dist/mcp/errors.d.ts.map +1 -0
  89. package/dist/mcp/errors.js +86 -0
  90. package/dist/mcp/errors.js.map +1 -0
  91. package/dist/mcp/index.d.ts +62 -0
  92. package/dist/mcp/index.d.ts.map +1 -0
  93. package/dist/mcp/index.js +173 -0
  94. package/dist/mcp/index.js.map +1 -0
  95. package/dist/mcp/server.d.ts +17 -0
  96. package/dist/mcp/server.d.ts.map +1 -0
  97. package/dist/mcp/server.js +155 -0
  98. package/dist/mcp/server.js.map +1 -0
  99. package/dist/mcp/tools/guide.d.ts +12 -0
  100. package/dist/mcp/tools/guide.d.ts.map +1 -0
  101. package/dist/mcp/tools/guide.js +801 -0
  102. package/dist/mcp/tools/guide.js.map +1 -0
  103. package/dist/mcp/tools/index.d.ts +11 -0
  104. package/dist/mcp/tools/index.d.ts.map +1 -0
  105. package/dist/mcp/tools/index.js +27 -0
  106. package/dist/mcp/tools/index.js.map +1 -0
  107. package/dist/mcp/tools/market.d.ts +11 -0
  108. package/dist/mcp/tools/market.d.ts.map +1 -0
  109. package/dist/mcp/tools/market.js +314 -0
  110. package/dist/mcp/tools/market.js.map +1 -0
  111. package/dist/mcp/tools/order.d.ts +10 -0
  112. package/dist/mcp/tools/order.d.ts.map +1 -0
  113. package/dist/mcp/tools/order.js +258 -0
  114. package/dist/mcp/tools/order.js.map +1 -0
  115. package/dist/mcp/tools/trade.d.ts +38 -0
  116. package/dist/mcp/tools/trade.d.ts.map +1 -0
  117. package/dist/mcp/tools/trade.js +314 -0
  118. package/dist/mcp/tools/trade.js.map +1 -0
  119. package/dist/mcp/tools/trader.d.ts +11 -0
  120. package/dist/mcp/tools/trader.d.ts.map +1 -0
  121. package/dist/mcp/tools/trader.js +277 -0
  122. package/dist/mcp/tools/trader.js.map +1 -0
  123. package/dist/mcp/tools/wallet.d.ts +274 -0
  124. package/dist/mcp/tools/wallet.d.ts.map +1 -0
  125. package/dist/mcp/tools/wallet.js +579 -0
  126. package/dist/mcp/tools/wallet.js.map +1 -0
  127. package/dist/mcp/types.d.ts +413 -0
  128. package/dist/mcp/types.d.ts.map +1 -0
  129. package/dist/mcp/types.js +5 -0
  130. package/dist/mcp/types.js.map +1 -0
  131. package/dist/services/authorization-service.d.ts +97 -0
  132. package/dist/services/authorization-service.d.ts.map +1 -0
  133. package/dist/services/authorization-service.js +279 -0
  134. package/dist/services/authorization-service.js.map +1 -0
  135. package/dist/services/market-service.d.ts +108 -0
  136. package/dist/services/market-service.d.ts.map +1 -0
  137. package/dist/services/market-service.js +458 -0
  138. package/dist/services/market-service.js.map +1 -0
  139. package/dist/services/realtime-service.d.ts +82 -0
  140. package/dist/services/realtime-service.d.ts.map +1 -0
  141. package/dist/services/realtime-service.js +150 -0
  142. package/dist/services/realtime-service.js.map +1 -0
  143. package/dist/services/swap-service.d.ts +217 -0
  144. package/dist/services/swap-service.d.ts.map +1 -0
  145. package/dist/services/swap-service.js +695 -0
  146. package/dist/services/swap-service.js.map +1 -0
  147. package/dist/services/wallet-service.d.ts +94 -0
  148. package/dist/services/wallet-service.d.ts.map +1 -0
  149. package/dist/services/wallet-service.js +173 -0
  150. package/dist/services/wallet-service.js.map +1 -0
  151. package/dist/utils/price-utils.d.ts +153 -0
  152. package/dist/utils/price-utils.d.ts.map +1 -0
  153. package/dist/utils/price-utils.js +236 -0
  154. package/dist/utils/price-utils.js.map +1 -0
  155. package/docs/00-design.md +760 -0
  156. package/docs/01-mcp.md +2041 -0
  157. package/docs/02-API.md +1148 -0
  158. package/docs/e2e/01-trader-tools.md +159 -0
  159. package/docs/e2e/02-market-tools.md +180 -0
  160. package/docs/e2e/03-order-tools.md +166 -0
  161. package/docs/e2e/04-wallet-tools.md +224 -0
  162. package/docs/e2e/05-trading-tools.md +327 -0
  163. package/docs/e2e/06-integration-scenarios.md +481 -0
  164. package/docs/e2e/coordinator.md +376 -0
  165. package/examples/01-basic-usage.ts +68 -0
  166. package/examples/02-smart-money.ts +95 -0
  167. package/examples/03-market-analysis.ts +108 -0
  168. package/examples/04-kline-aggregation.ts +158 -0
  169. package/examples/05-follow-wallet-strategy.ts +156 -0
  170. package/examples/06-services-demo.ts +124 -0
  171. package/examples/07-realtime-websocket.ts +117 -0
  172. package/examples/08-trading-orders.ts +278 -0
  173. package/examples/09-rewards-tracking.ts +187 -0
  174. package/examples/10-ctf-operations.ts +336 -0
  175. package/examples/11-live-arbitrage-scan.ts +221 -0
  176. package/examples/12-trending-arb-monitor.ts +406 -0
  177. package/examples/README.md +179 -0
  178. package/package.json +62 -0
  179. package/scripts/README.md +163 -0
  180. package/scripts/approvals/approve-erc1155.ts +129 -0
  181. package/scripts/approvals/approve-neg-risk-erc1155.ts +149 -0
  182. package/scripts/approvals/approve-neg-risk.ts +102 -0
  183. package/scripts/approvals/check-all-allowances.ts +150 -0
  184. package/scripts/approvals/check-allowance.ts +129 -0
  185. package/scripts/approvals/check-ctf-approval.ts +158 -0
  186. package/scripts/datas/001-report.md +486 -0
  187. package/scripts/datas/clone-modal-screenshot.png +0 -0
  188. package/scripts/deposit/deposit-native-usdc.ts +179 -0
  189. package/scripts/deposit/deposit-usdc.ts +155 -0
  190. package/scripts/deposit/swap-usdc-to-usdce.ts +375 -0
  191. package/scripts/research/research-markets.ts +166 -0
  192. package/scripts/trading/check-orders.ts +50 -0
  193. package/scripts/trading/sell-nvidia-positions.ts +206 -0
  194. package/scripts/trading/test-order.ts +172 -0
  195. package/scripts/truth.md +440 -0
  196. package/scripts/verify/test-approve-trading.ts +98 -0
  197. package/scripts/verify/test-provider-fix.ts +43 -0
  198. package/scripts/verify/test-search-mcp.ts +113 -0
  199. package/scripts/verify/verify-all-apis.ts +160 -0
  200. package/scripts/wallet/check-wallet-balances.ts +75 -0
  201. package/scripts/wallet/test-wallet-operations.ts +191 -0
  202. package/scripts/wallet/verify-wallet-tools.ts +124 -0
  203. package/src/__tests__/clob-api.test.ts +301 -0
  204. package/src/__tests__/integration/bridge-client.integration.test.ts +314 -0
  205. package/src/__tests__/integration/clob-api.integration.test.ts +218 -0
  206. package/src/__tests__/integration/ctf-client.integration.test.ts +331 -0
  207. package/src/__tests__/integration/data-api.integration.test.ts +194 -0
  208. package/src/__tests__/integration/gamma-api.integration.test.ts +206 -0
  209. package/src/__tests__/test-utils.ts +170 -0
  210. package/src/clients/bridge-client.ts +841 -0
  211. package/src/clients/clob-api.ts +629 -0
  212. package/src/clients/ctf-client.ts +1216 -0
  213. package/src/clients/data-api.ts +469 -0
  214. package/src/clients/gamma-api.ts +597 -0
  215. package/src/clients/trading-client.ts +749 -0
  216. package/src/clients/websocket-manager.ts +267 -0
  217. package/src/core/cache-adapter-bridge.ts +94 -0
  218. package/src/core/cache.ts +85 -0
  219. package/src/core/errors.ts +117 -0
  220. package/src/core/rate-limiter.ts +74 -0
  221. package/src/core/types.ts +360 -0
  222. package/src/core/unified-cache.ts +153 -0
  223. package/src/index.ts +455 -0
  224. package/src/mcp/README.md +380 -0
  225. package/src/mcp/errors.ts +124 -0
  226. package/src/mcp/index.ts +309 -0
  227. package/src/mcp/server.ts +183 -0
  228. package/src/mcp/tools/guide.ts +821 -0
  229. package/src/mcp/tools/index.ts +73 -0
  230. package/src/mcp/tools/market.ts +363 -0
  231. package/src/mcp/tools/order.ts +326 -0
  232. package/src/mcp/tools/trade.ts +417 -0
  233. package/src/mcp/tools/trader.ts +322 -0
  234. package/src/mcp/tools/wallet.ts +683 -0
  235. package/src/mcp/types.ts +472 -0
  236. package/src/services/authorization-service.ts +357 -0
  237. package/src/services/market-service.ts +544 -0
  238. package/src/services/realtime-service.ts +196 -0
  239. package/src/services/swap-service.ts +896 -0
  240. package/src/services/wallet-service.ts +259 -0
  241. package/src/utils/price-utils.ts +307 -0
  242. package/tsconfig.json +8 -0
  243. package/vitest.config.ts +19 -0
  244. package/vitest.integration.config.ts +18 -0
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Order Tools - MCP tools for orderbook analysis
3
+ */
4
+ import { validateConditionId, validateOutcome, validateSide, validatePositiveNumber, wrapError, McpToolError, ErrorCode, } from '../errors.js';
5
+ export const orderToolDefinitions = [
6
+ {
7
+ name: 'get_orderbook',
8
+ description: 'Get orderbook depth for a market outcome',
9
+ inputSchema: {
10
+ type: 'object',
11
+ properties: {
12
+ conditionId: {
13
+ type: 'string',
14
+ description: 'Market condition ID',
15
+ },
16
+ outcome: {
17
+ type: 'string',
18
+ enum: ['Yes', 'No'],
19
+ description: "Which outcome's orderbook to fetch",
20
+ },
21
+ depth: {
22
+ type: 'number',
23
+ description: 'Number of price levels',
24
+ default: 10,
25
+ },
26
+ },
27
+ required: ['conditionId', 'outcome'],
28
+ },
29
+ },
30
+ {
31
+ name: 'get_best_prices',
32
+ description: 'Get best bid/ask prices for both outcomes',
33
+ inputSchema: {
34
+ type: 'object',
35
+ properties: {
36
+ conditionId: {
37
+ type: 'string',
38
+ description: 'Market condition ID',
39
+ },
40
+ },
41
+ required: ['conditionId'],
42
+ },
43
+ },
44
+ {
45
+ name: 'estimate_execution',
46
+ description: 'Estimate execution price and slippage for a trade',
47
+ inputSchema: {
48
+ type: 'object',
49
+ properties: {
50
+ conditionId: {
51
+ type: 'string',
52
+ },
53
+ outcome: {
54
+ type: 'string',
55
+ enum: ['Yes', 'No'],
56
+ },
57
+ side: {
58
+ type: 'string',
59
+ enum: ['BUY', 'SELL'],
60
+ },
61
+ amount: {
62
+ type: 'number',
63
+ description: 'Amount in USDC',
64
+ },
65
+ },
66
+ required: ['conditionId', 'outcome', 'side', 'amount'],
67
+ },
68
+ },
69
+ ];
70
+ export async function handleGetOrderbook(sdk, input) {
71
+ validateConditionId(input.conditionId);
72
+ validateOutcome(input.outcome);
73
+ try {
74
+ // Get market to find the token ID
75
+ const market = await sdk.clobApi.getMarket(input.conditionId);
76
+ const isYes = input.outcome === 'Yes';
77
+ const token = market.tokens.find((t) => t.outcome.toLowerCase() === input.outcome.toLowerCase());
78
+ if (!token) {
79
+ throw new McpToolError(ErrorCode.MARKET_NOT_FOUND, `Token for outcome ${input.outcome} not found`);
80
+ }
81
+ // Get the raw orderbook for this token
82
+ const orderbook = await sdk.clobApi.getOrderbook(token.tokenId);
83
+ const depth = input.depth || 10;
84
+ // Get market title
85
+ let marketTitle = input.conditionId;
86
+ try {
87
+ const unifiedMarket = await sdk.getMarket(input.conditionId);
88
+ marketTitle = unifiedMarket.question;
89
+ }
90
+ catch {
91
+ // Use conditionId as fallback
92
+ }
93
+ // Calculate totals for each level
94
+ let bidTotal = 0;
95
+ let askTotal = 0;
96
+ const bids = orderbook.bids.slice(0, depth).map((level) => {
97
+ bidTotal += level.size * level.price;
98
+ return {
99
+ price: level.price,
100
+ size: level.size,
101
+ total: bidTotal,
102
+ };
103
+ });
104
+ const asks = orderbook.asks.slice(0, depth).map((level) => {
105
+ askTotal += level.size * level.price;
106
+ return {
107
+ price: level.price,
108
+ size: level.size,
109
+ total: askTotal,
110
+ };
111
+ });
112
+ const bestBid = bids[0]?.price || 0;
113
+ const bestAsk = asks[0]?.price || 1;
114
+ const spread = bestAsk - bestBid;
115
+ const spreadPercent = bestBid > 0 ? (spread / bestBid) * 100 : 0;
116
+ const bidDepth = orderbook.bids.slice(0, depth).reduce((sum, l) => sum + l.size, 0);
117
+ const askDepth = orderbook.asks.slice(0, depth).reduce((sum, l) => sum + l.size, 0);
118
+ return {
119
+ market: {
120
+ conditionId: input.conditionId,
121
+ title: marketTitle,
122
+ },
123
+ outcome: input.outcome,
124
+ tokenId: token.tokenId,
125
+ orderbook: {
126
+ bids,
127
+ asks,
128
+ },
129
+ summary: {
130
+ bestBid,
131
+ bestAsk,
132
+ spread,
133
+ spreadPercent,
134
+ bidDepth,
135
+ askDepth,
136
+ },
137
+ };
138
+ }
139
+ catch (err) {
140
+ throw wrapError(err);
141
+ }
142
+ }
143
+ export async function handleGetBestPrices(sdk, input) {
144
+ validateConditionId(input.conditionId);
145
+ try {
146
+ const processedOrderbook = await sdk.clobApi.getProcessedOrderbook(input.conditionId);
147
+ // Get market title
148
+ let marketTitle = input.conditionId;
149
+ try {
150
+ const market = await sdk.getMarket(input.conditionId);
151
+ marketTitle = market.question;
152
+ }
153
+ catch {
154
+ // Use conditionId as fallback
155
+ }
156
+ const yes = processedOrderbook.yes;
157
+ const no = processedOrderbook.no;
158
+ return {
159
+ market: marketTitle,
160
+ yes: {
161
+ bestBid: yes.bid,
162
+ bestAsk: yes.ask,
163
+ midPrice: (yes.bid + yes.ask) / 2,
164
+ spread: yes.spread,
165
+ },
166
+ no: {
167
+ bestBid: no.bid,
168
+ bestAsk: no.ask,
169
+ midPrice: (no.bid + no.ask) / 2,
170
+ spread: no.spread,
171
+ },
172
+ };
173
+ }
174
+ catch (err) {
175
+ throw wrapError(err);
176
+ }
177
+ }
178
+ export async function handleEstimateExecution(sdk, input) {
179
+ validateConditionId(input.conditionId);
180
+ validateOutcome(input.outcome);
181
+ validateSide(input.side);
182
+ validatePositiveNumber(input.amount, 'amount');
183
+ try {
184
+ // Get market to find the token ID
185
+ const market = await sdk.clobApi.getMarket(input.conditionId);
186
+ const token = market.tokens.find((t) => t.outcome.toLowerCase() === input.outcome.toLowerCase());
187
+ if (!token) {
188
+ throw new McpToolError(ErrorCode.MARKET_NOT_FOUND, `Token for outcome ${input.outcome} not found`);
189
+ }
190
+ // Get the raw orderbook
191
+ const orderbook = await sdk.clobApi.getOrderbook(token.tokenId);
192
+ // Get market title
193
+ let marketTitle = input.conditionId;
194
+ try {
195
+ const unifiedMarket = await sdk.getMarket(input.conditionId);
196
+ marketTitle = unifiedMarket.question;
197
+ }
198
+ catch {
199
+ // Use conditionId as fallback
200
+ }
201
+ // Simulate execution
202
+ const isBuy = input.side === 'BUY';
203
+ const levels = isBuy ? orderbook.asks : orderbook.bids;
204
+ if (levels.length === 0) {
205
+ throw new McpToolError(ErrorCode.MARKET_NOT_FOUND, 'No liquidity available for this order');
206
+ }
207
+ let remainingAmount = input.amount;
208
+ let totalShares = 0;
209
+ let worstPrice = levels[0].price;
210
+ for (const level of levels) {
211
+ const levelValue = level.size * level.price;
212
+ if (remainingAmount <= levelValue) {
213
+ // This level can fill the remaining order
214
+ const sharesToBuy = remainingAmount / level.price;
215
+ totalShares += sharesToBuy;
216
+ worstPrice = level.price;
217
+ remainingAmount = 0;
218
+ break;
219
+ }
220
+ else {
221
+ // Consume entire level
222
+ totalShares += level.size;
223
+ remainingAmount -= levelValue;
224
+ worstPrice = level.price;
225
+ }
226
+ }
227
+ // If we couldn't fill the entire order
228
+ if (remainingAmount > 0) {
229
+ throw new McpToolError(ErrorCode.INSUFFICIENT_BALANCE, 'Not enough liquidity to fill the entire order', { remainingAmount, totalShares });
230
+ }
231
+ const avgPrice = input.amount / totalShares;
232
+ const bestPrice = levels[0].price;
233
+ const priceImpact = Math.abs(avgPrice - bestPrice) / bestPrice;
234
+ let warning = null;
235
+ if (priceImpact > 0.05) {
236
+ warning = `High price impact (${(priceImpact * 100).toFixed(1)}%)`;
237
+ }
238
+ return {
239
+ market: marketTitle,
240
+ order: {
241
+ side: input.side,
242
+ outcome: input.outcome,
243
+ usdcAmount: input.amount,
244
+ },
245
+ estimate: {
246
+ avgPrice,
247
+ sharesReceived: totalShares,
248
+ priceImpact,
249
+ worstPrice,
250
+ },
251
+ warning,
252
+ };
253
+ }
254
+ catch (err) {
255
+ throw wrapError(err);
256
+ }
257
+ }
258
+ //# sourceMappingURL=order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/mcp/tools/order.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Trade Tools - MCP tools for trading execution
3
+ *
4
+ * These tools enable actual trading on Polymarket when private key is configured.
5
+ * API credentials are automatically derived from the private key using createOrDeriveApiKey().
6
+ *
7
+ * Required environment variable:
8
+ * - POLY_PRIVATE_KEY: Wallet private key for signing transactions
9
+ */
10
+ import type { PolymarketSDK } from '../../index.js';
11
+ import type { ToolDefinition } from '../types.js';
12
+ export declare const tradeToolDefinitions: ToolDefinition[];
13
+ export interface PlaceLimitOrderInput {
14
+ conditionId: string;
15
+ outcome: 'Yes' | 'No';
16
+ side: 'BUY' | 'SELL';
17
+ price: number;
18
+ size: number;
19
+ orderType?: 'GTC' | 'GTD';
20
+ }
21
+ export interface PlaceMarketOrderInput {
22
+ conditionId: string;
23
+ outcome: 'Yes' | 'No';
24
+ side: 'BUY' | 'SELL';
25
+ amount: number;
26
+ maxSlippage?: number;
27
+ }
28
+ export interface CancelOrderInput {
29
+ orderId: string;
30
+ }
31
+ export interface GetMyOrdersInput {
32
+ status?: 'LIVE' | 'FILLED' | 'CANCELLED';
33
+ }
34
+ export declare function handlePlaceLimitOrder(sdk: PolymarketSDK, input: PlaceLimitOrderInput): Promise<unknown>;
35
+ export declare function handlePlaceMarketOrder(sdk: PolymarketSDK, input: PlaceMarketOrderInput): Promise<unknown>;
36
+ export declare function handleCancelOrder(sdk: PolymarketSDK, input: CancelOrderInput): Promise<unknown>;
37
+ export declare function handleGetMyOrders(sdk: PolymarketSDK, input: GetMyOrdersInput): Promise<unknown>;
38
+ //# sourceMappingURL=trade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trade.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/trade.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgElD,eAAO,MAAM,oBAAoB,EAAE,cAAc,EA6FhD,CAAC;AAqBF,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;CAC1C;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,OAAO,CAAC,CAuDlB;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAiElB;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,OAAO,CAAC,CAwBlB;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,OAAO,CAAC,CAwClB"}
@@ -0,0 +1,314 @@
1
+ /**
2
+ * Trade Tools - MCP tools for trading execution
3
+ *
4
+ * These tools enable actual trading on Polymarket when private key is configured.
5
+ * API credentials are automatically derived from the private key using createOrDeriveApiKey().
6
+ *
7
+ * Required environment variable:
8
+ * - POLY_PRIVATE_KEY: Wallet private key for signing transactions
9
+ */
10
+ import { validateConditionId, validateOutcome, validateSide, validatePrice, validatePositiveNumber, wrapError, McpToolError, ErrorCode, } from '../errors.js';
11
+ import { TradingClient } from '../../clients/trading-client.js';
12
+ import { RateLimiter } from '../../core/rate-limiter.js';
13
+ // Singleton trading client instance (lazily initialized)
14
+ let tradingClient = null;
15
+ let tradingClientInitialized = false;
16
+ /**
17
+ * Get or create the TradingClient instance
18
+ * Uses the signer from SDK's clobApi
19
+ */
20
+ async function getTradingClient(sdk) {
21
+ // Check if signer is available
22
+ const sdkAny = sdk;
23
+ const signer = sdkAny.clobApi?.signer;
24
+ if (!signer) {
25
+ throw new McpToolError(ErrorCode.AUTH_REQUIRED, 'Trading requires a private key. Configure POLY_PRIVATE_KEY environment variable.');
26
+ }
27
+ // Create trading client if not exists
28
+ if (!tradingClient) {
29
+ const signerAny = signer;
30
+ const privateKey = signerAny.privateKey;
31
+ if (!privateKey) {
32
+ throw new McpToolError(ErrorCode.AUTH_REQUIRED, 'Cannot extract private key from signer. Ensure POLY_PRIVATE_KEY is configured correctly.');
33
+ }
34
+ const chainId = sdkAny.clobApi?.config?.chainId || 137;
35
+ const rateLimiter = new RateLimiter();
36
+ tradingClient = new TradingClient(rateLimiter, {
37
+ privateKey,
38
+ chainId,
39
+ });
40
+ }
41
+ // Initialize if needed
42
+ if (!tradingClientInitialized) {
43
+ await tradingClient.initialize();
44
+ tradingClientInitialized = true;
45
+ }
46
+ return tradingClient;
47
+ }
48
+ export const tradeToolDefinitions = [
49
+ {
50
+ name: 'place_limit_order',
51
+ description: 'Place a limit order on a market (requires API key)',
52
+ inputSchema: {
53
+ type: 'object',
54
+ properties: {
55
+ conditionId: {
56
+ type: 'string',
57
+ },
58
+ outcome: {
59
+ type: 'string',
60
+ enum: ['Yes', 'No'],
61
+ },
62
+ side: {
63
+ type: 'string',
64
+ enum: ['BUY', 'SELL'],
65
+ },
66
+ price: {
67
+ type: 'number',
68
+ description: 'Limit price (0.001 to 0.999)',
69
+ },
70
+ size: {
71
+ type: 'number',
72
+ description: 'Number of shares',
73
+ },
74
+ orderType: {
75
+ type: 'string',
76
+ enum: ['GTC', 'GTD'],
77
+ default: 'GTC',
78
+ },
79
+ },
80
+ required: ['conditionId', 'outcome', 'side', 'price', 'size'],
81
+ },
82
+ },
83
+ {
84
+ name: 'place_market_order',
85
+ description: 'Place a market order on a market (requires API key)',
86
+ inputSchema: {
87
+ type: 'object',
88
+ properties: {
89
+ conditionId: {
90
+ type: 'string',
91
+ },
92
+ outcome: {
93
+ type: 'string',
94
+ enum: ['Yes', 'No'],
95
+ },
96
+ side: {
97
+ type: 'string',
98
+ enum: ['BUY', 'SELL'],
99
+ },
100
+ amount: {
101
+ type: 'number',
102
+ description: 'Amount in USDC',
103
+ },
104
+ maxSlippage: {
105
+ type: 'number',
106
+ description: 'Maximum acceptable slippage (e.g., 0.02 for 2%)',
107
+ default: 0.02,
108
+ },
109
+ },
110
+ required: ['conditionId', 'outcome', 'side', 'amount'],
111
+ },
112
+ },
113
+ {
114
+ name: 'cancel_order',
115
+ description: 'Cancel an open order (requires API key)',
116
+ inputSchema: {
117
+ type: 'object',
118
+ properties: {
119
+ orderId: {
120
+ type: 'string',
121
+ description: 'Order ID to cancel',
122
+ },
123
+ },
124
+ required: ['orderId'],
125
+ },
126
+ },
127
+ {
128
+ name: 'get_my_orders',
129
+ description: 'Get your open orders (requires API key)',
130
+ inputSchema: {
131
+ type: 'object',
132
+ properties: {
133
+ status: {
134
+ type: 'string',
135
+ enum: ['LIVE', 'FILLED', 'CANCELLED'],
136
+ default: 'LIVE',
137
+ },
138
+ },
139
+ },
140
+ },
141
+ ];
142
+ // Check if trading is configured (basic check)
143
+ function checkTradingEnabled(sdk) {
144
+ if (!sdk.clobApi) {
145
+ throw new McpToolError(ErrorCode.AUTH_REQUIRED, 'Trading requires SDK to be properly initialized');
146
+ }
147
+ // Check if signer is available
148
+ const sdkAny = sdk;
149
+ if (!sdkAny.clobApi?.signer) {
150
+ throw new McpToolError(ErrorCode.AUTH_REQUIRED, 'Trading requires a private key. Configure POLY_PRIVATE_KEY environment variable.');
151
+ }
152
+ }
153
+ export async function handlePlaceLimitOrder(sdk, input) {
154
+ checkTradingEnabled(sdk);
155
+ validateConditionId(input.conditionId);
156
+ validateOutcome(input.outcome);
157
+ validateSide(input.side);
158
+ validatePrice(input.price);
159
+ validatePositiveNumber(input.size, 'size');
160
+ try {
161
+ // Get token ID for the outcome
162
+ const market = await sdk.clobApi.getMarket(input.conditionId);
163
+ const token = market.tokens.find((t) => t.outcome.toLowerCase() === input.outcome.toLowerCase());
164
+ if (!token) {
165
+ throw new McpToolError(ErrorCode.MARKET_NOT_FOUND, `Token for outcome ${input.outcome} not found`);
166
+ }
167
+ // Get trading client (lazily initialized)
168
+ const client = await getTradingClient(sdk);
169
+ // Place the limit order
170
+ const result = await client.createOrder({
171
+ tokenId: token.tokenId,
172
+ side: input.side,
173
+ price: input.price,
174
+ size: input.size,
175
+ orderType: input.orderType || 'GTC',
176
+ });
177
+ return {
178
+ success: result.success,
179
+ orderId: result.orderId,
180
+ orderIds: result.orderIds,
181
+ market: {
182
+ conditionId: input.conditionId,
183
+ question: market.question,
184
+ outcome: input.outcome,
185
+ },
186
+ order: {
187
+ side: input.side,
188
+ price: input.price,
189
+ size: input.size,
190
+ orderType: input.orderType || 'GTC',
191
+ },
192
+ transactionHashes: result.transactionHashes,
193
+ errorMsg: result.errorMsg,
194
+ };
195
+ }
196
+ catch (err) {
197
+ throw wrapError(err);
198
+ }
199
+ }
200
+ export async function handlePlaceMarketOrder(sdk, input) {
201
+ checkTradingEnabled(sdk);
202
+ validateConditionId(input.conditionId);
203
+ validateOutcome(input.outcome);
204
+ validateSide(input.side);
205
+ validatePositiveNumber(input.amount, 'amount');
206
+ try {
207
+ // Get token ID for the outcome
208
+ const market = await sdk.clobApi.getMarket(input.conditionId);
209
+ const token = market.tokens.find((t) => t.outcome.toLowerCase() === input.outcome.toLowerCase());
210
+ if (!token) {
211
+ throw new McpToolError(ErrorCode.MARKET_NOT_FOUND, `Token for outcome ${input.outcome} not found`);
212
+ }
213
+ // Get trading client (lazily initialized)
214
+ const client = await getTradingClient(sdk);
215
+ // Get current price for slippage calculation
216
+ const currentPrice = token.price;
217
+ const maxSlippage = input.maxSlippage || 0.02; // Default 2%
218
+ // Calculate price limit based on side and slippage
219
+ // For BUY: max price we're willing to pay = current * (1 + slippage)
220
+ // For SELL: min price we're willing to accept = current * (1 - slippage)
221
+ const priceLimit = input.side === 'BUY'
222
+ ? Math.min(currentPrice * (1 + maxSlippage), 0.999)
223
+ : Math.max(currentPrice * (1 - maxSlippage), 0.001);
224
+ // Place the market order
225
+ const result = await client.createMarketOrder({
226
+ tokenId: token.tokenId,
227
+ side: input.side,
228
+ amount: input.amount,
229
+ price: priceLimit,
230
+ orderType: 'FOK', // Fill or Kill for market orders
231
+ });
232
+ return {
233
+ success: result.success,
234
+ orderId: result.orderId,
235
+ orderIds: result.orderIds,
236
+ market: {
237
+ conditionId: input.conditionId,
238
+ question: market.question,
239
+ outcome: input.outcome,
240
+ },
241
+ order: {
242
+ side: input.side,
243
+ amount: input.amount,
244
+ priceLimit,
245
+ maxSlippage,
246
+ },
247
+ transactionHashes: result.transactionHashes,
248
+ errorMsg: result.errorMsg,
249
+ };
250
+ }
251
+ catch (err) {
252
+ throw wrapError(err);
253
+ }
254
+ }
255
+ export async function handleCancelOrder(sdk, input) {
256
+ checkTradingEnabled(sdk);
257
+ if (!input.orderId) {
258
+ throw new McpToolError(ErrorCode.INVALID_INPUT, 'Order ID is required');
259
+ }
260
+ try {
261
+ // Get trading client (lazily initialized)
262
+ const client = await getTradingClient(sdk);
263
+ // Cancel the order
264
+ const result = await client.cancelOrder(input.orderId);
265
+ return {
266
+ success: result.success,
267
+ orderId: input.orderId,
268
+ message: result.success
269
+ ? `Order ${input.orderId} cancelled successfully`
270
+ : `Failed to cancel order ${input.orderId}`,
271
+ };
272
+ }
273
+ catch (err) {
274
+ throw wrapError(err);
275
+ }
276
+ }
277
+ export async function handleGetMyOrders(sdk, input) {
278
+ checkTradingEnabled(sdk);
279
+ try {
280
+ // Get trading client (lazily initialized)
281
+ const client = await getTradingClient(sdk);
282
+ // Note: TradingClient only supports getting open (LIVE) orders
283
+ // For FILLED/CANCELLED, we would need to query trades history
284
+ const status = input.status || 'LIVE';
285
+ if (status !== 'LIVE') {
286
+ // For non-LIVE orders, return a note about limitation
287
+ return {
288
+ orders: [],
289
+ status,
290
+ note: `Currently only LIVE orders are supported. Use get_trader_trades for historical order information.`,
291
+ };
292
+ }
293
+ // Get open orders
294
+ const orders = await client.getOpenOrders();
295
+ return {
296
+ orders: orders.map(o => ({
297
+ id: o.id,
298
+ status: o.status,
299
+ tokenId: o.tokenId,
300
+ side: o.side,
301
+ price: o.price,
302
+ originalSize: o.originalSize,
303
+ remainingSize: o.remainingSize,
304
+ createdAt: o.createdAt,
305
+ })),
306
+ count: orders.length,
307
+ status: 'LIVE',
308
+ };
309
+ }
310
+ catch (err) {
311
+ throw wrapError(err);
312
+ }
313
+ }
314
+ //# sourceMappingURL=trade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trade.js","sourceRoot":"","sources":["../../../src/mcp/tools/trade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Trader Tools - MCP tools for trader/wallet analysis
3
+ */
4
+ import type { PolymarketSDK } from '../../index.js';
5
+ import type { ToolDefinition, GetTraderPositionsInput, GetTraderPositionsOutput, GetTraderTradesInput, GetTraderTradesOutput, GetTraderProfileInput, GetTraderProfileOutput, GetLeaderboardInput, GetLeaderboardOutput } from '../types.js';
6
+ export declare const traderToolDefinitions: ToolDefinition[];
7
+ export declare function handleGetTraderPositions(sdk: PolymarketSDK, input: GetTraderPositionsInput): Promise<GetTraderPositionsOutput>;
8
+ export declare function handleGetTraderTrades(sdk: PolymarketSDK, input: GetTraderTradesInput): Promise<GetTraderTradesOutput>;
9
+ export declare function handleGetTraderProfile(sdk: PolymarketSDK, input: GetTraderProfileInput): Promise<GetTraderProfileOutput>;
10
+ export declare function handleGetLeaderboard(sdk: PolymarketSDK, input: GetLeaderboardInput): Promise<GetLeaderboardOutput>;
11
+ //# sourceMappingURL=trader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trader.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/trader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EACV,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAGrB,eAAO,MAAM,qBAAqB,EAAE,cAAc,EAwEjD,CAAC;AAEF,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CAiDnC;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAwDhC;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CA4EjC;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CA8B/B"}