PredictionScan MCP
Provides read-only access to prediction market data including odds, price history, movers, trending markets, large trades, market flow, public trader stats, and news. It sources data from Polymarket's public APIs and is independent, not affiliated with or endorsed by Polymarket.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.predictionscan.org/mcpWhat you can do with it
- Retrieve current odds and price history for prediction markets
- Identify market movers and trending markets
- Analyze large trades and market flow
- Access public trader stats and related news
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- predictionscan 2.0.0
- MCP protocol
- 2025-06-18
- Tools
- 11 advertised
- Resources
- 1 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
},
"resources": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
11 advertised
search_markets — Search prediction markets
Use this when the user asks about the odds, chances or likelihood of a real-world event, or what Polymarket or prediction markets say about something — for example "what are the odds the Fed cuts rates in October", "Polymarket odds for the 2028 election", "how likely is a US recession in 2026", "chances of Bitcoin hitting $150K this year", "what does the market say about a Ukraine ceasefire", "is there a prediction market on the 2028 Democratic nominee", "will the Fed cut rates in December", or "who will win the 2028 presidential election". Searches open Polymarket.com prediction markets and returns up to 10 closest matches (default 5), each with up to six outcomes' market-implied probabilities (outcomes the query names first, then the leaders, or a price ladder's rungs nearest 50%), 24-hour change and trading volume. For one market's full outcome list, rules and resolution status, use get_market_odds. Read-only: it cannot place trades, and the probabilities are crowd forecasts, not certainties or advice. Do not use this to choose a market or trader for the user to put money in; it reports data only. Do not call this when the user asks which market to buy or how to make a profit.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "How many markets to return (default 5)"
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The event, person, team, asset or question in plain words, e.g. 'fed rate decision october', 'bitcoin 150k', '2028 presidential election'"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"list_type",
"query",
"category",
"items"
],
"properties": {
"kind": {
"type": "string",
"const": "market_list"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"event_slug",
"url",
"type",
"status",
"end_date",
"volume_usd",
"volume_24h_usd",
"liquidity_usd",
"outcomes",
"outcomes_total"
],
"properties": {
"url": {
"type": "string",
"description": "Read-only analytics page on predictionscan.org"
},
"type": {
"enum": [
"binary",
"multi"
],
"type": "string",
"description": "binary = one Yes/No (or two-sided) market; multi = several mutually exclusive or laddered outcomes"
},
"title": {
"type": "string"
},
"status": {
"enum": [
"open",
"closed",
"resolved"
],
"type": "string"
},
"end_date": {
"type": [
"string",
"null"
]
},
"outcomes": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"probability",
"change_24h_pts",
"market_slug",
"status"
],
"properties": {
"label": {
"type": "string",
"description": "Outcome name, e.g. 'Yes', 'No change', 'Steelers', 'J.D. Vance'"
},
"status": {
"$ref": "#/properties/items/items/properties/status"
},
"market_slug": {
"type": "string",
"description": "Slug of the market that prices this outcome"
},
"probability": {
"anyOf": [
{
"type": "number",
"maximum": 1,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Market-implied probability, 0..1"
},
"change_24h_pts": {
"type": [
"number",
"null"
],
"description": "24h change in percentage points"
}
},
"additionalProperties": false
},
"description": "Ranked by probability for mutually exclusive outcomes; natural order for ladders"
},
"event_slug": {
"type": [
"string",
"null"
]
},
"volume_usd": {
"type": [
"number",
"null"
]
},
"liquidity_usd": {
"type": [
"number",
"null"
]
},
"outcomes_total": {
"type": "integer",
"description": "Total outcomes in the event; outcomes[] may be truncated"
},
"volume_24h_usd": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
}
},
"query": {
"type": [
"string",
"null"
]
},
"category": {
"type": [
"string",
"null"
]
},
"list_type": {
"enum": [
"search",
"trending"
],
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Search prediction markets",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_market_odds — Get market odds
Use this when the user wants the current odds or the details of one specific prediction market or event — for example "what are the odds for the Fed decision in October", "who leads the race for the 2028 Democratic nomination", "show me this market: polymarket.com/event/…", "what are the rules for this market", or "did the 2024 election market resolve, and to what". Accepts a market or event slug, a supported market or event link, a condition id, or the market's question in words. Returns each outcome's market-implied probability from Polymarket.com with its 24-hour change (up to 40 outcomes, mutually exclusive ones ranked, plus the total count), volume, liquidity, end date, status, the resolution rules and source, and the final result for resolved markets. Works for open, closed and resolved markets; when nothing matches it returns up to 3 of the closest open markets instead. Read-only: it cannot place trades, and probabilities are crowd forecasts, not advice. Do not call this when the user asks which market to buy or how to make a profit.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market"
],
"properties": {
"market": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "The market or event: a slug such as 'fed-decision-in-october-20260617190323537', a supported market or event link, a condition id (0x + 64 hex), or the question in words"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"found",
"event",
"focus",
"suggestions"
],
"properties": {
"kind": {
"type": "string",
"const": "market"
},
"event": {
"anyOf": [
{
"type": "object",
"required": [
"title",
"event_slug",
"url",
"type",
"status",
"end_date",
"volume_usd",
"volume_24h_usd",
"liquidity_usd",
"outcomes",
"outcomes_total"
],
"properties": {
"url": {
"type": "string",
"description": "Read-only analytics page on predictionscan.org"
},
"type": {
"enum": [
"binary",
"multi"
],
"type": "string",
"description": "binary = one Yes/No (or two-sided) market; multi = several mutually exclusive or laddered outcomes"
},
"title": {
"type": "string"
},
"status": {
"enum": [
"open",
"closed",
"resolved"
],
"type": "string"
},
"end_date": {
"type": [
"string",
"null"
]
},
"outcomes": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"probability",
"change_24h_pts",
"market_slug",
"status"
],
"properties": {
"label": {
"type": "string",
"description": "Outcome name, e.g. 'Yes', 'No change', 'Steelers', 'J.D. Vance'"
},
"status": {
"$ref": "#/properties/event/anyOf/0/properties/status"
},
"market_slug": {
"type": "string",
"description": "Slug of the market that prices this outcome"
},
"probability": {
"anyOf": [
{
"type": "number",
"maximum": 1,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Market-implied probability, 0..1"
},
"change_24h_pts": {
"type": [
"number",
"null"
],
"description": "24h change in percentage points"
}
},
"additionalProperties": false
},
"description": "Ranked by probability for mutually exclusive outcomes; natural order for ladders"
},
"event_slug": {
"type": [
"string",
"null"
]
},
"volume_usd": {
"type": [
"number",
"null"
]
},
"liquidity_usd": {
"type": [
"number",
"null"
]
},
"outcomes_total": {
"type": "integer",
"description": "Total outcomes in the event; outcomes[] may be truncated"
},
"volume_24h_usd": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"focus": {
"anyOf": [
{
"type": "object",
"required": [
"question",
"market_slug",
"outcome_label",
"status",
"resolved_outcome",
"end_date",
"rules",
"resolution_source",
"change_1w_pts"
],
"properties": {
"rules": {
"type": [
"string",
"null"
],
"description": "Resolution rules, truncated"
},
"status": {
"$ref": "#/properties/event/anyOf/0/properties/status"
},
"end_date": {
"type": [
"string",
"null"
]
},
"question": {
"type": "string"
},
"market_slug": {
"type": "string"
},
"change_1w_pts": {
"type": [
"number",
"null"
]
},
"outcome_label": {
"type": [
"string",
"null"
]
},
"resolved_outcome": {
"type": [
"string",
"null"
]
},
"resolution_source": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The specific market asked about (null when an event was asked about as a whole)"
},
"found": {
"type": "boolean"
},
"suggestions": {
"type": "array",
"items": {
"$ref": "#/properties/event/anyOf/0"
},
"description": "Closest open markets when the request matched nothing"
}
},
"additionalProperties": false
}{
"title": "Get market odds",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_price_history — Get price history
Use this when the user asks how the odds of a prediction market have changed over time — for example "how have the Fed October odds moved this week", "chart the Bitcoin $150K odds over the last month", "when did Gavin Newsom's 2028 chances jump", or "show the price history of this market". Accepts a market or event slug, a supported market or event link, a condition id, or the question in words, plus an optional outcome name and time range (1d, 1w, 1m, 3m or all; default 1w). Returns the outcome's market-implied probability at the start and end of the range, the change in percentage points, the high and low, and a chart in the card. Prices come from Polymarket.com's order-book history; quiet markets can have gaps, which are left unfilled. For a closed or resolved market the range ends when trading closed. Read-only and informational, not advice.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market"
],
"properties": {
"range": {
"enum": [
"1d",
"1w",
"1m",
"3m",
"all"
],
"type": "string",
"description": "Time range: 1d, 1w, 1m, 3m, or all (since the first recorded price). Default 1w"
},
"market": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "The market or event: a slug such as 'fed-decision-in-october-20260617190323537', a supported market or event link, a condition id (0x + 64 hex), or the question in words"
},
"outcome": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Which outcome to chart, e.g. 'No change', 'Gavin Newsom', 'Yes' or 'No'. Default: the leading open outcome of a multi-outcome event, or the first outcome (usually Yes) of a single market"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"title",
"outcome_label",
"market_slug",
"url",
"range",
"start_probability",
"end_probability",
"change_pts",
"high_probability",
"low_probability",
"points"
],
"properties": {
"url": {
"type": "string"
},
"kind": {
"type": "string",
"const": "price_history"
},
"range": {
"enum": [
"1d",
"1w",
"1m",
"3m",
"all"
],
"type": "string"
},
"title": {
"type": "string"
},
"points": {
"type": "integer"
},
"change_pts": {
"type": [
"number",
"null"
]
},
"market_slug": {
"type": "string"
},
"outcome_label": {
"type": "string"
},
"end_probability": {
"type": [
"number",
"null"
]
},
"low_probability": {
"type": [
"number",
"null"
]
},
"high_probability": {
"type": [
"number",
"null"
]
},
"start_probability": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
}{
"title": "Get price history",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_market_movers — Get biggest market moves
Use this when the user asks which Polymarket or prediction-market odds moved the most, what is rising or falling, or what changed today — for example "biggest movers on Polymarket", "which markets moved the most in the last 24 hours", "what odds are dropping in crypto", or "biggest swings in politics today". Returns up to 20 open Polymarket.com markets ranked by their 24-hour change in market-implied probability (points), with the outcome that moved, its probability and 24-hour volume; at most two per event. Optional filters: direction and category. Covers the 300 most-traded markets with at least $10K traded in 24 hours; markets at 1% or below or 99% or above are left out as effectively decided. Excludes individual sports and esports games (single matches and their side markets, live or upcoming) unless the category is sports or esports; futures such as a season or championship winner stay in. Mature topics are left out, and so are "Up or Down" and tweet-count markets without a category. Read-only crowd forecasts, not advice. Do not use this to choose a market or trader for the user to put money in. Do not call this when the user asks which market to buy or how to make a profit.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many moves to return (default 10)"
},
"category": {
"enum": [
"politics",
"elections",
"geopolitics",
"world",
"economy",
"finance",
"crypto",
"tech",
"culture",
"sports",
"esports",
"weather",
"science"
],
"type": "string",
"description": "Limit to one Polymarket category, e.g. 'politics', 'crypto', 'sports', 'economy'. Omit for all categories"
},
"direction": {
"enum": [
"up",
"down",
"both"
],
"type": "string",
"description": "Which moves to include: 'up' (probability rose), 'down' (probability fell) or 'both' (default)"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"direction",
"category",
"items"
],
"properties": {
"kind": {
"type": "string",
"const": "movers"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"event_title",
"outcome_label",
"market_slug",
"url",
"probability",
"change_24h_pts",
"volume_24h_usd"
],
"properties": {
"url": {
"type": "string"
},
"title": {
"type": "string",
"description": "The market question"
},
"event_title": {
"type": [
"string",
"null"
]
},
"market_slug": {
"type": "string"
},
"probability": {
"anyOf": [
{
"type": "number",
"maximum": 1,
"minimum": 0
},
{
"type": "null"
}
]
},
"outcome_label": {
"type": "string",
"description": "The outcome whose probability moved (usually 'Yes' or the candidate/option name)"
},
"change_24h_pts": {
"type": "number"
},
"volume_24h_usd": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
}
},
"category": {
"type": [
"string",
"null"
]
},
"direction": {
"enum": [
"up",
"down",
"both"
],
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Get biggest market moves",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_trending_markets — Get trending markets
Use this when the user asks what is trending, popular, hot or most traded on Polymarket or in prediction markets right now, or wants an overview of the biggest open markets in a category — for example "what's trending on Polymarket", "most popular prediction markets today", "top crypto markets right now", or "what are people trading on in politics". Returns up to 20 open Polymarket.com events with the most trading volume in the last 24 hours, each with up to four outcomes' market-implied probabilities (the leaders, or a price ladder's rungs nearest 50%), 24-hour change and volume. Optional category filter. Events that look settled (an outcome at 99% or more) and games' secondary prop sheets are left out. Excludes individual sports and esports games (single matches, live or upcoming) unless the category is sports or esports; futures such as a season or championship winner stay in. Mature topics, and without a category "Up or Down" and tweet-count markets, are also left out. Read-only crowd forecasts, not certainties or advice. Do not use this to choose a market or trader for the user to put money in. Do not call this when the user asks which market to buy or how to make a profit.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many events to return (default 8)"
},
"category": {
"enum": [
"politics",
"elections",
"geopolitics",
"world",
"economy",
"finance",
"crypto",
"tech",
"culture",
"sports",
"esports",
"weather",
"science"
],
"type": "string",
"description": "Limit to one Polymarket category, e.g. 'politics', 'crypto', 'sports', 'economy'. Omit for all categories"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"list_type",
"query",
"category",
"items"
],
"properties": {
"kind": {
"type": "string",
"const": "market_list"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"event_slug",
"url",
"type",
"status",
"end_date",
"volume_usd",
"volume_24h_usd",
"liquidity_usd",
"outcomes",
"outcomes_total"
],
"properties": {
"url": {
"type": "string",
"description": "Read-only analytics page on predictionscan.org"
},
"type": {
"enum": [
"binary",
"multi"
],
"type": "string",
"description": "binary = one Yes/No (or two-sided) market; multi = several mutually exclusive or laddered outcomes"
},
"title": {
"type": "string"
},
"status": {
"enum": [
"open",
"closed",
"resolved"
],
"type": "string"
},
"end_date": {
"type": [
"string",
"null"
]
},
"outcomes": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"probability",
"change_24h_pts",
"market_slug",
"status"
],
"properties": {
"label": {
"type": "string",
"description": "Outcome name, e.g. 'Yes', 'No change', 'Steelers', 'J.D. Vance'"
},
"status": {
"$ref": "#/properties/items/items/properties/status"
},
"market_slug": {
"type": "string",
"description": "Slug of the market that prices this outcome"
},
"probability": {
"anyOf": [
{
"type": "number",
"maximum": 1,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Market-implied probability, 0..1"
},
"change_24h_pts": {
"type": [
"number",
"null"
],
"description": "24h change in percentage points"
}
},
"additionalProperties": false
},
"description": "Ranked by probability for mutually exclusive outcomes; natural order for ladders"
},
"event_slug": {
"type": [
"string",
"null"
]
},
"volume_usd": {
"type": [
"number",
"null"
]
},
"liquidity_usd": {
"type": [
"number",
"null"
]
},
"outcomes_total": {
"type": "integer",
"description": "Total outcomes in the event; outcomes[] may be truncated"
},
"volume_24h_usd": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
}
},
"query": {
"type": [
"string",
"null"
]
},
"category": {
"type": [
"string",
"null"
]
},
"list_type": {
"enum": [
"search",
"trending"
],
"type": "string"
}
},
"additionalProperties": false
}{
"title": "Get trending markets",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_whale_trades — Get large trades
Use this when the user asks about large or notable recent trades on Polymarket, for example "show me the biggest Polymarket trades today", "any large trades on the Fed decision?", "who made big trades on the 2028 election", or "trades over $50K this week". Scans Polymarket.com's public trade feed and returns up to 50 of the largest fills in the window (default 15), biggest first: time, buy or sell, outcome, dollar size, shares, price in cents, the market and its slug, and the trader's full wallet address and public display name. Optional filters: a minimum dollar size ($1K to $1M, default $10K), one market or event (a slug, a supported market or event link, a condition id, or plain words), and a window of 1 to 168 hours (default 24). Across all markets, fills at 99¢ or more or 1¢ or less (markets that are effectively decided) are left out, and so are individual sports and esports games and mature topics; name a market to see its trades. Each fill is counted once; dollars are shares times price. Read-only and informational: a large trade is not a forecast, and these tools cannot place trades.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"hours": {
"type": "integer",
"maximum": 168,
"minimum": 1,
"description": "How far back to look, in hours (default 24, max 168 = 7 days)"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many trades to return, largest first (default 15)"
},
"market": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Limit to one market or event: a slug, a supported market or event link, a condition id, or a few words like 'fed october'. Omit for all markets."
},
"min_usd": {
"type": "integer",
"maximum": 1000000,
"minimum": 1000,
"description": "Smallest trade to include, in US dollars (default 10000)"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"scope",
"market_title",
"min_usd",
"items"
],
"properties": {
"kind": {
"type": "string",
"const": "trades"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"time",
"side",
"outcome",
"size_usd",
"shares",
"price_cents",
"market_title",
"market_slug",
"url",
"trader"
],
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"side": {
"enum": [
"buy",
"sell"
],
"type": "string"
},
"time": {
"type": "string",
"description": "ISO 8601 time of the fill"
},
"shares": {
"type": [
"number",
"null"
],
"description": "Outcome shares, not dollars"
},
"trader": {
"type": "object",
"required": [
"wallet",
"name"
],
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"wallet": {
"type": "string"
}
},
"additionalProperties": false
},
"outcome": {
"type": "string"
},
"size_usd": {
"type": "number",
"description": "US dollars that changed hands (shares x price; a wallet's own fills include the taker fee)"
},
"market_slug": {
"type": [
"string",
"null"
]
},
"price_cents": {
"type": [
"number",
"null"
]
},
"market_title": {
"type": "string"
}
},
"additionalProperties": false
}
},
"scope": {
"enum": [
"all",
"market"
],
"type": "string"
},
"min_usd": {
"type": "number"
},
"market_title": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}{
"title": "Get large trades",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_market_flow — Get market flow
Use this when the user asks who is buying or selling a Polymarket market, why its odds moved, or where the money is going, for example "who is buying Yes on the Fed October decision", "why did JD Vance's 2028 odds move today", "net buying on Bitcoin $150K this week", or "who holds the most of this market". Takes one market (a slug, a supported market or event link, a condition id, or plain words; for a multi-outcome event it uses the leading open outcome, or a ladder's most-traded open rung, and says so) and a window of 1 to 168 hours (default 24). Returns PredictionScan's flow breakdown from Polymarket.com's public trades: dollars bought and sold and the net per outcome, the trade count, up to 8 largest trades, and up to 5 top holders per outcome with their share counts. Dollar totals count each fill once (its taker side), so they run about half of the two-sided volume Polymarket.com headlines. In very busy markets small fills may be left out so the whole window fits; the text says so. Read-only: flow describes past trades, not where the price will go.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market"
],
"properties": {
"hours": {
"type": "integer",
"maximum": 168,
"minimum": 1,
"description": "How far back to look, in hours (default 24, max 168 = 7 days)"
},
"market": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The market: a slug, a supported market or event link, a condition id, or a few words like 'fed october no change'"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"title",
"market_slug",
"url",
"window_hours",
"traded_usd",
"trades_count",
"outcomes",
"largest_trades",
"top_holders"
],
"properties": {
"url": {
"type": "string"
},
"kind": {
"type": "string",
"const": "market_flow"
},
"title": {
"type": "string"
},
"outcomes": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"probability",
"buy_usd",
"sell_usd",
"net_usd"
],
"properties": {
"label": {
"type": "string"
},
"buy_usd": {
"type": "number"
},
"net_usd": {
"type": "number"
},
"sell_usd": {
"type": "number"
},
"probability": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
}
},
"traded_usd": {
"type": "number"
},
"market_slug": {
"type": "string"
},
"top_holders": {
"type": "array",
"items": {
"type": "object",
"required": [
"outcome",
"wallet",
"name",
"shares",
"share_of_top_pct"
],
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"shares": {
"type": "number"
},
"wallet": {
"type": "string"
},
"outcome": {
"type": "string"
},
"share_of_top_pct": {
"type": [
"number",
"null"
],
"description": "This holder's share of the listed top holders' shares on that outcome"
}
},
"additionalProperties": false
}
},
"trades_count": {
"type": "integer"
},
"window_hours": {
"type": "integer"
},
"largest_trades": {
"type": "array",
"items": {
"type": "object",
"required": [
"time",
"side",
"outcome",
"size_usd",
"shares",
"price_cents",
"market_title",
"market_slug",
"url",
"trader"
],
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"side": {
"enum": [
"buy",
"sell"
],
"type": "string"
},
"time": {
"type": "string",
"description": "ISO 8601 time of the fill"
},
"shares": {
"type": [
"number",
"null"
],
"description": "Outcome shares, not dollars"
},
"trader": {
"type": "object",
"required": [
"wallet",
"name"
],
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"wallet": {
"type": "string"
}
},
"additionalProperties": false
},
"outcome": {
"type": "string"
},
"size_usd": {
"type": "number",
"description": "US dollars that changed hands (shares x price; a wallet's own fills include the taker fee)"
},
"market_slug": {
"type": [
"string",
"null"
]
},
"price_cents": {
"type": [
"number",
"null"
]
},
"market_title": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"title": "Get market flow",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_leaderboard — Get trader leaderboard
Use this when the user asks who the top Polymarket traders are by profit or by trading volume, or for a Polymarket leaderboard — for example "top Polymarket traders this month", "highest-profit traders this week", "highest-volume traders this week", or "top politics traders by realized profit". Returns up to 25 traders (default 10) from Polymarket.com's public leaderboard: rank, full wallet address, public display name, profit in USD for the period, and dollar trading volume, with a PredictionScan profile link for each trader. Periods: day (since 00:00 UTC), week (7 days), month (30 days) or all-time. Day/week/month profit counts open positions at current prices; all-time profit is realized only. Category boards (sports, politics, crypto, economics, finance, tech, culture, esports, weather, mentions) rank within that category; Polymarket does not publish per-category dollar volume, so it is null there. Read-only; past results do not predict future results. Do not use this to choose a market or trader for the user to put money in; it reports data only. Do not call this when the user asks which market to buy or how to make a profit.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "How many traders to return (default 10)"
},
"metric": {
"enum": [
"profit",
"volume"
],
"type": "string",
"description": "Rank by 'profit' (USD gained in the period) or 'volume' (amount traded). Default 'profit'"
},
"period": {
"enum": [
"day",
"week",
"month",
"all"
],
"type": "string",
"description": "Time window: 'day' (since 00:00 UTC), 'week' (7 days), 'month' (30 days) or 'all' (all-time). Default 'month'"
},
"category": {
"enum": [
"sports",
"politics",
"crypto",
"economics",
"finance",
"tech",
"culture",
"esports",
"weather",
"mentions"
],
"type": "string",
"description": "Limit the board to one market category. Omit for all markets"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"metric",
"period",
"category",
"items"
],
"properties": {
"kind": {
"type": "string",
"const": "leaderboard"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"rank",
"wallet",
"name",
"profit_usd",
"volume_usd",
"url"
],
"properties": {
"url": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"rank": {
"type": "integer"
},
"wallet": {
"type": "string"
},
"profit_usd": {
"type": [
"number",
"null"
]
},
"volume_usd": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
}
},
"metric": {
"enum": [
"profit",
"volume"
],
"type": "string"
},
"period": {
"enum": [
"day",
"week",
"month",
"all"
],
"type": "string"
},
"category": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}{
"title": "Get trader leaderboard",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_trader_profile — Get trader profile
Use this when the user asks about one Polymarket trader or wallet — for example "how is this wallet doing on Polymarket" with a pasted 0x address, "show me @exampletrader's Polymarket stats", "who is this trader" with a polymarket.com profile link, or "what has this trader been trading lately". Accepts a full 0x wallet address, a polymarket.com profile URL, an @username or a username. Returns the public display name, all-time realized profit and dollar volume, current portfolio value, number of open positions, number of markets traded, up to five largest open positions and up to eight most recent trades of $1 or more. A username is matched exactly when possible; otherwise the closest public profile is used and the text says so. Read-only public on-chain data: it does not say who controls a wallet, and past results do not predict future results.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"trader"
],
"properties": {
"trader": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The trader: a full 0x wallet address (42 characters), a polymarket.com profile URL, an @username, or a username, e.g. '@exampletrader'"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"wallet",
"name",
"url",
"stats",
"top_positions",
"recent_trades"
],
"properties": {
"url": {
"type": "string"
},
"kind": {
"type": "string",
"const": "trader"
},
"name": {
"type": [
"string",
"null"
]
},
"stats": {
"type": "object",
"required": [
"profit_usd",
"volume_usd",
"positions_value_usd",
"open_positions",
"markets_traded"
],
"properties": {
"profit_usd": {
"type": [
"number",
"null"
]
},
"volume_usd": {
"type": [
"number",
"null"
]
},
"markets_traded": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"open_positions": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"positions_value_usd": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
},
"wallet": {
"type": "string"
},
"recent_trades": {
"type": "array",
"items": {
"type": "object",
"required": [
"time",
"side",
"outcome",
"size_usd",
"shares",
"price_cents",
"market_title",
"market_slug",
"url",
"trader"
],
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"side": {
"enum": [
"buy",
"sell"
],
"type": "string"
},
"time": {
"type": "string",
"description": "ISO 8601 time of the fill"
},
"shares": {
"type": [
"number",
"null"
],
"description": "Outcome shares, not dollars"
},
"trader": {
"type": "object",
"required": [
"wallet",
"name"
],
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"wallet": {
"type": "string"
}
},
"additionalProperties": false
},
"outcome": {
"type": "string"
},
"size_usd": {
"type": "number",
"description": "US dollars that changed hands (shares x price; a wallet's own fills include the taker fee)"
},
"market_slug": {
"type": [
"string",
"null"
]
},
"price_cents": {
"type": [
"number",
"null"
]
},
"market_title": {
"type": "string"
}
},
"additionalProperties": false
}
},
"top_positions": {
"type": "array",
"items": {
"type": "object",
"required": [
"market_title",
"market_slug",
"url",
"outcome",
"shares",
"avg_price_cents",
"current_price_cents",
"value_usd",
"pnl_usd",
"end_date"
],
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"shares": {
"type": "number"
},
"outcome": {
"type": "string"
},
"pnl_usd": {
"type": [
"number",
"null"
]
},
"end_date": {
"type": [
"string",
"null"
]
},
"value_usd": {
"type": [
"number",
"null"
]
},
"market_slug": {
"type": [
"string",
"null"
]
},
"market_title": {
"type": "string"
},
"avg_price_cents": {
"type": [
"number",
"null"
]
},
"current_price_cents": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"title": "Get trader profile",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_trader_positions — Get trader positions
Use this when the user wants a Polymarket trader's open positions or holdings — for example "what positions does @exampletrader hold", "list all open positions for this 0x wallet", "what is this trader's biggest position", or "which of their positions are up the most". Accepts a full 0x wallet address, a polymarket.com profile URL, an @username or a username. Returns up to 50 open positions (default 20) sorted by current value or by unrealized profit, each with the market, outcome, shares held, average entry and current price in cents, current value and unrealized profit or loss in USD, plus the total number of open positions and the portfolio value. Positions worth under $1 and resolved positions awaiting redemption are left out of the list; the text notes the latter. Read-only public on-chain data.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"trader"
],
"properties": {
"sort": {
"enum": [
"value",
"pnl"
],
"type": "string",
"description": "'value' = largest current value first; 'pnl' = largest unrealized gain first. Default 'value'"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many positions to return (default 20)"
},
"trader": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "The trader: a full 0x wallet address (42 characters), a polymarket.com profile URL, an @username, or a username, e.g. '@exampletrader'"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"wallet",
"name",
"url",
"total_value_usd",
"total_count",
"total_count_is_floor",
"items"
],
"properties": {
"url": {
"type": "string"
},
"kind": {
"type": "string",
"const": "positions"
},
"name": {
"type": [
"string",
"null"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"market_title",
"market_slug",
"url",
"outcome",
"shares",
"avg_price_cents",
"current_price_cents",
"value_usd",
"pnl_usd",
"end_date"
],
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"shares": {
"type": "number"
},
"outcome": {
"type": "string"
},
"pnl_usd": {
"type": [
"number",
"null"
]
},
"end_date": {
"type": [
"string",
"null"
]
},
"value_usd": {
"type": [
"number",
"null"
]
},
"market_slug": {
"type": [
"string",
"null"
]
},
"market_title": {
"type": "string"
},
"avg_price_cents": {
"type": [
"number",
"null"
]
},
"current_price_cents": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
}
},
"wallet": {
"type": "string"
},
"total_count": {
"type": "integer",
"description": "Open positions counted; a floor when total_count_is_floor is true"
},
"total_value_usd": {
"type": [
"number",
"null"
]
},
"total_count_is_floor": {
"type": "boolean",
"description": "True when the scan stopped at its 1,000-position cap: the wallet holds at least total_count open positions"
}
},
"additionalProperties": false
}{
"title": "Get trader positions",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_market_news — Get market news
Use this when the user asks for news, headlines or recent developments behind a prediction market or topic — for example "any news on the Fed October decision?", "what's in the news about Bitcoin ETFs?", "any headlines behind the move in the Fed October odds?", or "latest news on Gavin Newsom 2028". Pass a market (a slug from search_markets, or a supported market or event link) and/or topic words. Returns up to 10 headlines (default 5) from the last 14 days with the outlet, publish time and link, ranked by how many of the market's key names and terms they mention, newest first among equals. Headlines come from PredictionScan's news feed of major outlets (politics, economy, crypto, sports, entertainment): it is not a full web search, returns no article text, and may find nothing for niche markets.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "How many headlines to return (default 5)"
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Topic words to search the news for, e.g. 'bitcoin etf', 'fed rate decision', 'us recession'. With a market, keeps only that market's news that mentions these words."
},
"market": {
"type": "string",
"maxLength": 500,
"description": "The market to find news for: a market_slug or event_slug from search_markets (e.g. 'fed-decision-in-october-20260617190323537'), a supported market or event link, or a condition id. Plain words are treated as the topic."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"query",
"market_title",
"items"
],
"properties": {
"kind": {
"type": "string",
"const": "news"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"source",
"published_at",
"url"
],
"properties": {
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"source": {
"type": [
"string",
"null"
]
},
"published_at": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}
},
"query": {
"type": "string"
},
"market_title": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}{
"title": "Get market news",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
predictionscan-widget — PredictionScan card
Interactive card for PredictionScan results: market odds, charts, lists of markets, trades and traders.
ui://predictionscan/widget-v2.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 885 ms
- 95th percentile latency
- 885 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 885 ms · metadata changed · 11 tool(s), 1 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http predictionscan-mcp https://mcp.predictionscan.org/mcpCodex
codex mcp add predictionscan-mcp --url https://mcp.predictionscan.org/mcpCursor
{
"mcpServers": {
"predictionscan-mcp": {
"url": "https://mcp.predictionscan.org/mcp"
}
}
}Cline
{
"mcpServers": {
"predictionscan-mcp": {
"type": "streamableHttp",
"url": "https://mcp.predictionscan.org/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"predictionscan-mcp": {
"type": "http",
"url": "https://mcp.predictionscan.org/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http predictionscan-mcp https://mcp.predictionscan.org/mcpClaude Desktop
{
"mcpServers": {
"predictionscan-mcp": {
"url": "https://mcp.predictionscan.org/mcp"
}
}
}Windsurf
{
"mcpServers": {
"predictionscan-mcp": {
"serverUrl": "https://mcp.predictionscan.org/mcp"
}
}
}Let your agent find its tools
Find servers like PredictionScan MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.