predictDEX
Live Polymarket odds, order books, fee-inclusive quotes and non-custodial prediction trading.
Should I use this
Quality & Safety
Findings (2)
- LOWin get_price_history
- LOWin get_leaderboard
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"predictdex": {
"url": "https://predict.dex.mk/mcp"
}
}
}Remote endpoints
https://predict.dex.mk/mcpstreamable-httpWhat it can do
Tool inventory
Tools (11)
🟢search_markets(q, category, sort, status, limit, ...)
Find events and their markets with live odds. Filter by free-text query, category slug (see predict://categories), sort and status. Each event lists markets with outcomes, token ids, best bid/ask, tick size and a human URL.
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free-text search, e.g. 'fed rate october' or 'bitcoin 150k'",
"maxLength": 120
},
"category": {
"type": "string",
"description": "Category slug, e.g. politics, crypto, sports, new, breaking, ending"
},
"sort": {
"type": "string",
"description": "Sort order",
"enum": [
"volume24h",
"volume",
"liquidity",
"newest",
"ending",
"competitive"
]
},
"status": {
"type": "string",
"description": "active (default), resolved or all",
"enum": [
"active",
"resolved",
"all"
]
},
"limit": {
"type": "integer",
"description": "Events to return (1-50, default 20)",
"minimum": 1,
"maximum": 50
},
"offset": {
"type": "integer",
"description": "Pagination offset",
"minimum": 0
},
"maxMarkets": {
"type": "integer",
"description": "Markets per event (1-50, default 5)",
"minimum": 1,
"maximum": 50
}
},
"required": [],
"additionalProperties": false
}🟢get_event(slug, recentTrades)
Full event by slug: every market, outcome names and prices, token ids, tick size, min order size, rules summary, resolution source and status. Optionally include recent trades.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Event slug from search_markets"
},
"recentTrades": {
"type": "integer",
"description": "Include up to N recent trades (0-50)",
"minimum": 0,
"maximum": 50
}
},
"required": [
"slug"
],
"additionalProperties": false
}🟢get_orderbook(tokenId, depth)
Live order book for one outcome token: bids and asks (price 0-1, size in shares), spread, midpoint and last trade.
Input Schema
{
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"description": "Outcome token id (digits) from get_event"
},
"depth": {
"type": "integer",
"description": "Levels per side (1-100, default 20)",
"minimum": 1,
"maximum": 100
}
},
"required": [
"tokenId"
],
"additionalProperties": false
}🟢get_price_history(tokenId, range)
Price (probability) history for one outcome token over a range.
Input Schema
{
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"description": "Outcome token id"
},
"range": {
"type": "string",
"description": "Time range",
"enum": [
"1H",
"6H",
"1D",
"1W",
"1M",
"ALL"
]
}
},
"required": [
"tokenId"
],
"additionalProperties": false
}🟢quote_order(tokenId, side, amount, type, price, ...)
Preview an order against the live book without placing it: average and worst price, shares, cost, payout if the outcome wins, Polymarket fee, predictDEX fee and warnings. Market BUY amount is USD to spend all-in; market SELL and limit amounts are shares.
Input Schema
{
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"description": "Outcome token id"
},
"side": {
"type": "string",
"description": "BUY or SELL",
"enum": [
"BUY",
"SELL"
]
},
"amount": {
"type": "number",
"description": "USD for a market BUY, shares otherwise",
"exclusiveMinimum": 0
},
"type": {
"type": "string",
"description": "market (default) or limit",
"enum": [
"market",
"limit"
]
},
"price": {
"type": "number",
"description": "Limit price as probability 0-1 (required for limit)",
"exclusiveMinimum": 0,
"exclusiveMaximum": 1
},
"slippage": {
"type": "number",
"description": "Market orders: max price move in price units, e.g. 0.02",
"exclusiveMinimum": 0,
"maximum": 0.5
},
"orderType": {
"type": "string",
"description": "FAK/FOK for market, GTC/GTD for limit",
"enum": [
"FAK",
"FOK",
"GTC",
"GTD"
]
},
"expiration": {
"type": "integer",
"description": "GTD expiry, unix seconds"
},
"postOnly": {
"type": "boolean",
"description": "Limit orders: rest only, never take"
}
},
"required": [
"tokenId",
"amount"
],
"additionalProperties": false
}🟢get_trading_setup
Everything an agent with its own wallet needs to trade: chain, collateral (pUSD), builder code, signer URL, attestation steps, fees and a ready-to-run TypeScript snippet using Polymarket's official SDK. Non-custodial: you sign with your own key.
Input Schema
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟢create_trade_link(slug, market, outcome, side, amount)
A pre-filled predictDEX ticket URL (event, market, outcome, side, amount) for a person to review and sign in their own wallet. Opening it executes nothing. Use this when you have no wallet or need human confirmation.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Event slug"
},
"market": {
"type": "string",
"description": "Market id or conditionId (defaults to the event's main market)"
},
"outcome": {
"type": "string",
"description": "0 = first outcome (Yes), 1 = second (No)",
"enum": [
"0",
"1"
]
},
"side": {
"type": "string",
"description": "BUY or SELL",
"enum": [
"BUY",
"SELL"
]
},
"amount": {
"type": "number",
"description": "USD to spend for BUY, shares for SELL",
"exclusiveMinimum": 0
}
},
"required": [
"slug"
],
"additionalProperties": false
}🟢get_positions(address)
Open positions of a Polymarket trading account or its owner address: size, average price, current price, value and P&L.
Input Schema
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "0x address (owner EOA or Deposit Wallet)"
}
},
"required": [
"address"
],
"additionalProperties": false
}🟢get_leaderboard(window, metric, limit)
Top Polymarket traders by profit or volume over a window.
Input Schema
{
"type": "object",
"properties": {
"window": {
"type": "string",
"description": "Time window",
"enum": [
"day",
"week",
"month",
"all"
]
},
"metric": {
"type": "string",
"description": "Ranking metric",
"enum": [
"profit",
"volume"
]
},
"limit": {
"type": "integer",
"description": "Rows (1-100, default 25)",
"minimum": 1,
"maximum": 100
}
},
"required": [],
"additionalProperties": false
}🟢get_agent_challenge(address)
Returns the canonical 'predictDEX Agent Attestation v1' message for your address. Sign it with EIP-191 personal_sign within 10 minutes and pass it to attest_agent.
Input Schema
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Your 0x wallet address"
}
},
"required": [
"address"
],
"additionalProperties": false
}🟡attest_agent(address, message, signature)
Submit the signed attestation. Returns a 30-day agent token that unlocks gasless Polymarket account setup through predictDEX's signer for your address only. It grants no custody and no exemption from region rules.
Input Schema
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "0x address that signed"
},
"message": {
"type": "string",
"description": "The exact challenge message"
},
"signature": {
"type": "string",
"description": "0x EIP-191 signature"
}
},
"required": [
"address",
"message",
"signature"
],
"additionalProperties": false
}Community
Evidence