polymarket-trader-mcp 1.4.0 → 1.5.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.
- package/README.md +57 -1
- package/dist/index.js +214 -52
- package/dist/index.js.map +1 -1
- package/dist/services/trade-executor.d.ts.map +1 -1
- package/dist/services/trade-executor.js +8 -1
- package/dist/services/trade-executor.js.map +1 -1
- package/dist/tools/analyze-trader.js +1 -1
- package/dist/tools/analyze-trader.js.map +1 -1
- package/dist/tools/backtest-trader.js +1 -1
- package/dist/tools/backtest-trader.js.map +1 -1
- package/dist/tools/batch-order.d.ts.map +1 -1
- package/dist/tools/batch-order.js +8 -0
- package/dist/tools/batch-order.js.map +1 -1
- package/dist/tools/buy.d.ts.map +1 -1
- package/dist/tools/buy.js +5 -0
- package/dist/tools/buy.js.map +1 -1
- package/dist/tools/find-related.js +1 -1
- package/dist/tools/find-related.js.map +1 -1
- package/dist/tools/get-market-events.js +1 -1
- package/dist/tools/get-market-events.js.map +1 -1
- package/dist/tools/get-trader-positions.js +1 -1
- package/dist/tools/get-trader-positions.js.map +1 -1
- package/dist/tools/log-cycle.d.ts +1 -1
- package/dist/tools/place-stink-bid.js +2 -2
- package/dist/tools/place-stink-bid.js.map +1 -1
- package/dist/tools/score-trader.js +1 -1
- package/dist/tools/score-trader.js.map +1 -1
- package/dist/tools/set-exit-rules.js +1 -1
- package/dist/tools/set-exit-rules.js.map +1 -1
- package/dist/tools/watch-market.js +3 -3
- package/dist/tools/watch-market.js.map +1 -1
- package/dist/utils/config.d.ts +1 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +1 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +24 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/safety.d.ts +12 -0
- package/dist/utils/safety.d.ts.map +1 -0
- package/dist/utils/safety.js +23 -0
- package/dist/utils/safety.js.map +1 -0
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
# Polymarket Trader MCP Server
|
|
2
2
|
|
|
3
|
+
[](https://mcp-marketplace.io/server/polymarket-mcp-server)
|
|
3
4
|
[](https://nodejs.org)
|
|
4
5
|
[](https://www.typescriptlang.org)
|
|
5
6
|
[](https://modelcontextprotocol.io)
|
|
6
7
|
[](https://opensource.org/licenses/MIT)
|
|
7
8
|
[]()
|
|
8
9
|
[]()
|
|
9
|
-
[](https://mcp-marketplace.io/server/polymarket-mcp-server)
|
|
10
10
|
[](https://glama.ai/mcp/servers/demwick/polymarket-trader-mcp)
|
|
11
11
|
|
|
12
|
+
|
|
12
13
|
**Trade, analyze, and automate Polymarket prediction markets through AI.**
|
|
13
14
|
|
|
14
15
|
The most comprehensive MCP server for Polymarket — 48 tools spanning direct trading, market discovery, smart money tracking, copy trading, backtesting, risk management, and portfolio optimization. Works with Claude Code, Cursor, or any MCP-compatible client.
|
|
@@ -207,6 +208,61 @@ Claude Code / Cursor / AI Client
|
|
|
207
208
|
|
|
208
209
|
---
|
|
209
210
|
|
|
211
|
+
## HTTP Transport & Deployment
|
|
212
|
+
|
|
213
|
+
The server supports two transport modes:
|
|
214
|
+
|
|
215
|
+
| Mode | Activation | Use case |
|
|
216
|
+
|------|-----------|----------|
|
|
217
|
+
| **stdio** (default) | `npx polymarket-trader-mcp` | Claude Code, Cursor, local MCP clients |
|
|
218
|
+
| **HTTP** | `--http` flag or `PORT` env var | Smithery, Railway, Docker, remote hosting |
|
|
219
|
+
|
|
220
|
+
### Starting in HTTP mode
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# Flag
|
|
224
|
+
node dist/index.js --http
|
|
225
|
+
|
|
226
|
+
# Or set PORT (defaults to 3000)
|
|
227
|
+
PORT=8080 node dist/index.js
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Endpoints
|
|
231
|
+
|
|
232
|
+
| Path | Method | Description |
|
|
233
|
+
|------|--------|-------------|
|
|
234
|
+
| `/mcp` | POST | MCP protocol endpoint (Streamable HTTP transport) |
|
|
235
|
+
| `/health` | GET | Health check — returns `{ status, version, db }` |
|
|
236
|
+
| `/.well-known/mcp/server-card.json` | GET | Server discovery card for Smithery |
|
|
237
|
+
| `/` | GET | Server info with version and endpoint list |
|
|
238
|
+
|
|
239
|
+
### Authentication
|
|
240
|
+
|
|
241
|
+
Set `MCP_API_KEY` to require Bearer token auth on the `/mcp` endpoint:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
MCP_API_KEY=my-secret-key node dist/index.js --http
|
|
245
|
+
# Clients must send: Authorization: Bearer my-secret-key
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
When `MCP_API_KEY` is not set, the `/mcp` endpoint is open (suitable for local/private networks).
|
|
249
|
+
|
|
250
|
+
### Docker deployment
|
|
251
|
+
|
|
252
|
+
The included `Dockerfile` builds a multi-stage production image that runs in HTTP mode:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
docker build -t polymarket-mcp .
|
|
256
|
+
docker run -p 3000:3000 -v mcp-data:/app/data \
|
|
257
|
+
-e MCP_API_KEY=my-secret-key \
|
|
258
|
+
-e DAILY_BUDGET=50 \
|
|
259
|
+
polymarket-mcp
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
`DB_PATH` (default `/app/data/copytrader.db`) controls where SQLite data is persisted — mount a volume to keep it across restarts.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
210
266
|
## Configuration
|
|
211
267
|
|
|
212
268
|
| Variable | Required | Default | Description |
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { z } from "zod";
|
|
2
3
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
4
|
+
import { completable } from "@modelcontextprotocol/sdk/server/completable.js";
|
|
3
5
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
6
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
7
|
+
import { createServer } from "http";
|
|
8
|
+
import { readFileSync } from "fs";
|
|
4
9
|
import Database from "better-sqlite3";
|
|
5
10
|
import path from "path";
|
|
6
11
|
import { fileURLToPath } from "url";
|
|
@@ -8,8 +13,9 @@ import { createRequire } from "module";
|
|
|
8
13
|
const require = createRequire(import.meta.url);
|
|
9
14
|
const pkg = require("../package.json");
|
|
10
15
|
import { initializeDb } from "./db/schema.js";
|
|
16
|
+
import { getWatchlist, getOpenPositions } from "./db/queries.js";
|
|
11
17
|
import { getConfig, hasLiveCredentials, validateLiveCredentials } from "./utils/config.js";
|
|
12
|
-
import { log } from "./utils/logger.js";
|
|
18
|
+
import { log, setMcpServer } from "./utils/logger.js";
|
|
13
19
|
import { safe } from "./utils/tool-wrapper.js";
|
|
14
20
|
import { BudgetManager } from "./services/budget-manager.js";
|
|
15
21
|
import { TradeExecutor } from "./services/trade-executor.js";
|
|
@@ -65,7 +71,7 @@ import { featuredMarketsSchema, handleFeaturedMarkets } from "./tools/featured-m
|
|
|
65
71
|
import { optimizePortfolioSchema, handleOptimizePortfolio } from "./tools/optimize-portfolio.js";
|
|
66
72
|
import { watchPriceSchema, handleWatchPrice } from "./tools/watch-price.js";
|
|
67
73
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
68
|
-
const DB_PATH = path.join(__dirname, "..", "copytrader.db");
|
|
74
|
+
const DB_PATH = process.env.DB_PATH || path.join(__dirname, "..", "copytrader.db");
|
|
69
75
|
const config = getConfig();
|
|
70
76
|
const db = new Database(DB_PATH);
|
|
71
77
|
initializeDb(db);
|
|
@@ -78,55 +84,131 @@ const server = new McpServer({
|
|
|
78
84
|
name: "polymarket-trader-mcp",
|
|
79
85
|
version: pkg.version,
|
|
80
86
|
});
|
|
81
|
-
server
|
|
82
|
-
|
|
83
|
-
server.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
server.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
server.tool("
|
|
123
|
-
server.tool("
|
|
124
|
-
server.tool("
|
|
125
|
-
server.tool("
|
|
126
|
-
server.tool("
|
|
127
|
-
server.tool("
|
|
128
|
-
server.tool("
|
|
87
|
+
setMcpServer(server);
|
|
88
|
+
// MCP Prompts
|
|
89
|
+
server.prompt("daily-trading-cycle", "Run a complete daily trading cycle: check portfolio, scan smart money, discover opportunities, and manage positions", () => ({
|
|
90
|
+
messages: [{
|
|
91
|
+
role: "user",
|
|
92
|
+
content: {
|
|
93
|
+
type: "text",
|
|
94
|
+
text: `Run my daily Polymarket trading cycle:
|
|
95
|
+
1. Call dashboard.get for current status
|
|
96
|
+
2. Call portfolio.get to review open positions
|
|
97
|
+
3. Call positions.check_exits to handle stop-loss/take-profit triggers
|
|
98
|
+
4. Call flow.discover to scan smart money convergence signals
|
|
99
|
+
5. Call markets.trending to find high-volume opportunities
|
|
100
|
+
6. Call portfolio.risk to check portfolio health
|
|
101
|
+
7. Summarize findings and suggest next actions`
|
|
102
|
+
}
|
|
103
|
+
}]
|
|
104
|
+
}));
|
|
105
|
+
server.prompt("evaluate-trader", "Deep evaluation of a trader before adding to watchlist", {
|
|
106
|
+
address: completable(z.string().describe("Ethereum wallet address of the trader to evaluate"), (value) => {
|
|
107
|
+
const rows = getWatchlist(db);
|
|
108
|
+
const addresses = rows.map(r => r.address);
|
|
109
|
+
if (!value)
|
|
110
|
+
return addresses;
|
|
111
|
+
const lower = value.toLowerCase();
|
|
112
|
+
return addresses.filter(a => a.toLowerCase().startsWith(lower));
|
|
113
|
+
}),
|
|
114
|
+
}, (input) => ({
|
|
115
|
+
messages: [{
|
|
116
|
+
role: "user",
|
|
117
|
+
content: {
|
|
118
|
+
type: "text",
|
|
119
|
+
text: `Evaluate trader ${input.address} for copy trading:
|
|
120
|
+
1. Call traders.analyze with this address for profile and stats
|
|
121
|
+
2. Call traders.score to get conviction score across 5 dimensions
|
|
122
|
+
3. Call traders.positions to see their current positions
|
|
123
|
+
4. Call traders.backtest to simulate historical performance
|
|
124
|
+
5. Based on all data, recommend whether to add this trader to the watchlist`
|
|
125
|
+
}
|
|
126
|
+
}]
|
|
127
|
+
}));
|
|
128
|
+
server.tool("traders.discover", "Fetch top traders from the Polymarket leaderboard ranked by PnL, volume, and ROI. Use this to find profitable traders worth copying. Returns trader address, PnL, volume, and win rate. Use auto_watch to add them to your watchlist directly.", discoverTradersSchema.shape, safe("traders.discover", async (input) => ({ content: [{ type: "text", text: await handleDiscoverTraders(db, discoverTradersSchema.parse(input)) }] })));
|
|
129
|
+
server.tool("watchlist.add", "Add or remove an Ethereum wallet address from the copy trading watchlist. Watched wallets are monitored for new trades when the monitor is running. Use discover_traders first to find good wallets to watch.", watchWalletSchema.shape, safe("watchlist.add", async (input) => ({ content: [{ type: "text", text: await handleWatchWallet(db, watchWalletSchema.parse(input)) }] })));
|
|
130
|
+
server.tool("watchlist.list", "Show all wallet addresses currently on the copy trading watchlist with their aliases and status. Returns a table of watched wallets. No parameters needed.", {}, safe("watchlist.list", async () => ({ content: [{ type: "text", text: await handleListWatchlist(db) }] })));
|
|
131
|
+
server.tool("monitor.start", "Start a background loop that polls watched wallets for new trades and automatically copies them. Runs continuously at the specified interval until stop_monitor is called. Requires at least one wallet on the watchlist. Pro feature.", startMonitorSchema.shape, safe("monitor.start", async (input) => ({ content: [{ type: "text", text: await handleStartMonitor(db, walletMonitor, startMonitorSchema.parse(input)) }] })));
|
|
132
|
+
server.tool("monitor.stop", "Stop the background wallet monitoring loop started by start_monitor. No parameters needed. Safe to call even if monitor is not running.", {}, safe("monitor.stop", async () => ({ content: [{ type: "text", text: await handleStopMonitor(walletMonitor) }] })));
|
|
133
|
+
server.tool("dashboard.get", "Get a comprehensive dashboard showing daily budget usage, total P&L, recent trades, watchlist status, and monitor state. No parameters needed. Use this for a quick overview of your trading activity.", {}, safe("dashboard.get", async () => ({ content: [{ type: "text", text: await handleGetDashboard(db, budgetManager, walletMonitor, tradeExecutor.getMode()) }] })));
|
|
134
|
+
server.tool("trades.history", "Retrieve past copy trades from the database with optional filters by trader address or status. Returns trade details including entry price, P&L, and market info. Pro feature.", tradeHistorySchema.shape, safe("trades.history", async (input) => ({ content: [{ type: "text", text: await handleGetTradeHistory(db, tradeHistorySchema.parse(input)) }] })));
|
|
135
|
+
server.tool("config.set", "Update bot configuration at runtime. Supports daily_budget (max USDC per day) and min_conviction (minimum trade size to copy). Changes take effect immediately and persist across restarts. Pro feature.", setConfigSchema.shape, safe("config.set", async (input) => ({ content: [{ type: "text", text: await handleSetConfig(db, budgetManager, setConfigSchema.parse(input)) }] })));
|
|
136
|
+
server.tool("config.go_live", "Switch from preview (simulated) to live trading mode where real orders are placed on Polymarket. Requires POLY_API_KEY, POLY_API_SECRET, POLY_API_PASSPHRASE, and POLY_PRIVATE_KEY in environment. This action uses real money. Pro feature.", goLiveSchema.shape, safe("config.go_live", async (input) => ({ content: [{ type: "text", text: await handleGoLive(tradeExecutor, goLiveSchema.parse(input)) }] })));
|
|
137
|
+
server.tool("traders.analyze", "Analyze a Polymarket trader by wallet address. Returns profile stats, active positions, win rate, volume, PnL, and recent trade activity. Use before adding a trader to your watchlist to assess their quality.", analyzeTraderSchema.shape, safe("traders.analyze", async (input) => ({ content: [{ type: "text", text: await handleAnalyzeTrader(analyzeTraderSchema.parse(input)) }] })));
|
|
138
|
+
server.tool("traders.positions", "View another trader's current open positions on Polymarket by their wallet address. Shows market name, outcome, size, and current price. Useful for due diligence before copy trading. Pro feature.", getTraderPositionsSchema.shape, safe("traders.positions", async (input) => ({ content: [{ type: "text", text: await handleGetTraderPositions(getTraderPositionsSchema.parse(input)) }] })));
|
|
139
|
+
server.tool("positions.list", "View your own copy trading positions filtered by status (open, closed, or all). Returns market name, entry price, current price, P&L, and exit rules for each position.", getPositionsSchema.shape, safe("positions.list", async (input) => ({ content: [{ type: "text", text: await handleGetPositions(db, getPositionsSchema.parse(input)) }] })));
|
|
140
|
+
server.tool("positions.close", "Manually close a copy trading position by trade ID. In live mode, places a sell order on Polymarket. In preview mode, marks the position as closed in the database. Use get_positions to find the trade_id. Pro feature.", closePositionSchema.shape, safe("positions.close", async (input) => ({ content: [{ type: "text", text: await handleClosePosition(db, closePositionSchema.parse(input)) }] })));
|
|
141
|
+
server.tool("markets.discover", "Find active Polymarket prediction markets filtered by resolution deadline and category. Returns market question, price, volume, and end date. Use ending='today' for fast-resolving markets, or 'all' to browse everything.", discoverMarketsSchema.shape, safe("markets.discover", async (input) => ({ content: [{ type: "text", text: await handleDiscoverMarkets(discoverMarketsSchema.parse(input)) }] })));
|
|
142
|
+
server.tool("markets.price", "Get live bid/ask/spread prices from the CLOB order book for a specific market by condition_id. If no condition_id is given and show_positions is true, returns current prices for all open positions.", getPriceSchema.shape, safe("markets.price", async (input) => ({ content: [{ type: "text", text: await handleGetPrice(db, getPriceSchema.parse(input)) }] })));
|
|
143
|
+
server.tool("wta.discover", "Find today's WTA tennis match markets on Polymarket where the favorite is available at a discount. Returns matches with current price vs fair price and the discount percentage. Use place_stink_bid to act on these opportunities. Pro feature.", discoverWtaSchema.shape, safe("wta.discover", async (input) => ({ content: [{ type: "text", text: await handleDiscoverWta(discoverWtaSchema.parse(input)) }] })));
|
|
144
|
+
server.tool("wta.bid", "Place limit orders (stink bids) at a discount on WTA tennis match favorites. Orders sit in the order book until filled at your target price. In preview mode, simulates the orders. In live mode, places real CLOB orders. Pro feature.", placeStinkBidSchema.shape, safe("wta.bid", async (input) => ({ content: [{ type: "text", text: await handlePlaceStinkBid(db, tradeExecutor, placeStinkBidSchema.parse(input)) }] })));
|
|
145
|
+
server.tool("orders.cancel", "Cancel all open/pending limit orders on Polymarket. Only works in live mode. Returns the number of cancelled orders. No parameters needed. Pro feature.", cancelOrdersSchema.shape, safe("orders.cancel", async () => ({ content: [{ type: "text", text: await handleCancelOrders(tradeExecutor) }] })));
|
|
146
|
+
server.tool("positions.check_exits", "Scan all open positions for exit conditions: market resolution, stop-loss/take-profit triggers, or the original trader exiting. Updates P&L and closes positions that meet exit criteria. No parameters needed.", {}, safe("positions.check_exits", async () => ({ content: [{ type: "text", text: await handleCheckExits(db) }] })));
|
|
147
|
+
server.tool("agent.log_cycle", "Record an AI agent's trading cycle metrics to the database for dashboard tracking and performance analysis. Stores PnL, win rate, positions, budget usage, and notes. Call this after each automated trading cycle.", logCycleSchema.shape, safe("agent.log_cycle", (input) => ({ content: [{ type: "text", text: handleLogCycle(db, logCycleSchema.parse(input)) }] })));
|
|
148
|
+
server.tool("positions.set_exit_rules", "Set stop-loss and/or take-profit price levels on an open position. When the market price crosses these levels, check_exits will automatically close the position. Use get_positions to find trade IDs. Pro feature.", setExitRulesSchema.shape, safe("positions.set_exit_rules", async (input) => ({ content: [{ type: "text", text: await handleSetExitRules(db, setExitRulesSchema.parse(input)) }] })));
|
|
149
|
+
server.tool("portfolio.get", "Get a comprehensive portfolio overview showing all positions grouped by copied wallet, with per-wallet P&L, individual position details, and active exit rules. No parameters needed.", {}, safe("portfolio.get", async () => ({ content: [{ type: "text", text: await handleGetPortfolio(db) }] })));
|
|
150
|
+
server.tool("traders.backtest", "Simulate copying a trader's historical trades to calculate hypothetical P&L. Shows what you would have earned if you had copy-traded this wallet. Use before adding a trader to your watchlist to validate their performance. Pro feature.", backtestTraderSchema.shape, safe("traders.backtest", async (input) => ({ content: [{ type: "text", text: await handleBacktestTrader(backtestTraderSchema.parse(input)) }] })));
|
|
151
|
+
server.tool("traders.score", "Calculate a conviction score (0-100) for a trader across 5 dimensions: win rate, volume, consistency, experience, and diversity. Higher scores indicate more reliable traders for copy trading. Pro feature.", scoreTraderSchema.shape, safe("traders.score", async (input) => ({ content: [{ type: "text", text: await handleScoreTrader(scoreTraderSchema.parse(input)) }] })));
|
|
152
|
+
server.tool("markets.check", "Evaluate market quality by checking bid/ask spread, order book depth, and price range. Returns a pass/fail with specific reasons. Use before placing trades to avoid illiquid or wide-spread markets. Pro feature.", checkMarketSchema.shape, safe("markets.check", async (input) => ({ content: [{ type: "text", text: await handleCheckMarket(checkMarketSchema.parse(input)) }] })));
|
|
153
|
+
server.tool("flow.discover", "Scan top leaderboard traders for smart money convergence signals. Identifies markets where multiple top traders are buying the same outcome simultaneously, indicating strong conviction. Pro feature.", discoverFlowSchema.shape, safe("flow.discover", async (input) => ({ content: [{ type: "text", text: await handleDiscoverFlow(discoverFlowSchema.parse(input)) }] })));
|
|
154
|
+
server.tool("markets.price_history", "Fetch historical OHLC price data for a market token over a configurable time window (1h to 1m). Returns price points with a sparkline visualization showing the price trend. Pro feature.", getPriceHistorySchema.shape, safe("markets.price_history", async (input) => ({ content: [{ type: "text", text: await handleGetPriceHistory(getPriceHistorySchema.parse(input)) }] })));
|
|
155
|
+
server.tool("markets.watch", "Manage your market watchlist: add, remove, or list watched markets with optional price alert thresholds. When a market crosses your alert price, it shows up in check_exits.", watchMarketSchema.shape, safe("markets.watch", async (input) => ({ content: [{ type: "text", text: await handleWatchMarket(db, watchMarketSchema.parse(input)) }] })));
|
|
156
|
+
server.tool("watchlist.rebalance", "Analyze all traders on your watchlist and remove underperformers whose conviction score or win rate falls below your threshold. Use to keep your watchlist focused on high-quality traders. Pro feature.", rebalanceSchema.shape, safe("watchlist.rebalance", async (input) => ({ content: [{ type: "text", text: await handleRebalance(db, rebalanceSchema.parse(input)) }] })));
|
|
157
|
+
server.tool("orders.buy", "Buy outcome shares on a Polymarket market. Specify condition_id, USDC amount, and optionally a limit price. Runs a market quality check before executing. In preview mode, simulates the trade. In live mode, places a real CLOB order.", buySchema.shape, safe("orders.buy", async (input) => ({ content: [{ type: "text", text: await handleBuy(db, tradeExecutor, buySchema.parse(input)) }] })));
|
|
158
|
+
server.tool("orders.sell", "Sell an open position by trade_id (from get_positions) or condition_id. In live mode, places a sell order on Polymarket. In preview mode, marks the position as sold in the database and calculates realized P&L.", sellSchema.shape, safe("orders.sell", async (input) => ({ content: [{ type: "text", text: await handleSell(db, tradeExecutor, sellSchema.parse(input)) }] })));
|
|
159
|
+
server.tool("portfolio.balance", "View account balance summary: daily budget remaining, total invested, realized and unrealized P&L. No parameters needed. Use this to check how much budget is left before placing new trades.", {}, safe("portfolio.balance", async () => ({ content: [{ type: "text", text: await handleGetBalance(db, budgetManager) }] })));
|
|
160
|
+
server.tool("markets.search", "Search Polymarket markets by keyword query. Returns matching markets with question, price, volume, and condition_id. Use the condition_id from results with buy, get_price, or analyze_opportunity.", searchMarketsSchema.shape, safe("markets.search", async (input) => ({ content: [{ type: "text", text: await handleSearchMarkets(searchMarketsSchema.parse(input)) }] })));
|
|
161
|
+
server.tool("markets.arbitrage", "Scan active Polymarket markets for arbitrage opportunities where YES + NO prices don't sum to $1.00. Returns markets with the price gap and potential profit percentage.", detectArbitrageSchema.shape, safe("markets.arbitrage", async (input) => ({ content: [{ type: "text", text: await handleDetectArbitrage(detectArbitrageSchema.parse(input)) }] })));
|
|
162
|
+
server.tool("markets.related", "Find Polymarket markets related to a given condition_id or topic keyword. Useful for discovering correlated markets or building a diversified position across related events.", findRelatedSchema.shape, safe("markets.related", async (input) => ({ content: [{ type: "text", text: await handleFindRelated(findRelatedSchema.parse(input)) }] })));
|
|
163
|
+
server.tool("markets.holders", "View the largest position holders in a Polymarket market by condition_id. Shows wallet address, position size, and side (YES/NO). Useful for gauging smart money sentiment on a market.", getTopHoldersSchema.shape, safe("markets.holders", async (input) => ({ content: [{ type: "text", text: await handleGetTopHolders(getTopHoldersSchema.parse(input)) }] })));
|
|
164
|
+
server.tool("markets.trending", "List trending Polymarket markets ranked by trading volume over a configurable period (24h, 7d, or 30d). Filter by category to focus on specific topics. Returns market question, price, and volume.", trendingMarketsSchema.shape, safe("markets.trending", async (input) => ({ content: [{ type: "text", text: await handleTrendingMarkets(trendingMarketsSchema.parse(input)) }] })));
|
|
165
|
+
server.tool("markets.analyze", "Generate a BUY/SELL/HOLD recommendation for a Polymarket market by analyzing price, spread, price trend, and liquidity depth. Returns a score with detailed reasoning. Read-only analysis, does not place trades.", analyzeOpportunitySchema.shape, safe("markets.analyze", async (input) => ({ content: [{ type: "text", text: await handleAnalyzeOpportunity(analyzeOpportunitySchema.parse(input)) }] })));
|
|
166
|
+
server.tool("portfolio.risk", "Assess portfolio risk across 4 dimensions: position concentration, market diversification, stop-loss/take-profit coverage, and daily budget utilization. Returns a risk score with specific warnings. No parameters needed.", {}, safe("portfolio.risk", async () => ({ content: [{ type: "text", text: await handleAssessRisk(db, budgetManager) }] })));
|
|
167
|
+
server.tool("orders.batch", "Execute multiple buy/sell orders in a single call (max 10 orders). Each order specifies a condition_id, amount, optional price, and side. Returns per-order results with success/failure status.", batchOrderSchema.shape, safe("orders.batch", async (input) => ({ content: [{ type: "text", text: await handleBatchOrder(db, tradeExecutor, batchOrderSchema.parse(input)) }] })));
|
|
168
|
+
server.tool("config.safety_limits", "Configure trading safety guardrails: maximum order size in USDC, total exposure cap, and maximum spread tolerance. These limits are enforced on all subsequent buy/sell operations. Changes persist in the database.", setSafetyLimitsSchema.shape, safe("config.safety_limits", (input) => ({ content: [{ type: "text", text: handleSetSafetyLimits(db, setSafetyLimitsSchema.parse(input)) }] })));
|
|
169
|
+
server.tool("orders.list", "View all pending limit orders on Polymarket that have not yet been filled. Only returns results in live mode. No parameters needed.", {}, safe("orders.list", async () => ({ content: [{ type: "text", text: await handleGetOpenOrders(tradeExecutor) }] })));
|
|
170
|
+
server.tool("orders.status", "Check the current status of a specific Polymarket order by order ID. Returns fill status, price, and amount. Only works in live mode.", getOrderStatusSchema.shape, safe("orders.status", async (input) => ({ content: [{ type: "text", text: await handleGetOrderStatus(tradeExecutor, getOrderStatusSchema.parse(input)) }] })));
|
|
171
|
+
server.tool("markets.events", "Browse Polymarket event groups to find all markets under a single event (e.g. 'US Election', 'UFC 300', 'NBA Finals'). Returns the event with all its sub-markets and their current prices.", getMarketEventsSchema.shape, safe("markets.events", async (input) => ({ content: [{ type: "text", text: await handleGetMarketEvents(getMarketEventsSchema.parse(input)) }] })));
|
|
172
|
+
server.tool("markets.compare", "Compare 2-5 Polymarket markets side by side. Shows price, spread, order book depth, volume, and quality score for each market. Useful for choosing the best market to trade among similar options.", compareMarketsSchema.shape, safe("markets.compare", async (input) => ({ content: [{ type: "text", text: await handleCompareMarkets(compareMarketsSchema.parse(input)) }] })));
|
|
173
|
+
server.tool("markets.featured", "List top Polymarket markets ranked by liquidity with optional category filter (politics, sports, crypto, pop-culture, business, science). Returns the most liquid and actively traded markets.", featuredMarketsSchema.shape, safe("markets.featured", async (input) => ({ content: [{ type: "text", text: await handleFeaturedMarkets(featuredMarketsSchema.parse(input)) }] })));
|
|
174
|
+
server.tool("portfolio.optimize", "Analyze your open positions and generate optimization recommendations based on your chosen strategy (conservative, balanced, or aggressive). Returns SL/TP suggestions, concentration warnings, and cut/hold/take-profit actions for each position.", optimizePortfolioSchema.shape, safe("portfolio.optimize", async (input) => ({ content: [{ type: "text", text: await handleOptimizePortfolio(db, optimizePortfolioSchema.parse(input)) }] })));
|
|
175
|
+
server.tool("markets.watch_price", "Manage live WebSocket price subscriptions for real-time market updates. Subscribe to a token_id to start streaming price changes, unsubscribe to stop, or check connection status.", watchPriceSchema.shape, safe("markets.watch_price", (input) => ({ content: [{ type: "text", text: handleWatchPrice(priceStream, watchPriceSchema.parse(input)) }] })));
|
|
176
|
+
// MCP Resources
|
|
177
|
+
server.resource("watchlist", "polymarket://watchlist", { description: "Current copy trading watchlist with trader addresses, aliases, and performance stats", mimeType: "application/json" }, async () => ({
|
|
178
|
+
contents: [{
|
|
179
|
+
uri: "polymarket://watchlist",
|
|
180
|
+
mimeType: "application/json",
|
|
181
|
+
text: JSON.stringify(getWatchlist(db), null, 2),
|
|
182
|
+
}],
|
|
183
|
+
}));
|
|
184
|
+
server.resource("positions", "polymarket://positions", { description: "All open trading positions with entry price, current status, and exit rules", mimeType: "application/json" }, async () => ({
|
|
185
|
+
contents: [{
|
|
186
|
+
uri: "polymarket://positions",
|
|
187
|
+
mimeType: "application/json",
|
|
188
|
+
text: JSON.stringify(getOpenPositions(db), null, 2),
|
|
189
|
+
}],
|
|
190
|
+
}));
|
|
191
|
+
server.resource("budget", "polymarket://budget/today", { description: "Today's budget usage, remaining allowance, and daily limit", mimeType: "application/json" }, async () => {
|
|
192
|
+
const remaining = budgetManager.getRemainingBudget();
|
|
193
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
194
|
+
const row = db.prepare("SELECT COALESCE(SUM(amount), 0) as spent FROM daily_budget WHERE date = ?").get(today);
|
|
195
|
+
return {
|
|
196
|
+
contents: [{
|
|
197
|
+
uri: "polymarket://budget/today",
|
|
198
|
+
mimeType: "application/json",
|
|
199
|
+
text: JSON.stringify({ daily_limit: config.DAILY_BUDGET, spent: row.spent, remaining, date: today }, null, 2),
|
|
200
|
+
}],
|
|
201
|
+
};
|
|
202
|
+
});
|
|
203
|
+
server.resource("trades", "polymarket://trades/recent", { description: "Recent trade history with P&L and execution details", mimeType: "application/json" }, async () => ({
|
|
204
|
+
contents: [{
|
|
205
|
+
uri: "polymarket://trades/recent",
|
|
206
|
+
mimeType: "application/json",
|
|
207
|
+
text: JSON.stringify(db.prepare("SELECT * FROM trades ORDER BY created_at DESC LIMIT 50").all(), null, 2),
|
|
208
|
+
}],
|
|
209
|
+
}));
|
|
129
210
|
// Start MCP server
|
|
211
|
+
const useHttp = process.argv.includes("--http") || !!process.env.PORT;
|
|
130
212
|
async function main() {
|
|
131
213
|
log("info", "Starting Polymarket Trader MCP Server");
|
|
132
214
|
log("info", `Mode: ${config.COPY_MODE} | Budget: $${config.DAILY_BUDGET}/day`);
|
|
@@ -137,8 +219,88 @@ async function main() {
|
|
|
137
219
|
if (!config.MCP_LICENSE_KEY) {
|
|
138
220
|
log("info", "No MCP_LICENSE_KEY set — running in Free tier. Pro features are locked.");
|
|
139
221
|
}
|
|
140
|
-
|
|
141
|
-
|
|
222
|
+
if (useHttp) {
|
|
223
|
+
await startHttpServer();
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
const transport = new StdioServerTransport();
|
|
227
|
+
await server.connect(transport);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
async function startHttpServer() {
|
|
231
|
+
const port = parseInt(process.env.PORT || "3000", 10);
|
|
232
|
+
const httpTransport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
|
|
233
|
+
await server.connect(httpTransport);
|
|
234
|
+
const httpServer = createServer(async (req, res) => {
|
|
235
|
+
const url = new URL(req.url || "/", `http://${req.headers.host}`);
|
|
236
|
+
// Server card for Smithery discovery
|
|
237
|
+
if (url.pathname === "/.well-known/mcp/server-card.json") {
|
|
238
|
+
try {
|
|
239
|
+
const card = readFileSync(path.join(__dirname, "..", ".well-known", "mcp", "server-card.json"), "utf-8");
|
|
240
|
+
res.writeHead(200, { "Content-Type": "application/json", "Access-Control-Allow-Origin": "*" });
|
|
241
|
+
res.end(card);
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
res.writeHead(404);
|
|
245
|
+
res.end("Not Found");
|
|
246
|
+
}
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
// Health check
|
|
250
|
+
if (url.pathname === "/health") {
|
|
251
|
+
try {
|
|
252
|
+
db.prepare("SELECT 1").get();
|
|
253
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
254
|
+
res.end(JSON.stringify({ status: "ok", version: pkg.version, db: "connected" }));
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
res.writeHead(503, { "Content-Type": "application/json" });
|
|
258
|
+
res.end(JSON.stringify({ status: "degraded", version: pkg.version, db: "error" }));
|
|
259
|
+
}
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
// MCP endpoint
|
|
263
|
+
if (url.pathname === "/mcp") {
|
|
264
|
+
// Bearer token auth when MCP_API_KEY is configured
|
|
265
|
+
const apiKey = process.env.MCP_API_KEY;
|
|
266
|
+
if (apiKey) {
|
|
267
|
+
const authHeader = req.headers.authorization;
|
|
268
|
+
if (!authHeader || authHeader !== `Bearer ${apiKey}`) {
|
|
269
|
+
res.writeHead(401, { "Content-Type": "application/json" });
|
|
270
|
+
res.end(JSON.stringify({ error: "Unauthorized", message: "Valid Bearer token required" }));
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
try {
|
|
275
|
+
await httpTransport.handleRequest(req, res);
|
|
276
|
+
}
|
|
277
|
+
catch (err) {
|
|
278
|
+
log("error", `MCP request error: ${err}`);
|
|
279
|
+
if (!res.headersSent) {
|
|
280
|
+
res.writeHead(500, { "Content-Type": "application/json" });
|
|
281
|
+
res.end(JSON.stringify({ error: "Internal server error" }));
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
// Root info
|
|
287
|
+
if (url.pathname === "/") {
|
|
288
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
289
|
+
res.end(JSON.stringify({
|
|
290
|
+
name: "polymarket-trader-mcp",
|
|
291
|
+
version: pkg.version,
|
|
292
|
+
mcp: "/mcp",
|
|
293
|
+
health: "/health",
|
|
294
|
+
}));
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
res.writeHead(404);
|
|
298
|
+
res.end("Not Found");
|
|
299
|
+
});
|
|
300
|
+
httpServer.listen(port, () => {
|
|
301
|
+
log("info", `HTTP transport listening on port ${port}`);
|
|
302
|
+
log("info", `MCP endpoint: http://localhost:${port}/mcp`);
|
|
303
|
+
});
|
|
142
304
|
}
|
|
143
305
|
main().catch((err) => {
|
|
144
306
|
console.error("Fatal error:", err);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trade-executor.d.ts","sourceRoot":"","sources":["../../src/services/trade-executor.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"trade-executor.d.ts","sourceRoot":"","sources":["../../src/services/trade-executor.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AActC,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC1B,4EAA4E;IAC5E,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IACzB,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IAItB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,IAAI;IAJd,OAAO,CAAC,UAAU,CAA2B;gBAGnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE,SAAS,GAAG,MAAM;IAG5B,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAOtD,OAAO,CAAC,aAAa;YA2BP,gBAAgB;YA2DhB,aAAa;IAqBrB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAsB1D,OAAO,CAAC,iBAAiB;IAgBnB,eAAe,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAQvD,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI;IAKvC,OAAO,IAAI,MAAM;CAGlB"}
|
|
@@ -3,6 +3,12 @@ import { Wallet } from "@ethersproject/wallet";
|
|
|
3
3
|
import { recordTrade, recordTradeWithBudget } from "../db/queries.js";
|
|
4
4
|
import { getConfig, hasLiveCredentials } from "../utils/config.js";
|
|
5
5
|
import { log } from "../utils/logger.js";
|
|
6
|
+
/** Redact private keys and hex secrets from error messages to prevent leaks in logs. */
|
|
7
|
+
function sanitizeError(msg) {
|
|
8
|
+
// Remove anything that looks like a private key or hex secret (32+ hex chars)
|
|
9
|
+
return msg.replace(/0x[a-fA-F0-9]{32,}/g, "0x[REDACTED]")
|
|
10
|
+
.replace(/[a-fA-F0-9]{64,}/g, "[REDACTED]");
|
|
11
|
+
}
|
|
6
12
|
export class TradeExecutor {
|
|
7
13
|
db;
|
|
8
14
|
mode;
|
|
@@ -84,7 +90,8 @@ export class TradeExecutor {
|
|
|
84
90
|
return { tradeId, mode: "live", status: "executed", message: `Executed: ${order.orderSide ?? "BUY"} $${order.amount} @ ${order.price}` };
|
|
85
91
|
}
|
|
86
92
|
catch (err) {
|
|
87
|
-
const
|
|
93
|
+
const rawMessage = err?.message ?? String(err);
|
|
94
|
+
const message = sanitizeError(rawMessage);
|
|
88
95
|
log("error", `[LIVE] Failed ${order.orderSide ?? "BUY"} on ${order.marketSlug}: ${message}`);
|
|
89
96
|
return this.recordFailedTrade(order, message);
|
|
90
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trade-executor.js","sourceRoot":"","sources":["../../src/services/trade-executor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"trade-executor.js","sourceRoot":"","sources":["../../src/services/trade-executor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,wFAAwF;AACxF,SAAS,aAAa,CAAC,GAAW;IAChC,8EAA8E;IAC9E,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,cAAc,CAAC;SAC9C,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;AACxD,CAAC;AAyBD,MAAM,OAAO,aAAa;IAId;IACA;IAJF,UAAU,GAAsB,IAAI,CAAC;IAE7C,YACU,EAAqB,EACrB,IAAwB;QADxB,OAAE,GAAF,EAAE,CAAmB;QACrB,SAAI,GAAJ,IAAI,CAAoB;IAC/B,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,KAAiB;QAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEO,aAAa,CAAC,KAAiB;QACrC,MAAM,SAAS,GAAG;YAChB,cAAc,EAAE,KAAK,CAAC,aAAa;YACnC,WAAW,EAAE,KAAK,CAAC,UAAU;YAC7B,YAAY,EAAE,KAAK,CAAC,WAAW;YAC/B,QAAQ,EAAE,KAAK,CAAC,OAAO;YACvB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,eAAe,EAAE,KAAK,CAAC,cAAc;YACrC,IAAI,EAAE,SAAkB;YACxB,MAAM,EAAE,WAAoB;SAC7B,CAAC;QAEF,iDAAiD;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM;YAC1B,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;YACjH,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAEpC,GAAG,CAAC,OAAO,EAAE,4BAA4B,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,UAAU,EAAE,EAAE;YAC/F,MAAM,EAAE,KAAK,CAAC,aAAa;YAC3B,OAAO;SACR,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACxH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAiB;QAC9C,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,CAAC,CAAC;gBACX,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,iCAAiC;aAC3C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAC1C;gBACE,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI;gBACJ,IAAI,EAAE,KAAK,CAAC,MAAM;aACnB,EACD,EAAE,QAAQ,EAAE,KAAK,CAAC,QAA+C,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAC3F,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAC1D,CAAC;YAEF,yBAAyB;YACzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrD,MAAM,MAAM,GAAG,IAAI,EAAE,QAAQ,IAAI,wBAAwB,CAAC;gBAC1D,GAAG,CAAC,OAAO,EAAE,0BAA0B,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9F,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE;gBACnC,cAAc,EAAE,KAAK,CAAC,aAAa;gBACnC,WAAW,EAAE,KAAK,CAAC,UAAU;gBAC7B,YAAY,EAAE,KAAK,CAAC,WAAW;gBAC/B,QAAQ,EAAE,KAAK,CAAC,OAAO;gBACvB,IAAI,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK;gBAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,eAAe,EAAE,KAAK,CAAC,cAAc;gBACrC,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;YAEH,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,CAAC,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,UAAU,EAAE,EAAE;gBACnH,MAAM,EAAE,KAAK,CAAC,aAAa;gBAC3B,OAAO;gBACP,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ;aACvC,CAAC,CAAC;YAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,KAAK,CAAC,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3I,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,UAAU,GAAG,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;YAC1C,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,CAAC,SAAS,IAAI,KAAK,OAAO,KAAK,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC;YAC7F,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC;QAE5C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,6BAA6B,CAAC;QAE3C,MAAM,KAAK,GAAG,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAEzF,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAC9B,IAAI,EACJ,MAAM,CAAC,QAAQ,EACf,MAAM,EACN,KAAK,EACL,CAAC,EACD,MAAM,CAAC,mBAAmB,CAC3B,CAAC;QAEF,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAiB;QACjC,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAe,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE;gBACnC,cAAc,EAAE,KAAK,CAAC,aAAa;gBACnC,WAAW,EAAE,KAAK,CAAC,UAAU;gBAC7B,YAAY,EAAE,KAAK,CAAC,WAAW;gBAC/B,QAAQ,EAAE,KAAK,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,eAAe,EAAE,KAAK,CAAC,cAAc;gBACrC,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YACH,GAAG,CAAC,OAAO,EAAE,6BAA6B,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YAClG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QACzH,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAEO,iBAAiB,CAAC,KAAiB,EAAE,MAAc;QACzD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE;YACnC,cAAc,EAAE,KAAK,CAAC,aAAa;YACnC,WAAW,EAAE,KAAK,CAAC,UAAU;YAC7B,YAAY,EAAE,KAAK,CAAC,WAAW;YAC/B,QAAQ,EAAE,KAAK,CAAC,OAAO;YACvB,IAAI,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK;YAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,eAAe,EAAE,KAAK,CAAC,cAAc;YACrC,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,MAAM,EAAE,EAAE,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACpE,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,IAAwB;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -2,7 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { analyzeTrader } from "../services/trader-analyzer.js";
|
|
3
3
|
import { checkLicense } from "../utils/license.js";
|
|
4
4
|
export const analyzeTraderSchema = z.object({
|
|
5
|
-
address: z.string().describe("Trader's Ethereum wallet address (0x...) to analyze"),
|
|
5
|
+
address: z.string().regex(/^0x[a-fA-F0-9]{40}$/, "Must be a valid Ethereum address (0x + 40 hex chars)").describe("Trader's Ethereum wallet address (0x...) to analyze"),
|
|
6
6
|
});
|
|
7
7
|
export async function handleAnalyzeTrader(input) {
|
|
8
8
|
const isPro = await checkLicense();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-trader.js","sourceRoot":"","sources":["../../src/tools/analyze-trader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;
|
|
1
|
+
{"version":3,"file":"analyze-trader.js","sourceRoot":"","sources":["../../src/tools/analyze-trader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,sDAAsD,CAAC,CAAC,QAAQ,CAAC,qDAAqD,CAAC;CACzK,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAA0C;IAClF,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE1D,IAAI,MAAM,GAAG,uBAAuB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACjG,MAAM,IAAI,0CAA0C,CAAC;IACrD,MAAM,IAAI,wBAAwB,OAAO,CAAC,eAAe,MAAM,CAAC;IAChE,MAAM,IAAI,gBAAgB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5D,MAAM,IAAI,0BAA0B,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAE7E,IAAI,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,yBAAyB,CAAC;QACpC,MAAM,IAAI,oFAAoF,CAAC;QAC/F,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;YAC5D,MAAM,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAClH,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,kDAAkD,CAAC;IAC/D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { backtestTrader } from "../services/backtester.js";
|
|
3
3
|
import { checkLicense, requirePro } from "../utils/license.js";
|
|
4
4
|
export const backtestTraderSchema = z.object({
|
|
5
|
-
address: z.string(),
|
|
5
|
+
address: z.string().regex(/^0x[a-fA-F0-9]{40}$/, "Must be a valid Ethereum address (0x + 40 hex chars)").describe("Ethereum wallet address of the trader to backtest"),
|
|
6
6
|
copy_budget: z.number().min(1).max(100).optional().default(5).describe("Simulated $ amount per trade (default: $5)"),
|
|
7
7
|
});
|
|
8
8
|
export async function handleBacktestTrader(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backtest-trader.js","sourceRoot":"","sources":["../../src/tools/backtest-trader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"backtest-trader.js","sourceRoot":"","sources":["../../src/tools/backtest-trader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-order.d.ts","sourceRoot":"","sources":["../../src/tools/batch-order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"batch-order.d.ts","sourceRoot":"","sources":["../../src/tools/batch-order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAY9D,eAAO,MAAM,gBAAgB;;;;;;;;;;iBAE3B,CAAC;AAEH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAiE/I"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { resolveMarketByConditionId } from "../services/market-resolver.js";
|
|
3
|
+
import { checkSafetyLimits } from "../utils/safety.js";
|
|
3
4
|
import { log } from "../utils/logger.js";
|
|
4
5
|
const orderSchema = z.object({
|
|
5
6
|
condition_id: z.string().describe("Polymarket market condition ID (hex string)"),
|
|
@@ -20,6 +21,13 @@ export async function handleBatchOrder(db, executor, input) {
|
|
|
20
21
|
results.push({ market: order.condition_id.slice(0, 12) + "...", status: "failed", message: "Could not resolve market" });
|
|
21
22
|
continue;
|
|
22
23
|
}
|
|
24
|
+
if (order.side === "BUY") {
|
|
25
|
+
const safety = checkSafetyLimits(db, { amount: order.amount, conditionId: order.condition_id });
|
|
26
|
+
if (!safety.pass) {
|
|
27
|
+
results.push({ market: marketInfo.slug?.slice(0, 25) ?? order.condition_id.slice(0, 12), status: "failed", message: `Safety: ${safety.reason}` });
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
23
31
|
const tradeOrder = {
|
|
24
32
|
traderAddress: "direct",
|
|
25
33
|
marketSlug: marketInfo.slug,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-order.js","sourceRoot":"","sources":["../../src/tools/batch-order.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"batch-order.js","sourceRoot":"","sources":["../../src/tools/batch-order.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/buy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buy.d.ts","sourceRoot":"","sources":["../../src/tools/buy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAmB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"buy.d.ts","sourceRoot":"","sources":["../../src/tools/buy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAmB,MAAM,+BAA+B,CAAC;AAO/E,eAAO,MAAM,SAAS;;;;;;;;iBAKpB,CAAC;AAEH,wBAAsB,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA2CjI"}
|
package/dist/tools/buy.js
CHANGED
|
@@ -2,6 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { resolveMarketByConditionId } from "../services/market-resolver.js";
|
|
3
3
|
import { checkMarketQuality } from "../services/market-filter.js";
|
|
4
4
|
import { checkLicense, requirePro } from "../utils/license.js";
|
|
5
|
+
import { checkSafetyLimits } from "../utils/safety.js";
|
|
5
6
|
import { log } from "../utils/logger.js";
|
|
6
7
|
export const buySchema = z.object({
|
|
7
8
|
condition_id: z.string().describe("Polymarket market condition ID (hex string from market URL or API)"),
|
|
@@ -24,6 +25,10 @@ export async function handleBuy(db, executor, input) {
|
|
|
24
25
|
if (!quality.pass) {
|
|
25
26
|
return `Market quality check failed:\n${quality.reasons.map((r) => "- " + r).join("\n")}\n\nUse \`check_market\` for details or proceed with caution.`;
|
|
26
27
|
}
|
|
28
|
+
const safety = checkSafetyLimits(db, { amount: input.amount, conditionId: input.condition_id });
|
|
29
|
+
if (!safety.pass) {
|
|
30
|
+
return `Safety limit exceeded: ${safety.reason}\n\nUse \`set_safety_limits show=true\` to review limits.`;
|
|
31
|
+
}
|
|
27
32
|
const price = input.price ?? quality.metrics.midPrice;
|
|
28
33
|
if (price <= 0)
|
|
29
34
|
return "Could not determine market price. Provide a `price` parameter.";
|
package/dist/tools/buy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buy.js","sourceRoot":"","sources":["../../src/tools/buy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buy.js","sourceRoot":"","sources":["../../src/tools/buy.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ const GAMMA_API_BASE = "https://gamma-api.polymarket.com";
|
|
|
5
5
|
export const findRelatedSchema = z.object({
|
|
6
6
|
condition_id: z.string().optional().describe("Find markets related to this market"),
|
|
7
7
|
query: z.string().optional().describe("Keyword to find related markets (e.g. 'bitcoin', 'trump')"),
|
|
8
|
-
limit: z.number().int().min(1).max(30).optional().default(10),
|
|
8
|
+
limit: z.number().int().min(1).max(30).optional().default(10).describe("Maximum number of related markets to return"),
|
|
9
9
|
});
|
|
10
10
|
export async function handleFindRelated(input) {
|
|
11
11
|
if (!input.condition_id && !input.query) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-related.js","sourceRoot":"","sources":["../../src/tools/find-related.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,MAAM,cAAc,GAAG,kCAAkC,CAAC;AAE1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACnF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAClG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"find-related.js","sourceRoot":"","sources":["../../src/tools/find-related.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ const GAMMA_API_BASE = "https://gamma-api.polymarket.com";
|
|
|
5
5
|
export const getMarketEventsSchema = z.object({
|
|
6
6
|
slug: z.string().optional().describe("Event slug to look up (e.g. 'us-presidential-election-2026')"),
|
|
7
7
|
query: z.string().optional().describe("Search events by keyword"),
|
|
8
|
-
limit: z.number().int().min(1).max(30).optional().default(10),
|
|
8
|
+
limit: z.number().int().min(1).max(30).optional().default(10).describe("Maximum number of events to return"),
|
|
9
9
|
});
|
|
10
10
|
export async function handleGetMarketEvents(input) {
|
|
11
11
|
if (!input.slug && !input.query) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-market-events.js","sourceRoot":"","sources":["../../src/tools/get-market-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,MAAM,cAAc,GAAG,kCAAkC,CAAC;AAE1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;IACpG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACjE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"get-market-events.js","sourceRoot":"","sources":["../../src/tools/get-market-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { getTraderOpenPositions } from "../services/trader-analyzer.js";
|
|
3
3
|
import { checkLicense, requirePro } from "../utils/license.js";
|
|
4
4
|
export const getTraderPositionsSchema = z.object({
|
|
5
|
-
address: z.string().describe("Trader's Ethereum wallet address (0x...)"),
|
|
5
|
+
address: z.string().regex(/^0x[a-fA-F0-9]{40}$/, "Must be a valid Ethereum address (0x + 40 hex chars)").describe("Trader's Ethereum wallet address (0x...)"),
|
|
6
6
|
limit: z.number().int().min(1).max(100).optional().default(20).describe("Maximum number of positions to return"),
|
|
7
7
|
});
|
|
8
8
|
export async function handleGetTraderPositions(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-trader-positions.js","sourceRoot":"","sources":["../../src/tools/get-trader-positions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"get-trader-positions.js","sourceRoot":"","sources":["../../src/tools/get-trader-positions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,sDAAsD,CAAC,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC7J,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACjH,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAA+C;IAC5F,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAEtD,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAE3E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,+BAA+B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjG,CAAC;IAED,IAAI,MAAM,GAAG,oBAAoB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,MAAM,OAAO,CAAC;IACpH,MAAM,IAAI,gGAAgG,CAAC;IAE3G,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,KAAK,KAAK,MAAM,IAAI,OAAO,GAAG,OAAO,KAAK,MAAM,CAAC;IAC7D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -4,8 +4,8 @@ import { hasExistingPosition } from "../db/queries.js";
|
|
|
4
4
|
import { checkLicense, requirePro } from "../utils/license.js";
|
|
5
5
|
import { log } from "../utils/logger.js";
|
|
6
6
|
export const placeStinkBidSchema = z.object({
|
|
7
|
-
discount_pct: z.number().min(5).max(50).optional().default(30),
|
|
8
|
-
bet_size: z.number().min(1).max(50).optional().default(5),
|
|
7
|
+
discount_pct: z.number().min(5).max(50).optional().default(30).describe("Discount percentage below fair price to place the bid (5-50%)"),
|
|
8
|
+
bet_size: z.number().min(1).max(50).optional().default(5).describe("USDC amount per stink bid order (1-50)"),
|
|
9
9
|
});
|
|
10
10
|
export async function handlePlaceStinkBid(db, executor, input) {
|
|
11
11
|
const isPro = await checkLicense();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"place-stink-bid.js","sourceRoot":"","sources":["../../src/tools/place-stink-bid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAe,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"place-stink-bid.js","sourceRoot":"","sources":["../../src/tools/place-stink-bid.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { scoreTrader } from "../services/conviction-scorer.js";
|
|
3
3
|
import { checkLicense, requirePro } from "../utils/license.js";
|
|
4
4
|
export const scoreTraderSchema = z.object({
|
|
5
|
-
address: z.string().describe("Trader's Ethereum wallet address (0x...) to score"),
|
|
5
|
+
address: z.string().regex(/^0x[a-fA-F0-9]{40}$/, "Must be a valid Ethereum address (0x + 40 hex chars)").describe("Trader's Ethereum wallet address (0x...) to score"),
|
|
6
6
|
});
|
|
7
7
|
export async function handleScoreTrader(input) {
|
|
8
8
|
const isPro = await checkLicense();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"score-trader.js","sourceRoot":"","sources":["../../src/tools/score-trader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"score-trader.js","sourceRoot":"","sources":["../../src/tools/score-trader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,sDAAsD,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CACvK,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAwC;IAC9E,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IACzE,CAAC,CAAC;IAEF,IAAI,MAAM,GAAG,wBAAwB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACjG,MAAM,IAAI,cAAc,MAAM,CAAC,KAAK,YAAY,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC;IACnF,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,MAAM,CAAC;IAEzC,MAAM,IAAI,mBAAmB,CAAC;IAC9B,MAAM,IAAI,sDAAsD,CAAC;IACjE,MAAM,IAAI,gBAAgB,MAAM,CAAC,SAAS,CAAC,OAAO,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC;IACnG,MAAM,IAAI,oBAAoB,MAAM,CAAC,SAAS,CAAC,WAAW,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC;IAC/G,MAAM,IAAI,mBAAmB,MAAM,CAAC,SAAS,CAAC,WAAW,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC;IAC9G,MAAM,IAAI,kBAAkB,MAAM,CAAC,SAAS,CAAC,UAAU,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC;IAC3G,MAAM,IAAI,iBAAiB,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC;IAExG,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { setExitRules } from "../db/queries.js";
|
|
3
3
|
import { checkLicense, requirePro } from "../utils/license.js";
|
|
4
4
|
export const setExitRulesSchema = z.object({
|
|
5
|
-
trade_id: z.number().int(),
|
|
5
|
+
trade_id: z.number().int().describe("ID of the open position to set exit rules on (from get_positions)"),
|
|
6
6
|
stop_loss: z.number().min(0).max(1).optional().describe("Price at which to sell (stop-loss). E.g. 0.30 means sell if price drops to $0.30"),
|
|
7
7
|
take_profit: z.number().min(0).max(1).optional().describe("Price at which to sell (take-profit). E.g. 0.85 means sell if price rises to $0.85"),
|
|
8
8
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-exit-rules.js","sourceRoot":"","sources":["../../src/tools/set-exit-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"set-exit-rules.js","sourceRoot":"","sources":["../../src/tools/set-exit-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;IACxG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kFAAkF,CAAC;IAC3I,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;CAChJ,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAqB,EAAE,KAAyC;IACvG,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAEhD,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,iGAAiG,CAAC;IAC3G,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAQ,CAAC;IACjI,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,kCAAkC,KAAK,CAAC,QAAQ,qDAAqD,CAAC;IAC/G,CAAC;IAED,gDAAgD;IAChD,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACtD,OAAO,eAAe,KAAK,CAAC,SAAS,iCAAiC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACnG,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1D,OAAO,iBAAiB,KAAK,CAAC,WAAW,iCAAiC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACvG,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;IACrG,IAAI,CAAC,OAAO;QAAE,OAAO,0DAA0D,CAAC;IAEhF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAE/D,OAAO,gCAAgC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,WAAW,MAAM;QAC/E,WAAW,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;QAC5D,2DAA2D,CAAC;AAChE,CAAC"}
|
|
@@ -3,9 +3,9 @@ import { addMarketWatch, removeMarketWatch, getMarketWatchlist } from "../db/que
|
|
|
3
3
|
import { getMarketPriceByCondition } from "../services/price-service.js";
|
|
4
4
|
import { checkLicense, requirePro } from "../utils/license.js";
|
|
5
5
|
export const watchMarketSchema = z.object({
|
|
6
|
-
action: z.enum(["add", "remove", "list"]).default("list"),
|
|
7
|
-
condition_id: z.string().optional(),
|
|
8
|
-
title: z.string().optional(),
|
|
6
|
+
action: z.enum(["add", "remove", "list"]).default("list").describe("Action to perform: add, remove, or list watched markets"),
|
|
7
|
+
condition_id: z.string().optional().describe("Market condition ID to add or remove from watchlist"),
|
|
8
|
+
title: z.string().optional().describe("Friendly name for the market (shown in watchlist)"),
|
|
9
9
|
alert_below: z.number().min(0).max(1).optional().describe("Alert when price drops below this level"),
|
|
10
10
|
alert_above: z.number().min(0).max(1).optional().describe("Alert when price rises above this level"),
|
|
11
11
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch-market.js","sourceRoot":"","sources":["../../src/tools/watch-market.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"watch-market.js","sourceRoot":"","sources":["../../src/tools/watch-market.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ declare const configSchema: z.ZodObject<{
|
|
|
13
13
|
}>>;
|
|
14
14
|
CHAIN_ID: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
15
15
|
MCP_LICENSE_KEY: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
16
|
+
MCP_API_KEY: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
16
17
|
}, z.core.$strip>;
|
|
17
18
|
export type Config = z.infer<typeof configSchema>;
|
|
18
19
|
export declare function getConfig(): Config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;iBAYhB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAIlD,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAQlD"}
|
package/dist/utils/config.js
CHANGED
|
@@ -12,6 +12,7 @@ const configSchema = z.object({
|
|
|
12
12
|
COPY_MODE: z.enum(["preview", "live"]).default("preview"),
|
|
13
13
|
CHAIN_ID: z.coerce.number().int().positive().default(137),
|
|
14
14
|
MCP_LICENSE_KEY: z.string().optional().default(""),
|
|
15
|
+
MCP_API_KEY: z.string().optional().default(""),
|
|
15
16
|
});
|
|
16
17
|
let _config = null;
|
|
17
18
|
export function getConfig() {
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE/B,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAClD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACzD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACzD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE/B,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAClD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACzD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACzD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAClD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/C,CAAC,CAAC;AAIH,IAAI,OAAO,GAAkB,IAAI,CAAC;AAElC,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;IACtB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;IACtB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,CAAC,CAAC,gBAAgB;QAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,CAAC,YAAY;QAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClD,IAAI,CAAC,CAAC,CAAC,eAAe;QAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACxD,IAAI,CAAC,CAAC,CAAC,mBAAmB;QAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAChE,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
1
2
|
export type LogLevel = "info" | "warn" | "error" | "trade" | "monitor";
|
|
2
3
|
export interface LogEntry {
|
|
3
4
|
timestamp: string;
|
|
@@ -5,6 +6,7 @@ export interface LogEntry {
|
|
|
5
6
|
message: string;
|
|
6
7
|
data?: Record<string, unknown>;
|
|
7
8
|
}
|
|
9
|
+
export declare function setMcpServer(server: McpServer): void;
|
|
8
10
|
export declare function log(level: LogLevel, message: string, data?: Record<string, unknown>): void;
|
|
9
11
|
export declare function getRecentLogs(count?: number): LogEntry[];
|
|
10
12
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAOD,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAEpD;AAUD,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA6B1F;AAED,wBAAgB,aAAa,CAAC,KAAK,SAAK,GAAG,QAAQ,EAAE,CAEpD"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
const logs = [];
|
|
2
2
|
const MAX_LOGS = 500;
|
|
3
|
+
let mcpServer = null;
|
|
4
|
+
export function setMcpServer(server) {
|
|
5
|
+
mcpServer = server;
|
|
6
|
+
}
|
|
7
|
+
const MCP_LOG_LEVEL_MAP = {
|
|
8
|
+
info: "info",
|
|
9
|
+
warn: "warning",
|
|
10
|
+
error: "error",
|
|
11
|
+
trade: "info",
|
|
12
|
+
monitor: "info",
|
|
13
|
+
};
|
|
3
14
|
export function log(level, message, data) {
|
|
4
15
|
const now = new Date();
|
|
5
16
|
const localIso = new Date(now.getTime() - now.getTimezoneOffset() * 60_000).toISOString();
|
|
@@ -16,6 +27,19 @@ export function log(level, message, data) {
|
|
|
16
27
|
// MCP uses stdout for JSON-RPC — all logs MUST go to stderr
|
|
17
28
|
const prefix = `[${entry.timestamp}] [${level.toUpperCase()}]`;
|
|
18
29
|
process.stderr.write(`${prefix} ${message}${data ? " " + JSON.stringify(data) : ""}\n`);
|
|
30
|
+
// Forward to MCP client if connected
|
|
31
|
+
if (mcpServer) {
|
|
32
|
+
try {
|
|
33
|
+
mcpServer.server.sendLoggingMessage({
|
|
34
|
+
level: MCP_LOG_LEVEL_MAP[level],
|
|
35
|
+
logger: `polymarket-${level}`,
|
|
36
|
+
data: { message, ...(data ?? {}) },
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Silently ignore if client disconnected
|
|
41
|
+
}
|
|
42
|
+
}
|
|
19
43
|
}
|
|
20
44
|
export function getRecentLogs(count = 50) {
|
|
21
45
|
return logs.slice(-count);
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAWA,MAAM,IAAI,GAAe,EAAE,CAAC;AAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB,IAAI,SAAS,GAAqB,IAAI,CAAC;AAEvC,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,SAAS,GAAG,MAAM,CAAC;AACrB,CAAC;AAED,MAAM,iBAAiB,GAAmD;IACxE,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;CAChB,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,IAA8B;IAClF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,iBAAiB,EAAE,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1F,MAAM,KAAK,GAAa;QACtB,SAAS,EAAE,QAAQ;QACnB,KAAK;QACL,OAAO;QACP,IAAI;KACL,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;IACzC,CAAC;IACD,4DAA4D;IAC5D,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;IAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAExF,qCAAqC;IACrC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC;gBAClC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC;gBAC/B,MAAM,EAAE,cAAc,KAAK,EAAE;gBAC7B,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE;aACnC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAK,GAAG,EAAE;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import Database from "better-sqlite3";
|
|
2
|
+
interface SafetyCheck {
|
|
3
|
+
amount: number;
|
|
4
|
+
conditionId: string;
|
|
5
|
+
}
|
|
6
|
+
interface SafetyResult {
|
|
7
|
+
pass: boolean;
|
|
8
|
+
reason?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function checkSafetyLimits(db: Database.Database, check: SafetyCheck): SafetyResult;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=safety.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../src/utils/safety.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,YAAY,CA2BzF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { getSafetyLimit } from "../tools/set-safety-limits.js";
|
|
2
|
+
export function checkSafetyLimits(db, check) {
|
|
3
|
+
const maxOrderSize = getSafetyLimit(db, "max_order_size");
|
|
4
|
+
if (maxOrderSize > 0 && check.amount > maxOrderSize) {
|
|
5
|
+
return { pass: false, reason: `Order $${check.amount} exceeds max order size ($${maxOrderSize})` };
|
|
6
|
+
}
|
|
7
|
+
const maxExposure = getSafetyLimit(db, "max_exposure");
|
|
8
|
+
if (maxExposure > 0) {
|
|
9
|
+
const row = db.prepare("SELECT COALESCE(SUM(amount), 0) as total FROM trades WHERE status IN ('simulated', 'executed')").get();
|
|
10
|
+
if (row.total + check.amount > maxExposure) {
|
|
11
|
+
return { pass: false, reason: `Would exceed total exposure limit ($${row.total + check.amount} > $${maxExposure})` };
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const maxPerMarket = getSafetyLimit(db, "max_per_market");
|
|
15
|
+
if (maxPerMarket > 0) {
|
|
16
|
+
const row = db.prepare("SELECT COALESCE(SUM(amount), 0) as total FROM trades WHERE condition_id = ? AND status IN ('simulated', 'executed')").get(check.conditionId);
|
|
17
|
+
if (row.total + check.amount > maxPerMarket) {
|
|
18
|
+
return { pass: false, reason: `Would exceed per-market limit ($${row.total + check.amount} > $${maxPerMarket})` };
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return { pass: true };
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=safety.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety.js","sourceRoot":"","sources":["../../src/utils/safety.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAY/D,MAAM,UAAU,iBAAiB,CAAC,EAAqB,EAAE,KAAkB;IACzE,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAC1D,IAAI,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;QACpD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,KAAK,CAAC,MAAM,6BAA6B,YAAY,GAAG,EAAE,CAAC;IACrG,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,gGAAgG,CACjG,CAAC,GAAG,EAAuB,CAAC;QAC7B,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;YAC3C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,OAAO,WAAW,GAAG,EAAE,CAAC;QACvH,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAC1D,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,qHAAqH,CACtH,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAsB,CAAC;QAC9C,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;YAC5C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,OAAO,YAAY,GAAG,EAAE,CAAC;QACpH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "polymarket-trader-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "MCP server for Polymarket — trade, analyze markets, copy top traders, and manage your portfolio via AI",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
"scripts": {
|
|
10
10
|
"build": "tsc",
|
|
11
11
|
"start": "node dist/index.js",
|
|
12
|
+
"start:http": "node dist/index.js --http",
|
|
12
13
|
"dev": "tsc --watch",
|
|
13
14
|
"test": "vitest run",
|
|
14
15
|
"test:watch": "vitest",
|
|
16
|
+
"test:coverage": "vitest run --coverage",
|
|
15
17
|
"prepublishOnly": "npm run build"
|
|
16
18
|
},
|
|
17
19
|
"type": "module",
|
|
@@ -55,6 +57,7 @@
|
|
|
55
57
|
"@types/better-sqlite3": "^7.6.13",
|
|
56
58
|
"@types/node": "^25.5.2",
|
|
57
59
|
"@types/ws": "^8.18.1",
|
|
60
|
+
"@vitest/coverage-v8": "^4.1.4",
|
|
58
61
|
"typescript": "^6.0.2",
|
|
59
62
|
"vitest": "^4.1.3"
|
|
60
63
|
}
|