Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,539Letters: 14Defects: 1,323counted 1 min ago
teppi

Server definition

Hash
sha256:514b365a07a4c9d10845df5e4dd9ddcace50608399a17f0b8e5c9bc81690de7e
What it is
What a remote MCP server returned when asked what it offers: 14 tools

The blob, as servednamed by its sha256

{ "instructions": "Use pdata to look up live prediction-market data across 8 platforms (Polymarket, Kalshi, Manifold, Myriad, Limitless, Predict, Opinion, Gemini). All data is read-only and public. When citing in responses, use the cite_as field from any tool's _meta block, or link to the stable URL at https://pdata.world/events/{source}/{id}. Each tool's input schema is derived from the underlying REST endpoint's query parameters. Pagination uses `page` (1-indexed) and `page_size` (default 50, max 200); pass `page_size=5` for chat-style summaries.", "tools": [ { "description": "Use when the user wants to see markets that will resolve within the next 36 hours. Returns markets sorted by close timestamp ascending. Filterable by `source=` and `categories=` (CSV). Excludes Limitless and price-derivative markets.", "inputSchema": { "properties": { "active": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Filter by `active` flag (true/false).", "title": "Active" }, "categories": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated category labels to include (OR)", "title": "Categories" }, "categories_exclude": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated category labels to exclude", "title": "Categories Exclude" }, "closed": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Filter by `closed` flag (true/false). Open markets are `closed=false`.", "title": "Closed" }, "countries": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated country names to include (OR). Full English names per the AI categorizer's prompt — e.g. 'United States', 'United Kingdom', 'European Union'. No allow-list — misspelled values silently yield zero matches.", "title": "Countries" }, "countries_exclude": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated country names to exclude.", "title": "Countries Exclude" }, "country_match": { "default": "any", "description": "How multiple `countries` combine: 'any' (default, OR — tagged with any selected country) or 'all' (AND — tagged with all of them, e.g. both Iran and Israel). Markets carry ≤3 country tags.", "pattern": "^(any|all)$", "title": "Country Match", "type": "string" }, "created_after": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to rows whose created_at >= this ISO 8601 datetime (first appearance in pdata's database).", "title": "Created After" }, "created_before": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to rows whose created_at <= this ISO 8601 datetime.", "title": "Created Before" }, "ends_after": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to events whose end_date >= this ISO 8601 datetime (e.g. `2026-06-01T00:00:00Z`).", "title": "Ends After" }, "ends_before": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to events whose end_date <= this ISO 8601 datetime.", "title": "Ends Before" }, "hide_ended": { "default": false, "description": "If true, hide markets/events whose end_date is in the past (end_date <= now()); rows with no end_date are kept.", "title": "Hide Ended", "type": "boolean" }, "hide_price_derivatives": { "default": false, "description": "If true, exclude events with is_price_derivative=TRUE", "title": "Hide Price Derivatives", "type": "boolean" }, "include_uncategorized": { "default": false, "description": "If true, the include clause also matches rows whose categories array is empty/NULL or contains only labels outside the canonical set (synthetic 'Other' bucket).", "title": "Include Uncategorized", "type": "boolean" }, "include_uncountried": { "default": false, "description": "If true, the include clause also matches rows whose countries array is empty/NULL — country-agnostic markets (synthetic 'No country' bucket).", "title": "Include Uncountried", "type": "boolean" }, "limit": { "default": 5, "description": "Number of results to return (1-20; default 5).", "maximum": 20, "minimum": 1, "title": "Limit", "type": "integer" }, "prob_24h_change_max": { "anyOf": [ { "maximum": 1, "minimum": -1, "type": "number" }, { "type": "null" } ], "description": "Maximum 24h probability change (-1 to 1, signed).", "title": "Prob 24H Change Max" }, "prob_24h_change_min": { "anyOf": [ { "maximum": 1, "minimum": -1, "type": "number" }, { "type": "null" } ], "description": "Minimum 24h probability change (-1 to 1, signed). Use 0.15 for >=15pp positive moves.", "title": "Prob 24H Change Min" }, "probability_max": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum probability (0-1).", "title": "Probability Max" }, "probability_min": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum probability (0-1). Filters to markets above this implied probability.", "title": "Probability Min" }, "rank_max": { "anyOf": [ { "maximum": 100, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum rank score (numeric).", "title": "Rank Max" }, "rank_min": { "anyOf": [ { "maximum": 100, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum rank score (numeric). Higher = more prominent.", "title": "Rank Min" }, "search": { "anyOf": [ { "maxLength": 200, "minLength": 1, "type": "string" }, { "type": "null" } ], "description": "Full-text search across title, description, slug. Case-insensitive substring match.", "title": "Search" }, "sort": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Field name; prefix '-' for descending order (e.g. `-volume_24hr`). Common allowed values: `volume_24hr`, `normalized_vol_24hr`, `liquidity`, `end_date`, `closed_time`, `updated_at`. Markets endpoints additionally accept `probability`, `prob_24h_change`, `spread`. Invalid values return 400.", "title": "Sort" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Source name(s); single value or comma-separated list. Allowed: polymarket, kalshi, manifold, myriad, limitless, predict, opinion, gemini.", "title": "Source" }, "spread_max": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum bid-ask spread (0-1). Lower = more liquid.", "title": "Spread Max" }, "spread_min": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum bid-ask spread (0-1). Higher = less liquid.", "title": "Spread Min" }, "status": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated status list; any of {open, closing-soon, resolved}", "title": "Status" }, "volume_24h_change_max": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Maximum 24h notional volume change (signed USD).", "title": "Volume 24H Change Max" }, "volume_24h_change_min": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Minimum 24h notional volume change (signed USD; e.g. 1000 means +$1k vs prior 24h).", "title": "Volume 24H Change Min" }, "volume_24hr_max": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum 24h notional volume (USD).", "title": "Volume 24Hr Max" }, "volume_24hr_min": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum 24h notional volume (USD). Excludes low-activity markets.", "title": "Volume 24Hr Min" }, "volume_max": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum cumulative volume (USD).", "title": "Volume Max" }, "volume_min": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum cumulative volume (USD). Excludes low-activity markets across full history.", "title": "Volume Min" } }, "required": [], "type": "object" }, "name": "closing_soon", "outputSchema": { "properties": { "_meta": { "description": "Agent metadata for list/aggregate responses (no cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" } }, "required": [ "canonical_url" ], "title": "ResponseMetaList", "type": "object" }, "items": { "items": { "description": "Market as returned in list and detail endpoints.", "properties": { "active": { "title": "Active", "type": "boolean" }, "added_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Added At" }, "categories": { "default": [], "items": { "type": "string" }, "title": "Categories", "type": "array" }, "chart_24h": { "anyOf": [ { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "title": "Chart 24H" }, "closed": { "title": "Closed", "type": "boolean" }, "closed_time": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Closed Time" }, "countries": { "default": [], "items": { "type": "string" }, "title": "Countries", "type": "array" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "end_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "End Date" }, "event_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Id" }, "event_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Title" }, "fetched_at": { "format": "date-time", "title": "Fetched At", "type": "string" }, "group_item_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Group Item Title" }, "icon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon" }, "id": { "title": "Id", "type": "string" }, "image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Image" }, "liquidity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Liquidity" }, "normalized_vol_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Vol 24Hr" }, "normalized_volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Volume" }, "outcome_prices": { "default": [], "items": { "type": "number" }, "title": "Outcome Prices", "type": "array" }, "outcomes": { "default": [], "items": { "type": "string" }, "title": "Outcomes", "type": "array" }, "prob_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Prob 24H Change" }, "probability": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Probability" }, "question": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Question" }, "slug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Slug" }, "source": { "title": "Source", "type": "string" }, "spread": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Spread" }, "start_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Start Date" }, "updated_at": { "format": "date-time", "title": "Updated At", "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" }, "volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume" }, "volume_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24H Change" }, "volume_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24Hr" } }, "required": [ "source", "id", "active", "closed", "updated_at", "fetched_at" ], "title": "MarketOut", "type": "object" }, "title": "Items", "type": "array" }, "meta": { "properties": { "page": { "minimum": 1, "title": "Page", "type": "integer" }, "page_size": { "minimum": 1, "title": "Page Size", "type": "integer" }, "total": { "minimum": 0, "title": "Total", "type": "integer" }, "total_pages": { "minimum": 0, "title": "Total Pages", "type": "integer" } }, "required": [ "page", "page_size", "total", "total_pages" ], "title": "PageMeta", "type": "object" } }, "required": [ "items", "meta", "_meta" ], "title": "Page[MarketOut]", "type": "object", "x-fastmcp-top-level-schema": "Page_MarketOut_" } }, { "description": "Use when an agent needs the full detail of a single prediction-market event by its composite key (source + event_id). Returns the event with all of its child markets, latest probabilities, and metadata. The canonical URL `https://pdata.world/events/{source}/{event_id}` is stable for the lifetime of the underlying market. Events that closed more than 10 days ago are removed from the live tables; the same URL then returns a `kind: \"tombstone\"` object holding the title, close date and final outcome of each top market instead of the live `kind: \"live\"` object. Check `kind` before reading any other field.", "inputSchema": { "properties": { "event_id": { "description": "Event ID native to the source. URL-encoded if it contains special chars.", "title": "Event Id", "type": "string" }, "source": { "description": "Platform ID: polymarket / kalshi / manifold / myriad / limitless / predict / opinion / gemini.", "title": "Source", "type": "string" } }, "required": [ "source", "event_id" ], "type": "object" }, "name": "get_event", "outputSchema": { "properties": { "result": { "anyOf": [ { "description": "Event detail page: extends EventOut with nested child markets.\n\nFor leaf events (real, orphan-synth, or unrelated): `markets` is\nthe list of child markets sorted by probability DESC.\n\nFor group events (`is_group = TRUE`): `markets` is the FLATTENED\nlist of markets across every child event of the group, ordered by\neach child event's rank then the activity-bucket / probability\nsort. The grouping shape is reconstructed client-side via the\n`event_id` on each market row — see routers/events.py::get_event.", "properties": { "_meta": { "anyOf": [ { "description": "Agent metadata for single-resource responses (with cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "cite_as": { "title": "Cite As", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" }, "source_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Source Url" } }, "required": [ "canonical_url", "cite_as" ], "title": "ResponseMetaResource", "type": "object" }, { "type": "null" } ] }, "active": { "title": "Active", "type": "boolean" }, "added_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Added At" }, "categories": { "default": [], "items": { "type": "string" }, "title": "Categories", "type": "array" }, "chart_24h": { "anyOf": [ { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "title": "Chart 24H" }, "closed": { "title": "Closed", "type": "boolean" }, "closed_time": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Closed Time" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "end_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "End Date" }, "fetched_at": { "format": "date-time", "title": "Fetched At", "type": "string" }, "group_key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Group Key" }, "icon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon" }, "id": { "title": "Id", "type": "string" }, "image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Image" }, "is_group": { "default": false, "title": "Is Group", "type": "boolean" }, "kind": { "const": "live", "default": "live", "title": "Kind", "type": "string" }, "liquidity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Liquidity" }, "markets": { "default": [], "items": { "description": "Market as returned in list and detail endpoints.", "properties": { "active": { "title": "Active", "type": "boolean" }, "added_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Added At" }, "categories": { "default": [], "items": { "type": "string" }, "title": "Categories", "type": "array" }, "chart_24h": { "anyOf": [ { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "title": "Chart 24H" }, "closed": { "title": "Closed", "type": "boolean" }, "closed_time": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Closed Time" }, "countries": { "default": [], "items": { "type": "string" }, "title": "Countries", "type": "array" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "end_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "End Date" }, "event_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Id" }, "event_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Title" }, "fetched_at": { "format": "date-time", "title": "Fetched At", "type": "string" }, "group_item_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Group Item Title" }, "icon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon" }, "id": { "title": "Id", "type": "string" }, "image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Image" }, "liquidity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Liquidity" }, "normalized_vol_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Vol 24Hr" }, "normalized_volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Volume" }, "outcome_prices": { "default": [], "items": { "type": "number" }, "title": "Outcome Prices", "type": "array" }, "outcomes": { "default": [], "items": { "type": "string" }, "title": "Outcomes", "type": "array" }, "prob_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Prob 24H Change" }, "probability": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Probability" }, "question": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Question" }, "slug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Slug" }, "source": { "title": "Source", "type": "string" }, "spread": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Spread" }, "start_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Start Date" }, "updated_at": { "format": "date-time", "title": "Updated At", "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" }, "volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume" }, "volume_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24H Change" }, "volume_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24Hr" } }, "required": [ "source", "id", "active", "closed", "updated_at", "fetched_at" ], "title": "MarketOut", "type": "object" }, "title": "Markets", "type": "array" }, "normalized_vol_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Vol 24Hr" }, "normalized_volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Volume" }, "open_interest": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Open Interest" }, "parent_event_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Parent Event Id" }, "probability": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Probability" }, "slug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Slug" }, "source": { "title": "Source", "type": "string" }, "spread": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Spread" }, "start_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Start Date" }, "synthetic": { "default": false, "title": "Synthetic", "type": "boolean" }, "tags": { "default": [], "items": { "anyOf": [ { "type": "string" }, { "additionalProperties": true, "type": "object" } ] }, "title": "Tags", "type": "array" }, "ticker": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Ticker" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title" }, "top_outcome": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Top Outcome" }, "top_outcome_prob_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Top Outcome Prob 24H Change" }, "top_outcome_probability": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Top Outcome Probability" }, "top_outcome_volume_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Top Outcome Volume 24H Change" }, "updated_at": { "format": "date-time", "title": "Updated At", "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" }, "volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume" }, "volume_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24H Change" }, "volume_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24Hr" } }, "required": [ "source", "id", "active", "closed", "updated_at", "fetched_at" ], "title": "EventDetailOut", "type": "object" }, { "description": "An event the retention sweep deleted, served at its original URL.\n\n`app/pipeline/retention.py` hard-deletes events closed more than 10\ndays ago. This row is what it captured on the way out, and it is all\nthat exists: there is no market history, no chart, no similar-events\nlist behind it. `/history` and `/similar` on the same id keep 404ing.\n\nRows are written once and never refreshed (see\n`retention.capture_event_tombstones`), so every field here describes\nthe event's final observed state, not its current one.", "properties": { "_meta": { "anyOf": [ { "description": "Agent metadata for single-resource responses (with cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "cite_as": { "title": "Cite As", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" }, "source_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Source Url" } }, "required": [ "canonical_url", "cite_as" ], "title": "ResponseMetaResource", "type": "object" }, { "type": "null" } ] }, "categories": { "default": [], "items": { "type": "string" }, "title": "Categories", "type": "array" }, "closed_time": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Closed Time" }, "id": { "title": "Id", "type": "string" }, "kind": { "const": "tombstone", "default": "tombstone", "title": "Kind", "type": "string" }, "pruned_at": { "format": "date-time", "title": "Pruned At", "type": "string" }, "resolution": { "default": [], "items": { "description": "One outcome of a pruned event, frozen at prune time.\n\nEvery field is optional because every field could legitimately be\nabsent on the live row: sources differ in what they publish, and a\nmarket that merely closed (rather than resolved) never gets a\n`result`. The resolved-outcome page states only what is known.", "properties": { "id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Id" }, "probability": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Probability" }, "question": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Question" }, "result": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Result" }, "volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume" } }, "title": "TombstoneMarketOut", "type": "object" }, "title": "Resolution", "type": "array" }, "source": { "title": "Source", "type": "string" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" } }, "required": [ "source", "id", "pruned_at" ], "title": "EventTombstoneOut", "type": "object" } ], "title": "Response Get Event" } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } }, { "description": "Use when an agent needs events similar to a given event — cross-platform equivalents and topically-related markets, precomputed nightly from title embeddings. Best-first; empty list (never an error) when no similarities are known yet.", "inputSchema": { "properties": { "event_id": { "description": "Event id native to the source.", "title": "Event Id", "type": "string" }, "limit": { "default": 8, "description": "Max similar events to return.", "title": "Limit", "type": "integer" }, "source": { "description": "Platform id, e.g. kalshi.", "title": "Source", "type": "string" } }, "required": [ "source", "event_id" ], "type": "object" }, "name": "get_event_similar", "outputSchema": { "properties": { "_meta": { "anyOf": [ { "description": "Agent metadata for list/aggregate responses (no cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" } }, "required": [ "canonical_url" ], "title": "ResponseMetaList", "type": "object" }, { "type": "null" } ] }, "event_id": { "title": "Event Id", "type": "string" }, "excluded": { "default": false, "title": "Excluded", "type": "boolean" }, "similar": { "default": [], "items": { "description": "One similar EVENT (event-grain — links to /events/{source}/{id}).", "properties": { "id": { "title": "Id", "type": "string" }, "is_cross_platform_equiv": { "default": false, "title": "Is Cross Platform Equiv", "type": "boolean" }, "lead": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Lead" }, "market_count": { "default": 0, "title": "Market Count", "type": "integer" }, "markets": { "default": [], "items": { "description": "One child market of a similar EVENT — the top few by 24h volume,\nused to render multi-market similar cards. Binary / synthetic / group\nevents leave `SimilarItemOut.markets` empty and fall back to the flat\nprob/Δ/vol fields instead.", "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "prob": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Prob" }, "prob_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Prob 24H Change" } }, "title": "SimilarMarketMini", "type": "object" }, "title": "Markets", "type": "array" }, "prob": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Prob" }, "prob_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Prob 24H Change" }, "score": { "title": "Score", "type": "number" }, "source": { "title": "Source", "type": "string" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title" }, "volume_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24Hr" } }, "required": [ "source", "id", "score" ], "title": "SimilarItemOut", "type": "object" }, "title": "Similar", "type": "array" }, "source": { "title": "Source", "type": "string" } }, "required": [ "source", "event_id" ], "title": "EventSimilarOut", "type": "object", "x-fastmcp-top-level-schema": "EventSimilarOut" } }, { "description": "Use when an agent needs the full detail of a single market by its composite key (source + market_id). Returns the market with its parent event reference, current probability, volume, 24h delta, and historical chart points. Includes a `_meta.cite_as` field that the agent can drop directly into its reply.", "inputSchema": { "properties": { "market_id": { "description": "Market ID native to the source. Composite key with `source`.", "title": "Market Id", "type": "string" }, "source": { "description": "Platform ID: polymarket / kalshi / manifold / myriad / limitless / predict / opinion / gemini.", "title": "Source", "type": "string" } }, "required": [ "source", "market_id" ], "type": "object" }, "name": "get_market", "outputSchema": { "description": "Single-market response: extends MarketOut with `_meta` (agent\nmetadata + cite_as).\n\nKept as a separate wrapper rather than putting `_meta` on MarketOut\nitself so list responses (Page[MarketOut]) don't carry `_meta` on\nevery item — that would inflate response size O(N) for no agent\nbenefit. The list envelope already carries `_meta` once. Parallels\nEventDetailOut(EventOut).", "properties": { "_meta": { "anyOf": [ { "description": "Agent metadata for single-resource responses (with cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "cite_as": { "title": "Cite As", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" }, "source_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Source Url" } }, "required": [ "canonical_url", "cite_as" ], "title": "ResponseMetaResource", "type": "object" }, { "type": "null" } ] }, "active": { "title": "Active", "type": "boolean" }, "added_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Added At" }, "categories": { "default": [], "items": { "type": "string" }, "title": "Categories", "type": "array" }, "chart_24h": { "anyOf": [ { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "title": "Chart 24H" }, "closed": { "title": "Closed", "type": "boolean" }, "closed_time": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Closed Time" }, "countries": { "default": [], "items": { "type": "string" }, "title": "Countries", "type": "array" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "end_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "End Date" }, "event_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Id" }, "event_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Title" }, "fetched_at": { "format": "date-time", "title": "Fetched At", "type": "string" }, "group_item_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Group Item Title" }, "icon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon" }, "id": { "title": "Id", "type": "string" }, "image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Image" }, "liquidity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Liquidity" }, "normalized_vol_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Vol 24Hr" }, "normalized_volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Volume" }, "outcome_prices": { "default": [], "items": { "type": "number" }, "title": "Outcome Prices", "type": "array" }, "outcomes": { "default": [], "items": { "type": "string" }, "title": "Outcomes", "type": "array" }, "prob_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Prob 24H Change" }, "probability": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Probability" }, "question": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Question" }, "slug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Slug" }, "source": { "title": "Source", "type": "string" }, "spread": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Spread" }, "start_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Start Date" }, "updated_at": { "format": "date-time", "title": "Updated At", "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" }, "volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume" }, "volume_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24H Change" }, "volume_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24Hr" } }, "required": [ "source", "id", "active", "closed", "updated_at", "fetched_at" ], "title": "MarketDetailOut", "type": "object", "x-fastmcp-top-level-schema": "MarketDetailOut" } }, { "description": "Use when an agent needs platform-level context before drilling into individual markets: one row per platform (Polymarket, Kalshi, Manifold, Myriad, Limitless, Predict, Opinion, Gemini) carrying 24h notional volume, active event and market counts, and that platform's category mix. Takes no parameters and returns the whole picture in one small response, which makes it the cheapest way to answer 'how big is X relative to Y' or 'which platform covers this topic'. Volumes are in each platform's native units — Manifold reports play-money mana, not USD — so do not sum across platforms without saying so.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "get_summary", "outputSchema": { "properties": { "_meta": { "anyOf": [ { "description": "Agent metadata for list/aggregate responses (no cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" } }, "required": [ "canonical_url" ], "title": "ResponseMetaList", "type": "object" }, { "type": "null" } ] }, "grand_total_volume_24hr": { "title": "Grand Total Volume 24Hr", "type": "number" }, "sources": { "items": { "properties": { "categories": { "additionalProperties": { "type": "number" }, "title": "Categories", "type": "object" }, "computed_at": { "format": "date-time", "title": "Computed At", "type": "string" }, "events_active": { "title": "Events Active", "type": "integer" }, "events_with_volume": { "title": "Events With Volume", "type": "integer" }, "markets_active": { "title": "Markets Active", "type": "integer" }, "markets_with_volume": { "title": "Markets With Volume", "type": "integer" }, "source": { "title": "Source", "type": "string" }, "volume_24hr_total": { "title": "Volume 24Hr Total", "type": "number" } }, "required": [ "source", "volume_24hr_total", "events_active", "markets_active", "markets_with_volume", "events_with_volume", "categories", "computed_at" ], "title": "SourceSummary", "type": "object" }, "title": "Sources", "type": "array" } }, "required": [ "sources", "grand_total_volume_24hr" ], "title": "SummaryOut", "type": "object", "x-fastmcp-top-level-schema": "SummaryOut" } }, { "description": "Use when an agent needs the list of country tags that markets have been tagged with. Returns the canonical country vocabulary with per-country market counts. Accepts the same filter params as `list_markets` (source, category, status, volume/probability ranges, search, …): the counts then reflect that filtered population, so this doubles as a facet endpoint. The country dimension itself is ignored when computing counts, so passing `country=` does not collapse the menu. Useful as the menu source for the `country=` filter on `list_events` / `list_markets` / `top_movers`.", "inputSchema": { "properties": { "active": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Filter by `active` flag (true/false).", "title": "Active" }, "categories": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated category labels to include (OR)", "title": "Categories" }, "categories_exclude": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated category labels to exclude", "title": "Categories Exclude" }, "closed": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Filter by `closed` flag (true/false). Open markets are `closed=false`.", "title": "Closed" }, "countries": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated country names to include (OR). Full English names per the AI categorizer's prompt — e.g. 'United States', 'United Kingdom', 'European Union'. No allow-list — misspelled values silently yield zero matches.", "title": "Countries" }, "countries_exclude": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated country names to exclude.", "title": "Countries Exclude" }, "country_match": { "default": "any", "description": "How multiple `countries` combine: 'any' (default, OR — tagged with any selected country) or 'all' (AND — tagged with all of them, e.g. both Iran and Israel). Markets carry ≤3 country tags.", "pattern": "^(any|all)$", "title": "Country Match", "type": "string" }, "created_after": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to rows whose created_at >= this ISO 8601 datetime (first appearance in pdata's database).", "title": "Created After" }, "created_before": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to rows whose created_at <= this ISO 8601 datetime.", "title": "Created Before" }, "ends_after": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to events whose end_date >= this ISO 8601 datetime (e.g. `2026-06-01T00:00:00Z`).", "title": "Ends After" }, "ends_before": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to events whose end_date <= this ISO 8601 datetime.", "title": "Ends Before" }, "hide_ended": { "default": false, "description": "If true, hide markets/events whose end_date is in the past (end_date <= now()); rows with no end_date are kept.", "title": "Hide Ended", "type": "boolean" }, "hide_price_derivatives": { "default": false, "description": "If true, exclude events with is_price_derivative=TRUE", "title": "Hide Price Derivatives", "type": "boolean" }, "include_uncategorized": { "default": false, "description": "If true, the include clause also matches rows whose categories array is empty/NULL or contains only labels outside the canonical set (synthetic 'Other' bucket).", "title": "Include Uncategorized", "type": "boolean" }, "include_uncountried": { "default": false, "description": "If true, the include clause also matches rows whose countries array is empty/NULL — country-agnostic markets (synthetic 'No country' bucket).", "title": "Include Uncountried", "type": "boolean" }, "prob_24h_change_max": { "anyOf": [ { "maximum": 1, "minimum": -1, "type": "number" }, { "type": "null" } ], "description": "Maximum 24h probability change (-1 to 1, signed).", "title": "Prob 24H Change Max" }, "prob_24h_change_min": { "anyOf": [ { "maximum": 1, "minimum": -1, "type": "number" }, { "type": "null" } ], "description": "Minimum 24h probability change (-1 to 1, signed). Use 0.15 for >=15pp positive moves.", "title": "Prob 24H Change Min" }, "probability_max": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum probability (0-1).", "title": "Probability Max" }, "probability_min": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum probability (0-1). Filters to markets above this implied probability.", "title": "Probability Min" }, "rank_max": { "anyOf": [ { "maximum": 100, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum rank score (numeric).", "title": "Rank Max" }, "rank_min": { "anyOf": [ { "maximum": 100, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum rank score (numeric). Higher = more prominent.", "title": "Rank Min" }, "search": { "anyOf": [ { "maxLength": 200, "minLength": 1, "type": "string" }, { "type": "null" } ], "description": "Full-text search across title, description, slug. Case-insensitive substring match.", "title": "Search" }, "sort": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Field name; prefix '-' for descending order (e.g. `-volume_24hr`). Common allowed values: `volume_24hr`, `normalized_vol_24hr`, `liquidity`, `end_date`, `closed_time`, `updated_at`. Markets endpoints additionally accept `probability`, `prob_24h_change`, `spread`. Invalid values return 400.", "title": "Sort" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Source name(s); single value or comma-separated list. Allowed: polymarket, kalshi, manifold, myriad, limitless, predict, opinion, gemini.", "title": "Source" }, "spread_max": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum bid-ask spread (0-1). Lower = more liquid.", "title": "Spread Max" }, "spread_min": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum bid-ask spread (0-1). Higher = less liquid.", "title": "Spread Min" }, "status": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated status list; any of {open, closing-soon, resolved}", "title": "Status" }, "volume_24h_change_max": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Maximum 24h notional volume change (signed USD).", "title": "Volume 24H Change Max" }, "volume_24h_change_min": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Minimum 24h notional volume change (signed USD; e.g. 1000 means +$1k vs prior 24h).", "title": "Volume 24H Change Min" }, "volume_24hr_max": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum 24h notional volume (USD).", "title": "Volume 24Hr Max" }, "volume_24hr_min": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum 24h notional volume (USD). Excludes low-activity markets.", "title": "Volume 24Hr Min" }, "volume_max": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum cumulative volume (USD).", "title": "Volume Max" }, "volume_min": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum cumulative volume (USD). Excludes low-activity markets across full history.", "title": "Volume Min" } }, "required": [], "type": "object" }, "name": "list_countries", "outputSchema": { "description": "Envelope for /api/v1/countries. Added in Spec 3 D1 to carry `_meta`.\n\nPre-Spec-3 the endpoint returned a bare `list[CountryCount]`; agents\nthat mandate \"every API response carries `_meta`\" need an envelope.\nThe frontend unwraps `.items` in `lib/api/countries.ts` so existing\ncomponent code continues to receive an array.", "properties": { "_meta": { "anyOf": [ { "description": "Agent metadata for list/aggregate responses (no cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" } }, "required": [ "canonical_url" ], "title": "ResponseMetaList", "type": "object" }, { "type": "null" } ] }, "items": { "items": { "description": "Single country + how many AI-evaluated markets are tagged with it.", "properties": { "count": { "title": "Count", "type": "integer" }, "name": { "title": "Name", "type": "string" } }, "required": [ "name", "count" ], "title": "CountryCount", "type": "object" }, "title": "Items", "type": "array" } }, "required": [ "items" ], "title": "CountriesOut", "type": "object", "x-fastmcp-top-level-schema": "CountriesOut" } }, { "description": "Use when an agent wants to browse, filter, or search prediction-market events across all 8 platforms. Returns paginated events with their child markets, prices, and platform metadata. Filterable by source (polymarket/kalshi/manifold/myriad/limitless/predict/opinion/gemini), category, country, status (open/closed), and full-text search via `search`. Sortable by `volume_24hr`, `normalized_vol_24hr`, `liquidity`, `end_date`, or `closed_time` (prefix `-` for descending). Cap `page_size` ≤ 50 to keep responses small enough for LLM context windows.", "inputSchema": { "properties": { "active": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Filter by `active` flag (true/false).", "title": "Active" }, "categories": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated category labels to include (OR)", "title": "Categories" }, "categories_exclude": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated category labels to exclude", "title": "Categories Exclude" }, "closed": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Filter by `closed` flag (true/false). Open markets are `closed=false`.", "title": "Closed" }, "countries": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated country names to include (OR). Full English names per the AI categorizer's prompt — e.g. 'United States', 'United Kingdom', 'European Union'. No allow-list — misspelled values silently yield zero matches.", "title": "Countries" }, "countries_exclude": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated country names to exclude.", "title": "Countries Exclude" }, "country_match": { "default": "any", "description": "How multiple `countries` combine: 'any' (default, OR — tagged with any selected country) or 'all' (AND — tagged with all of them, e.g. both Iran and Israel). Markets carry ≤3 country tags.", "pattern": "^(any|all)$", "title": "Country Match", "type": "string" }, "created_after": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to rows whose created_at >= this ISO 8601 datetime (first appearance in pdata's database).", "title": "Created After" }, "created_before": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to rows whose created_at <= this ISO 8601 datetime.", "title": "Created Before" }, "ends_after": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to events whose end_date >= this ISO 8601 datetime (e.g. `2026-06-01T00:00:00Z`).", "title": "Ends After" }, "ends_before": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to events whose end_date <= this ISO 8601 datetime.", "title": "Ends Before" }, "hide_ended": { "default": false, "description": "If true, hide markets/events whose end_date is in the past (end_date <= now()); rows with no end_date are kept.", "title": "Hide Ended", "type": "boolean" }, "hide_price_derivatives": { "default": false, "description": "If true, exclude events with is_price_derivative=TRUE", "title": "Hide Price Derivatives", "type": "boolean" }, "include_uncategorized": { "default": false, "description": "If true, the include clause also matches rows whose categories array is empty/NULL or contains only labels outside the canonical set (synthetic 'Other' bucket).", "title": "Include Uncategorized", "type": "boolean" }, "include_uncountried": { "default": false, "description": "If true, the include clause also matches rows whose countries array is empty/NULL — country-agnostic markets (synthetic 'No country' bucket).", "title": "Include Uncountried", "type": "boolean" }, "page": { "default": 1, "description": "Page number (1-indexed).", "minimum": 1, "title": "Page", "type": "integer" }, "page_size": { "default": 50, "description": "Items per page (1-200; default 50). Pass page_size=5 for chat-style summaries.", "maximum": 200, "minimum": 1, "title": "Page Size", "type": "integer" }, "rank_max": { "anyOf": [ { "maximum": 100, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum rank score (numeric).", "title": "Rank Max" }, "rank_min": { "anyOf": [ { "maximum": 100, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum rank score (numeric). Higher = more prominent.", "title": "Rank Min" }, "search": { "anyOf": [ { "maxLength": 200, "minLength": 1, "type": "string" }, { "type": "null" } ], "description": "Full-text search across title, description, slug. Case-insensitive substring match.", "title": "Search" }, "sort": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Field name; prefix '-' for descending order (e.g. `-volume_24hr`). Common allowed values: `volume_24hr`, `normalized_vol_24hr`, `liquidity`, `end_date`, `closed_time`, `updated_at`. Markets endpoints additionally accept `probability`, `prob_24h_change`, `spread`. Invalid values return 400.", "title": "Sort" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Source name(s); single value or comma-separated list. Allowed: polymarket, kalshi, manifold, myriad, limitless, predict, opinion, gemini.", "title": "Source" }, "status": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated status list; any of {open, closing-soon, resolved}", "title": "Status" }, "volume_24hr_max": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum 24h notional volume (USD).", "title": "Volume 24Hr Max" }, "volume_24hr_min": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum 24h notional volume (USD). Excludes low-activity markets.", "title": "Volume 24Hr Min" }, "volume_max": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum cumulative volume (USD).", "title": "Volume Max" }, "volume_min": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum cumulative volume (USD). Excludes low-activity markets across full history.", "title": "Volume Min" } }, "required": [], "type": "object" }, "name": "list_events", "outputSchema": { "properties": { "_meta": { "description": "Agent metadata for list/aggregate responses (no cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" } }, "required": [ "canonical_url" ], "title": "ResponseMetaList", "type": "object" }, "items": { "items": { "description": "Event as returned in list endpoints.", "properties": { "active": { "title": "Active", "type": "boolean" }, "added_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Added At" }, "categories": { "default": [], "items": { "type": "string" }, "title": "Categories", "type": "array" }, "chart_24h": { "anyOf": [ { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "title": "Chart 24H" }, "closed": { "title": "Closed", "type": "boolean" }, "closed_time": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Closed Time" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "end_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "End Date" }, "fetched_at": { "format": "date-time", "title": "Fetched At", "type": "string" }, "group_key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Group Key" }, "icon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon" }, "id": { "title": "Id", "type": "string" }, "image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Image" }, "is_group": { "default": false, "title": "Is Group", "type": "boolean" }, "liquidity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Liquidity" }, "normalized_vol_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Vol 24Hr" }, "normalized_volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Volume" }, "open_interest": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Open Interest" }, "parent_event_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Parent Event Id" }, "probability": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Probability" }, "slug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Slug" }, "source": { "title": "Source", "type": "string" }, "spread": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Spread" }, "start_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Start Date" }, "synthetic": { "default": false, "title": "Synthetic", "type": "boolean" }, "tags": { "default": [], "items": { "anyOf": [ { "type": "string" }, { "additionalProperties": true, "type": "object" } ] }, "title": "Tags", "type": "array" }, "ticker": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Ticker" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title" }, "top_outcome": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Top Outcome" }, "top_outcome_prob_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Top Outcome Prob 24H Change" }, "top_outcome_probability": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Top Outcome Probability" }, "top_outcome_volume_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Top Outcome Volume 24H Change" }, "updated_at": { "format": "date-time", "title": "Updated At", "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" }, "volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume" }, "volume_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24H Change" }, "volume_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24Hr" } }, "required": [ "source", "id", "active", "closed", "updated_at", "fetched_at" ], "title": "EventOut", "type": "object" }, "title": "Items", "type": "array" }, "meta": { "properties": { "page": { "minimum": 1, "title": "Page", "type": "integer" }, "page_size": { "minimum": 1, "title": "Page Size", "type": "integer" }, "total": { "minimum": 0, "title": "Total", "type": "integer" }, "total_pages": { "minimum": 0, "title": "Total Pages", "type": "integer" } }, "required": [ "page", "page_size", "total", "total_pages" ], "title": "PageMeta", "type": "object" } }, "required": [ "items", "meta", "_meta" ], "title": "Page[EventOut]", "type": "object", "x-fastmcp-top-level-schema": "Page_EventOut_" } }, { "description": "Use when the user wants to browse, filter, or sort individual markets (not events). Returns paginated markets with their probability, volume, source, parent event ID, and 24h delta. Filterable by source, country, category, status, and full-text `search`. Sortable by `volume_24hr` or `probability`. Cap `page_size` ≤ 50 for chat-friendly responses.", "inputSchema": { "properties": { "active": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Filter by `active` flag (true/false).", "title": "Active" }, "categories": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated category labels to include (OR)", "title": "Categories" }, "categories_exclude": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated category labels to exclude", "title": "Categories Exclude" }, "closed": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Filter by `closed` flag (true/false). Open markets are `closed=false`.", "title": "Closed" }, "countries": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated country names to include (OR). Full English names per the AI categorizer's prompt — e.g. 'United States', 'United Kingdom', 'European Union'. No allow-list — misspelled values silently yield zero matches.", "title": "Countries" }, "countries_exclude": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated country names to exclude.", "title": "Countries Exclude" }, "country_match": { "default": "any", "description": "How multiple `countries` combine: 'any' (default, OR — tagged with any selected country) or 'all' (AND — tagged with all of them, e.g. both Iran and Israel). Markets carry ≤3 country tags.", "pattern": "^(any|all)$", "title": "Country Match", "type": "string" }, "created_after": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to rows whose created_at >= this ISO 8601 datetime (first appearance in pdata's database).", "title": "Created After" }, "created_before": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to rows whose created_at <= this ISO 8601 datetime.", "title": "Created Before" }, "ends_after": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to events whose end_date >= this ISO 8601 datetime (e.g. `2026-06-01T00:00:00Z`).", "title": "Ends After" }, "ends_before": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to events whose end_date <= this ISO 8601 datetime.", "title": "Ends Before" }, "hide_ended": { "default": false, "description": "If true, hide markets/events whose end_date is in the past (end_date <= now()); rows with no end_date are kept.", "title": "Hide Ended", "type": "boolean" }, "hide_price_derivatives": { "default": false, "description": "If true, exclude events with is_price_derivative=TRUE", "title": "Hide Price Derivatives", "type": "boolean" }, "include_uncategorized": { "default": false, "description": "If true, the include clause also matches rows whose categories array is empty/NULL or contains only labels outside the canonical set (synthetic 'Other' bucket).", "title": "Include Uncategorized", "type": "boolean" }, "include_uncountried": { "default": false, "description": "If true, the include clause also matches rows whose countries array is empty/NULL — country-agnostic markets (synthetic 'No country' bucket).", "title": "Include Uncountried", "type": "boolean" }, "page": { "default": 1, "description": "Page number (1-indexed).", "minimum": 1, "title": "Page", "type": "integer" }, "page_size": { "default": 50, "description": "Items per page (1-200; default 50). Pass page_size=5 for chat-style summaries.", "maximum": 200, "minimum": 1, "title": "Page Size", "type": "integer" }, "prob_24h_change_max": { "anyOf": [ { "maximum": 1, "minimum": -1, "type": "number" }, { "type": "null" } ], "description": "Maximum 24h probability change (-1 to 1, signed).", "title": "Prob 24H Change Max" }, "prob_24h_change_min": { "anyOf": [ { "maximum": 1, "minimum": -1, "type": "number" }, { "type": "null" } ], "description": "Minimum 24h probability change (-1 to 1, signed). Use 0.15 for >=15pp positive moves.", "title": "Prob 24H Change Min" }, "probability_max": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum probability (0-1).", "title": "Probability Max" }, "probability_min": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum probability (0-1). Filters to markets above this implied probability.", "title": "Probability Min" }, "rank_max": { "anyOf": [ { "maximum": 100, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum rank score (numeric).", "title": "Rank Max" }, "rank_min": { "anyOf": [ { "maximum": 100, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum rank score (numeric). Higher = more prominent.", "title": "Rank Min" }, "search": { "anyOf": [ { "maxLength": 200, "minLength": 1, "type": "string" }, { "type": "null" } ], "description": "Full-text search across title, description, slug. Case-insensitive substring match.", "title": "Search" }, "sort": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Field name; prefix '-' for descending order (e.g. `-volume_24hr`). Common allowed values: `volume_24hr`, `normalized_vol_24hr`, `liquidity`, `end_date`, `closed_time`, `updated_at`. Markets endpoints additionally accept `probability`, `prob_24h_change`, `spread`. Invalid values return 400.", "title": "Sort" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Source name(s); single value or comma-separated list. Allowed: polymarket, kalshi, manifold, myriad, limitless, predict, opinion, gemini.", "title": "Source" }, "spread_max": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum bid-ask spread (0-1). Lower = more liquid.", "title": "Spread Max" }, "spread_min": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum bid-ask spread (0-1). Higher = less liquid.", "title": "Spread Min" }, "status": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated status list; any of {open, closing-soon, resolved}", "title": "Status" }, "volume_24h_change_max": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Maximum 24h notional volume change (signed USD).", "title": "Volume 24H Change Max" }, "volume_24h_change_min": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Minimum 24h notional volume change (signed USD; e.g. 1000 means +$1k vs prior 24h).", "title": "Volume 24H Change Min" }, "volume_24hr_max": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum 24h notional volume (USD).", "title": "Volume 24Hr Max" }, "volume_24hr_min": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum 24h notional volume (USD). Excludes low-activity markets.", "title": "Volume 24Hr Min" }, "volume_max": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum cumulative volume (USD).", "title": "Volume Max" }, "volume_min": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum cumulative volume (USD). Excludes low-activity markets across full history.", "title": "Volume Min" } }, "required": [], "type": "object" }, "name": "list_markets", "outputSchema": { "properties": { "_meta": { "description": "Agent metadata for list/aggregate responses (no cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" } }, "required": [ "canonical_url" ], "title": "ResponseMetaList", "type": "object" }, "items": { "items": { "description": "Market as returned in list and detail endpoints.", "properties": { "active": { "title": "Active", "type": "boolean" }, "added_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Added At" }, "categories": { "default": [], "items": { "type": "string" }, "title": "Categories", "type": "array" }, "chart_24h": { "anyOf": [ { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "title": "Chart 24H" }, "closed": { "title": "Closed", "type": "boolean" }, "closed_time": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Closed Time" }, "countries": { "default": [], "items": { "type": "string" }, "title": "Countries", "type": "array" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "end_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "End Date" }, "event_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Id" }, "event_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Title" }, "fetched_at": { "format": "date-time", "title": "Fetched At", "type": "string" }, "group_item_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Group Item Title" }, "icon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon" }, "id": { "title": "Id", "type": "string" }, "image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Image" }, "liquidity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Liquidity" }, "normalized_vol_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Vol 24Hr" }, "normalized_volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Volume" }, "outcome_prices": { "default": [], "items": { "type": "number" }, "title": "Outcome Prices", "type": "array" }, "outcomes": { "default": [], "items": { "type": "string" }, "title": "Outcomes", "type": "array" }, "prob_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Prob 24H Change" }, "probability": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Probability" }, "question": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Question" }, "slug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Slug" }, "source": { "title": "Source", "type": "string" }, "spread": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Spread" }, "start_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Start Date" }, "updated_at": { "format": "date-time", "title": "Updated At", "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" }, "volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume" }, "volume_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24H Change" }, "volume_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24Hr" } }, "required": [ "source", "id", "active", "closed", "updated_at", "fetched_at" ], "title": "MarketOut", "type": "object" }, "title": "Items", "type": "array" }, "meta": { "properties": { "page": { "minimum": 1, "title": "Page", "type": "integer" }, "page_size": { "minimum": 1, "title": "Page Size", "type": "integer" }, "total": { "minimum": 0, "title": "Total", "type": "integer" }, "total_pages": { "minimum": 0, "title": "Total Pages", "type": "integer" } }, "required": [ "page", "page_size", "total", "total_pages" ], "title": "PageMeta", "type": "object" } }, "required": [ "items", "meta", "_meta" ], "title": "Page[MarketOut]", "type": "object", "x-fastmcp-top-level-schema": "Page_MarketOut_" } }, { "description": "Use when the user wants to see the news-feed view: markets that exhibited a probability spike in the chosen lookback window, scored by `|Δprob_pp| × log10(1+USD-equivalent volume)`. Refreshed every 5 min. The `window=` param selects the lookback: 24 (default, ≥15pp), 12 (≥12pp), or 2 (≥2h, ≥10pp); `prob_change` is measured over that window. Includes a `prob_history` array (24h bucketed trajectory) per row regardless of window. Filterable by `source=` and `categories=` (CSV). Soft flags (`is_entertainment`/`is_microprediction`/`is_crypto`/`is_sports`/`is_weather`) default OFF; opt in with `include_*=true`.", "inputSchema": { "properties": { "categories": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Category filter (CSV). Examples: 'Politics', 'Sports', 'Crypto', 'Weather'. Maps to events.categories assignments.", "title": "Categories" }, "include_crypto": { "default": false, "description": "Include crypto price-derivative markets (default: excluded).", "title": "Include Crypto", "type": "boolean" }, "include_entertainment": { "default": false, "description": "Include entertainment markets (default: excluded for signal-to-noise).", "title": "Include Entertainment", "type": "boolean" }, "include_microprediction": { "default": false, "description": "Include microprediction / hyperlocal markets (default: excluded).", "title": "Include Microprediction", "type": "boolean" }, "include_resolved": { "default": false, "description": "Include resolved (closed) markets (default: excluded — news movers focus on live markets).", "title": "Include Resolved", "type": "boolean" }, "include_sports": { "default": false, "description": "Include sports markets (default: excluded).", "title": "Include Sports", "type": "boolean" }, "include_weather": { "default": false, "description": "Include weather markets (default: excluded).", "title": "Include Weather", "type": "boolean" }, "min_score": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum spike score. Higher = more notable spikes only.", "title": "Min Score" }, "ordering": { "default": "vol", "description": "Sort order. Allowed values: `vol` (volume-weighted score; default), `score` (raw spike score), `prob` (probability change magnitude).", "title": "Ordering", "type": "string" }, "page": { "default": 1, "description": "Page number (1-indexed).", "minimum": 1, "title": "Page", "type": "integer" }, "page_size": { "default": 50, "description": "Items per page (1-200; default 50).", "maximum": 200, "minimum": 1, "title": "Page Size", "type": "integer" }, "q": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Full-text search across market title and event title. Case-insensitive substring match.", "title": "Q" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Platform ID(s); single value or comma-separated list. Allowed: polymarket, kalshi, manifold, myriad, limitless, predict, opinion, gemini.", "title": "Source" }, "window": { "description": "Lookback windows the carousel selector exposes (hours). An IntEnum\n(not Literal[2,12,24]) because FastAPI coerces a query STRING to an\nIntEnum member but NOT to an int literal — `?window=24` would 422\nagainst a Literal even though the Python default 24 validates.", "enum": [ 2, 12, 24 ], "title": "SpikeWindow", "type": "integer" } }, "required": [], "type": "object" }, "name": "list_news_movers", "outputSchema": { "$defs": { "NewsCluster": { "description": "A cluster of news events that share a specific topical tag.\n\nBuilt per-source from the parent event's `tags` array (currently\nPolymarket-only — other sources don't reliably populate tags).\nPicked tag is the rarest globally that's also shared by at least\ntwo events in the news feed; the cluster's `cluster_label` is\nthat tag's `label` field as published by Polymarket.\n\n`events` is the member event list sorted by score desc. The\nFE renders the cluster as a 3-level structure:\n cluster header → up to N events → each event's gainer/loser.", "properties": { "cluster_key": { "title": "Cluster Key", "type": "string" }, "cluster_label": { "title": "Cluster Label", "type": "string" }, "cluster_slug": { "title": "Cluster Slug", "type": "string" }, "events": { "items": { "$ref": "#/$defs/NewsEventOut" }, "title": "Events", "type": "array" }, "image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Image" }, "kind": { "const": "cluster", "default": "cluster", "title": "Kind", "type": "string" }, "score": { "title": "Score", "type": "number" }, "source": { "title": "Source", "type": "string" }, "src": { "enum": [ "pm", "ka", "ma", "li", "op", "pr", "my", "gm" ], "title": "Src", "type": "string" }, "total_vol_24hr": { "title": "Total Vol 24Hr", "type": "number" } }, "required": [ "cluster_key", "cluster_label", "cluster_slug", "source", "src", "total_vol_24hr", "score", "events" ], "title": "NewsCluster", "type": "object" }, "NewsEventOut": { "description": "One news row, shaped to the wireframe's `NewsEvent` type.", "properties": { "cat": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cat" }, "categories": { "default": [], "items": { "type": "string" }, "title": "Categories", "type": "array" }, "children": { "default": [], "items": { "$ref": "#/$defs/NewsEventOut" }, "title": "Children", "type": "array" }, "closed_time": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Closed Time" }, "countries": { "default": [], "items": { "type": "string" }, "title": "Countries", "type": "array" }, "d_prob": { "title": "D Prob", "type": "number" }, "end_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "End Date" }, "event_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Id" }, "event_image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Image" }, "event_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Title" }, "event_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Url" }, "group_item_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Group Item Title" }, "image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Image" }, "is_crypto": { "title": "Is Crypto", "type": "boolean" }, "is_entertainment": { "title": "Is Entertainment", "type": "boolean" }, "is_microprediction": { "title": "Is Microprediction", "type": "boolean" }, "is_resolved": { "title": "Is Resolved", "type": "boolean" }, "is_sports": { "title": "Is Sports", "type": "boolean" }, "is_weather": { "title": "Is Weather", "type": "boolean" }, "kind": { "const": "event", "default": "event", "title": "Kind", "type": "string" }, "market_id": { "title": "Market Id", "type": "string" }, "normalized_vol": { "title": "Normalized Vol", "type": "number" }, "prob": { "title": "Prob", "type": "number" }, "prob_history": { "default": [], "items": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "title": "Prob History", "type": "array" }, "question": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Question" }, "score": { "title": "Score", "type": "number" }, "source": { "title": "Source", "type": "string" }, "spike": { "anyOf": [ { "$ref": "#/$defs/NewsSpike" }, { "type": "null" } ] }, "spike_kind": { "const": "prob", "default": "prob", "title": "Spike Kind", "type": "string" }, "src": { "enum": [ "pm", "ka", "ma", "li", "op", "pr", "my", "gm" ], "title": "Src", "type": "string" }, "status": { "enum": [ "open", "closing-soon", "resolved" ], "title": "Status", "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" }, "vol_24hr": { "title": "Vol 24Hr", "type": "number" } }, "required": [ "source", "market_id", "src", "prob", "d_prob", "vol_24hr", "normalized_vol", "status", "is_resolved", "score", "is_entertainment", "is_microprediction", "is_crypto", "is_sports", "is_weather" ], "title": "NewsEventOut", "type": "object" }, "NewsMoversResponse": { "description": "Response for GET /api/v1/news/movers.", "properties": { "_meta": { "anyOf": [ { "$ref": "#/$defs/ResponseMetaList" }, { "type": "null" } ] }, "count": { "title": "Count", "type": "integer" }, "last_refreshed_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Last Refreshed At" }, "page": { "title": "Page", "type": "integer" }, "page_size": { "title": "Page Size", "type": "integer" }, "results": { "items": { "anyOf": [ { "$ref": "#/$defs/NewsCluster" }, { "$ref": "#/$defs/NewsEventOut" } ] }, "title": "Results", "type": "array" } }, "required": [ "count", "page", "page_size", "last_refreshed_at", "results" ], "title": "NewsMoversResponse", "type": "object" }, "NewsSpike": { "description": "The news-qualifying probability swing, pinned for the chart.\n\nThe hourly ``prob_history`` can bucket a sub-hour spike away; this\ncarries the actual peak snapshot so the carousel chart draws and\nmarks it. ``pos`` is the fractional hour on the same 0..23 axis as\n``prob_history`` indices; ``peak_prob`` is the peak probability\n(0..100 pp) — named distinctly from ``NewsEventOut.prob`` (the\n*current* probability) to avoid the \"now vs peak\" confusion.", "properties": { "peak_prob": { "title": "Peak Prob", "type": "number" }, "pos": { "title": "Pos", "type": "number" } }, "required": [ "pos", "peak_prob" ], "title": "NewsSpike", "type": "object" }, "ResponseMetaList": { "description": "Agent metadata for list/aggregate responses (no cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" } }, "required": [ "canonical_url" ], "title": "ResponseMetaList", "type": "object" } }, "description": "Response for GET /api/v1/news/movers.", "properties": { "_meta": { "anyOf": [ { "$ref": "#/$defs/ResponseMetaList" }, { "type": "null" } ] }, "count": { "title": "Count", "type": "integer" }, "last_refreshed_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Last Refreshed At" }, "page": { "title": "Page", "type": "integer" }, "page_size": { "title": "Page Size", "type": "integer" }, "results": { "items": { "anyOf": [ { "$ref": "#/$defs/NewsCluster" }, { "$ref": "#/$defs/NewsEventOut" } ] }, "title": "Results", "type": "array" } }, "required": [ "count", "page", "page_size", "last_refreshed_at", "results" ], "title": "NewsMoversResponse", "type": "object", "x-fastmcp-top-level-schema": "NewsMoversResponse" } }, { "description": "Use when you need a geographic snapshot of where prediction-market attention is concentrated. Returns per-country heat (capped news score, summed) for the current moment (`at=now`) or a past hour (`at=<ISO8601>`).", "inputSchema": { "properties": { "at": { "default": "now", "description": "'now' (live cache) or an ISO-8601 timestamp for a past hourly frame.", "title": "At", "type": "string" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Restrict to one source (only honored when at=now): polymarket, kalshi, manifold, myriad, limitless, predict, opinion, gemini.", "title": "Source" } }, "required": [], "type": "object" }, "name": "map_heat", "outputSchema": { "properties": { "_meta": { "description": "Agent metadata for list/aggregate responses (no cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" } }, "required": [ "canonical_url" ], "title": "ResponseMetaList", "type": "object" }, "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "at": { "description": "'now' or the resolved snapshot ISO timestamp.", "title": "At", "type": "string" }, "frame": { "items": { "properties": { "country": { "title": "Country", "type": "string" }, "heat_abs": { "description": "Sum of capped per-market news scores for this country.", "title": "Heat Abs", "type": "number" }, "intensity": { "description": "heat_abs / rolling-30d reference, clamped to [0,1].", "title": "Intensity", "type": "number" }, "top_markets": { "items": { "properties": { "delta_pp": { "title": "Delta Pp", "type": "number" }, "event_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Id" }, "market_id": { "title": "Market Id", "type": "string" }, "more": { "default": 0, "description": "Count of other moved markets in the same event (collapsed into this row).", "title": "More", "type": "integer" }, "prob": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Current implied probability (0-1); None if unknown.", "title": "Prob" }, "source": { "title": "Source", "type": "string" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "External source-platform URL for this market; None if unknown.", "title": "Url" }, "vol": { "description": "Market 24h notional volume (USD).", "title": "Vol", "type": "number" } }, "required": [ "source", "market_id", "delta_pp", "vol" ], "title": "MapTopMarket", "type": "object" }, "title": "Top Markets", "type": "array" }, "total_markets": { "default": 0, "description": "Geo-tagged, non-excluded markets active in the trailing 24h.", "title": "Total Markets", "type": "integer" }, "total_volume": { "default": 0, "description": "Sum of lifetime market volume (USD).", "title": "Total Volume", "type": "number" }, "volume_24hr": { "default": 0, "description": "Sum of 24h market volume (USD).", "title": "Volume 24Hr", "type": "number" } }, "required": [ "country", "heat_abs", "intensity", "top_markets" ], "title": "MapHeatCountry", "type": "object" }, "title": "Frame", "type": "array" }, "reference": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Display yardstick (p95 per-country heat, 30d).", "title": "Reference" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Source" }, "total_heat": { "title": "Total Heat", "type": "number" }, "total_heat_avg_30d": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Total Heat Avg 30D" } }, "required": [ "as_of", "at", "total_heat", "frame", "_meta" ], "title": "MapHeatOut", "type": "object", "x-fastmcp-top-level-schema": "MapHeatOut" } }, { "description": "Use when you need the hourly total-heat time series that drives the /map playback scrubber. History accretes from launch (no backfill).", "inputSchema": { "properties": { "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Reserved; playback history is source_scope='all' in v1.", "title": "Source" } }, "required": [], "type": "object" }, "name": "map_timeline", "outputSchema": { "properties": { "_meta": { "description": "Agent metadata for list/aggregate responses (no cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" } }, "required": [ "canonical_url" ], "title": "ResponseMetaList", "type": "object" }, "series": { "items": { "properties": { "t": { "format": "date-time", "title": "T", "type": "string" }, "total": { "title": "Total", "type": "number" } }, "required": [ "t", "total" ], "title": "MapTimelinePoint", "type": "object" }, "title": "Series", "type": "array" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Source" } }, "required": [ "series", "_meta" ], "title": "MapTimelineOut", "type": "object", "x-fastmcp-top-level-schema": "MapTimelineOut" } }, { "description": "Use when the user wants the news feed bucketed by category. Returns the same data shape as `list_news_movers` but pre-grouped into the canonical 14-category vocabulary, with cluster grouping inside each bucket. Useful for 'what's moving in politics?' style queries.", "inputSchema": { "properties": { "include_crypto": { "default": false, "description": "Include crypto price-derivative markets (default: excluded).", "title": "Include Crypto", "type": "boolean" }, "include_entertainment": { "default": false, "description": "Include entertainment markets (default: excluded for signal-to-noise).", "title": "Include Entertainment", "type": "boolean" }, "include_microprediction": { "default": false, "description": "Include microprediction / hyperlocal markets (default: excluded).", "title": "Include Microprediction", "type": "boolean" }, "include_resolved": { "default": false, "description": "Include resolved (closed) markets (default: excluded — news movers focus on live markets).", "title": "Include Resolved", "type": "boolean" }, "include_sports": { "default": false, "description": "Include sports markets (default: excluded).", "title": "Include Sports", "type": "boolean" }, "include_weather": { "default": false, "description": "Include weather markets (default: excluded).", "title": "Include Weather", "type": "boolean" }, "min_score": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum spike score. Higher = more notable spikes only.", "title": "Min Score" }, "per_category": { "default": 11, "description": "Max items per category bucket (1-50; default 11).", "maximum": 50, "minimum": 1, "title": "Per Category", "type": "integer" }, "q": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Full-text search across market title and event title. Case-insensitive substring match.", "title": "Q" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Platform ID(s); single value or comma-separated list. Allowed: polymarket, kalshi, manifold, myriad, limitless, predict, opinion, gemini.", "title": "Source" } }, "required": [], "type": "object" }, "name": "news_movers_by_category", "outputSchema": { "$defs": { "NewsByCategoryResponse": { "description": "Response for GET /api/v1/news/movers/by-category.\n\nThe same event/cluster can appear in multiple buckets when its\ncategories list contains more than one entry. Bucket keys match\nv2's `KNOWN_CATEGORIES`; bucket values are sorted by score desc\nand capped at the per-category limit (`?per_category=`, default 11).", "properties": { "_meta": { "anyOf": [ { "$ref": "#/$defs/ResponseMetaList" }, { "type": "null" } ] }, "by_category": { "additionalProperties": { "items": { "anyOf": [ { "$ref": "#/$defs/NewsCluster" }, { "$ref": "#/$defs/NewsEventOut" } ] }, "type": "array" }, "title": "By Category", "type": "object" }, "last_refreshed_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Last Refreshed At" } }, "required": [ "last_refreshed_at", "by_category" ], "title": "NewsByCategoryResponse", "type": "object" }, "NewsCluster": { "description": "A cluster of news events that share a specific topical tag.\n\nBuilt per-source from the parent event's `tags` array (currently\nPolymarket-only — other sources don't reliably populate tags).\nPicked tag is the rarest globally that's also shared by at least\ntwo events in the news feed; the cluster's `cluster_label` is\nthat tag's `label` field as published by Polymarket.\n\n`events` is the member event list sorted by score desc. The\nFE renders the cluster as a 3-level structure:\n cluster header → up to N events → each event's gainer/loser.", "properties": { "cluster_key": { "title": "Cluster Key", "type": "string" }, "cluster_label": { "title": "Cluster Label", "type": "string" }, "cluster_slug": { "title": "Cluster Slug", "type": "string" }, "events": { "items": { "$ref": "#/$defs/NewsEventOut" }, "title": "Events", "type": "array" }, "image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Image" }, "kind": { "const": "cluster", "default": "cluster", "title": "Kind", "type": "string" }, "score": { "title": "Score", "type": "number" }, "source": { "title": "Source", "type": "string" }, "src": { "enum": [ "pm", "ka", "ma", "li", "op", "pr", "my", "gm" ], "title": "Src", "type": "string" }, "total_vol_24hr": { "title": "Total Vol 24Hr", "type": "number" } }, "required": [ "cluster_key", "cluster_label", "cluster_slug", "source", "src", "total_vol_24hr", "score", "events" ], "title": "NewsCluster", "type": "object" }, "NewsEventOut": { "description": "One news row, shaped to the wireframe's `NewsEvent` type.", "properties": { "cat": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cat" }, "categories": { "default": [], "items": { "type": "string" }, "title": "Categories", "type": "array" }, "children": { "default": [], "items": { "$ref": "#/$defs/NewsEventOut" }, "title": "Children", "type": "array" }, "closed_time": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Closed Time" }, "countries": { "default": [], "items": { "type": "string" }, "title": "Countries", "type": "array" }, "d_prob": { "title": "D Prob", "type": "number" }, "end_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "End Date" }, "event_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Id" }, "event_image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Image" }, "event_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Title" }, "event_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Url" }, "group_item_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Group Item Title" }, "image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Image" }, "is_crypto": { "title": "Is Crypto", "type": "boolean" }, "is_entertainment": { "title": "Is Entertainment", "type": "boolean" }, "is_microprediction": { "title": "Is Microprediction", "type": "boolean" }, "is_resolved": { "title": "Is Resolved", "type": "boolean" }, "is_sports": { "title": "Is Sports", "type": "boolean" }, "is_weather": { "title": "Is Weather", "type": "boolean" }, "kind": { "const": "event", "default": "event", "title": "Kind", "type": "string" }, "market_id": { "title": "Market Id", "type": "string" }, "normalized_vol": { "title": "Normalized Vol", "type": "number" }, "prob": { "title": "Prob", "type": "number" }, "prob_history": { "default": [], "items": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "title": "Prob History", "type": "array" }, "question": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Question" }, "score": { "title": "Score", "type": "number" }, "source": { "title": "Source", "type": "string" }, "spike": { "anyOf": [ { "$ref": "#/$defs/NewsSpike" }, { "type": "null" } ] }, "spike_kind": { "const": "prob", "default": "prob", "title": "Spike Kind", "type": "string" }, "src": { "enum": [ "pm", "ka", "ma", "li", "op", "pr", "my", "gm" ], "title": "Src", "type": "string" }, "status": { "enum": [ "open", "closing-soon", "resolved" ], "title": "Status", "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" }, "vol_24hr": { "title": "Vol 24Hr", "type": "number" } }, "required": [ "source", "market_id", "src", "prob", "d_prob", "vol_24hr", "normalized_vol", "status", "is_resolved", "score", "is_entertainment", "is_microprediction", "is_crypto", "is_sports", "is_weather" ], "title": "NewsEventOut", "type": "object" }, "NewsSpike": { "description": "The news-qualifying probability swing, pinned for the chart.\n\nThe hourly ``prob_history`` can bucket a sub-hour spike away; this\ncarries the actual peak snapshot so the carousel chart draws and\nmarks it. ``pos`` is the fractional hour on the same 0..23 axis as\n``prob_history`` indices; ``peak_prob`` is the peak probability\n(0..100 pp) — named distinctly from ``NewsEventOut.prob`` (the\n*current* probability) to avoid the \"now vs peak\" confusion.", "properties": { "peak_prob": { "title": "Peak Prob", "type": "number" }, "pos": { "title": "Pos", "type": "number" } }, "required": [ "pos", "peak_prob" ], "title": "NewsSpike", "type": "object" }, "ResponseMetaList": { "description": "Agent metadata for list/aggregate responses (no cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" } }, "required": [ "canonical_url" ], "title": "ResponseMetaList", "type": "object" } }, "description": "Response for GET /api/v1/news/movers/by-category.\n\nThe same event/cluster can appear in multiple buckets when its\ncategories list contains more than one entry. Bucket keys match\nv2's `KNOWN_CATEGORIES`; bucket values are sorted by score desc\nand capped at the per-category limit (`?per_category=`, default 11).", "properties": { "_meta": { "anyOf": [ { "$ref": "#/$defs/ResponseMetaList" }, { "type": "null" } ] }, "by_category": { "additionalProperties": { "items": { "anyOf": [ { "$ref": "#/$defs/NewsCluster" }, { "$ref": "#/$defs/NewsEventOut" } ] }, "type": "array" }, "title": "By Category", "type": "object" }, "last_refreshed_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Last Refreshed At" } }, "required": [ "last_refreshed_at", "by_category" ], "title": "NewsByCategoryResponse", "type": "object", "x-fastmcp-top-level-schema": "NewsByCategoryResponse" } }, { "description": "Use when an agent has a name or phrase and needs the `(source, id)` of the matching event or market before calling another tool. Resolves free text against events AND markets in one call, best-first, and reports `total_events` / `total_markets` so the agent can tell a precise hit from an ambiguous one. Every row carries `event_path`, the internal link to use for follow-up lookups. Prefer this over running `list_events?search=` and `list_markets?search=` separately when the goal is identification rather than a filtered listing. Note: `headline` carries literal `<b>` highlight markup — quote `title` instead, or strip the tags.", "inputSchema": { "properties": { "limit": { "default": 8, "description": "Maximum number of coalesced results to return (1-20, default 8). `total_events` / `total_markets` in the envelope are uncapped and reflect the full match count, not this limit.", "maximum": 20, "minimum": 1, "title": "Limit", "type": "integer" }, "q": { "description": "Free-text query, matched against event titles and market questions. Queries shorter than 2 characters deliberately return an empty result set rather than half the dataset.", "maxLength": 200, "minLength": 1, "title": "Q", "type": "string" } }, "required": [ "q" ], "type": "object" }, "name": "search_suggest", "outputSchema": { "description": "Envelope kept distinct from `Page` because suggest never paginates\n— `total` is meaningless when ranking truncates aggressively at 8.\n\nBut we *do* expose total match counts so the frontend can render a\n\"View all N results\" deep-link footer (the typeahead becomes a\nlaunchpad to the markets page, not a dead-end at 8 hits).", "properties": { "_meta": { "anyOf": [ { "description": "Agent metadata for list/aggregate responses (no cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" } }, "required": [ "canonical_url" ], "title": "ResponseMetaList", "type": "object" }, { "type": "null" } ] }, "results": { "items": { "properties": { "child_count": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Child Count" }, "end_date": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "End Date" }, "event_path": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Path" }, "event_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Title" }, "headline": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "`title` with the query's matched fragments wrapped in literal `<b>`/`</b>` tags (Postgres `ts_headline` output), for callers that render highlighted search rows. This is markup, not prose: non-rendering consumers — LLM agents especially — should quote `title` instead, or strip the tags before echoing this field. Null when the row was matched without highlighting.", "title": "Headline" }, "id": { "title": "Id", "type": "string" }, "kind": { "enum": [ "event", "market" ], "title": "Kind", "type": "string" }, "prob_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Prob 24H Change" }, "probability": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Probability" }, "source": { "title": "Source", "type": "string" }, "status": { "enum": [ "open", "closing-soon", "past", "resolved" ], "title": "Status", "type": "string" }, "title": { "title": "Title", "type": "string" }, "url_path": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url Path" }, "volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume" }, "volume_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24Hr" } }, "required": [ "kind", "id", "source", "title", "headline", "status", "volume_24hr", "volume", "child_count", "url_path", "event_path", "event_title", "probability", "prob_24h_change", "end_date" ], "title": "SearchHit", "type": "object" }, "title": "Results", "type": "array" }, "total_events": { "title": "Total Events", "type": "integer" }, "total_markets": { "title": "Total Markets", "type": "integer" } }, "required": [ "results", "total_events", "total_markets" ], "title": "SearchSuggestOut", "type": "object", "x-fastmcp-top-level-schema": "SearchSuggestOut" } }, { "description": "Use when the user wants to see markets with the largest 24h probability swings. Returns the top N movers (default 5, max 20) ranked by absolute `prob_24h_change`. Filterable by source. Excludes Limitless and price-derivative markets by curation. Useful for 'what changed today?' style queries.", "inputSchema": { "properties": { "active": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Filter by `active` flag (true/false).", "title": "Active" }, "categories": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated category labels to include (OR)", "title": "Categories" }, "categories_exclude": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated category labels to exclude", "title": "Categories Exclude" }, "closed": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "Filter by `closed` flag (true/false). Open markets are `closed=false`.", "title": "Closed" }, "countries": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated country names to include (OR). Full English names per the AI categorizer's prompt — e.g. 'United States', 'United Kingdom', 'European Union'. No allow-list — misspelled values silently yield zero matches.", "title": "Countries" }, "countries_exclude": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated country names to exclude.", "title": "Countries Exclude" }, "country_match": { "default": "any", "description": "How multiple `countries` combine: 'any' (default, OR — tagged with any selected country) or 'all' (AND — tagged with all of them, e.g. both Iran and Israel). Markets carry ≤3 country tags.", "pattern": "^(any|all)$", "title": "Country Match", "type": "string" }, "created_after": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to rows whose created_at >= this ISO 8601 datetime (first appearance in pdata's database).", "title": "Created After" }, "created_before": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to rows whose created_at <= this ISO 8601 datetime.", "title": "Created Before" }, "ends_after": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to events whose end_date >= this ISO 8601 datetime (e.g. `2026-06-01T00:00:00Z`).", "title": "Ends After" }, "ends_before": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Filter to events whose end_date <= this ISO 8601 datetime.", "title": "Ends Before" }, "hide_ended": { "default": false, "description": "If true, hide markets/events whose end_date is in the past (end_date <= now()); rows with no end_date are kept.", "title": "Hide Ended", "type": "boolean" }, "hide_price_derivatives": { "default": false, "description": "If true, exclude events with is_price_derivative=TRUE", "title": "Hide Price Derivatives", "type": "boolean" }, "include_uncategorized": { "default": false, "description": "If true, the include clause also matches rows whose categories array is empty/NULL or contains only labels outside the canonical set (synthetic 'Other' bucket).", "title": "Include Uncategorized", "type": "boolean" }, "include_uncountried": { "default": false, "description": "If true, the include clause also matches rows whose countries array is empty/NULL — country-agnostic markets (synthetic 'No country' bucket).", "title": "Include Uncountried", "type": "boolean" }, "limit": { "default": 5, "description": "Number of results to return (1-20; default 5).", "maximum": 20, "minimum": 1, "title": "Limit", "type": "integer" }, "prob_24h_change_max": { "anyOf": [ { "maximum": 1, "minimum": -1, "type": "number" }, { "type": "null" } ], "description": "Maximum 24h probability change (-1 to 1, signed).", "title": "Prob 24H Change Max" }, "prob_24h_change_min": { "anyOf": [ { "maximum": 1, "minimum": -1, "type": "number" }, { "type": "null" } ], "description": "Minimum 24h probability change (-1 to 1, signed). Use 0.15 for >=15pp positive moves.", "title": "Prob 24H Change Min" }, "probability_max": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum probability (0-1).", "title": "Probability Max" }, "probability_min": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum probability (0-1). Filters to markets above this implied probability.", "title": "Probability Min" }, "rank_max": { "anyOf": [ { "maximum": 100, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum rank score (numeric).", "title": "Rank Max" }, "rank_min": { "anyOf": [ { "maximum": 100, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum rank score (numeric). Higher = more prominent.", "title": "Rank Min" }, "search": { "anyOf": [ { "maxLength": 200, "minLength": 1, "type": "string" }, { "type": "null" } ], "description": "Full-text search across title, description, slug. Case-insensitive substring match.", "title": "Search" }, "sort": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Field name; prefix '-' for descending order (e.g. `-volume_24hr`). Common allowed values: `volume_24hr`, `normalized_vol_24hr`, `liquidity`, `end_date`, `closed_time`, `updated_at`. Markets endpoints additionally accept `probability`, `prob_24h_change`, `spread`. Invalid values return 400.", "title": "Sort" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Source name(s); single value or comma-separated list. Allowed: polymarket, kalshi, manifold, myriad, limitless, predict, opinion, gemini.", "title": "Source" }, "spread_max": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum bid-ask spread (0-1). Lower = more liquid.", "title": "Spread Max" }, "spread_min": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum bid-ask spread (0-1). Higher = less liquid.", "title": "Spread Min" }, "status": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated status list; any of {open, closing-soon, resolved}", "title": "Status" }, "volume_24h_change_max": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Maximum 24h notional volume change (signed USD).", "title": "Volume 24H Change Max" }, "volume_24h_change_min": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Minimum 24h notional volume change (signed USD; e.g. 1000 means +$1k vs prior 24h).", "title": "Volume 24H Change Min" }, "volume_24hr_max": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum 24h notional volume (USD).", "title": "Volume 24Hr Max" }, "volume_24hr_min": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum 24h notional volume (USD). Excludes low-activity markets.", "title": "Volume 24Hr Min" }, "volume_max": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Maximum cumulative volume (USD).", "title": "Volume Max" }, "volume_min": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "description": "Minimum cumulative volume (USD). Excludes low-activity markets across full history.", "title": "Volume Min" } }, "required": [], "type": "object" }, "name": "top_movers", "outputSchema": { "properties": { "_meta": { "description": "Agent metadata for list/aggregate responses (no cite_as).", "properties": { "as_of": { "format": "date-time", "title": "As Of", "type": "string" }, "attribution": { "default": "pdata.world — aggregated prediction-market data across 8 platforms", "title": "Attribution", "type": "string" }, "canonical_url": { "title": "Canonical Url", "type": "string" }, "docs": { "default": "https://api.pdata.world/docs", "title": "Docs", "type": "string" } }, "required": [ "canonical_url" ], "title": "ResponseMetaList", "type": "object" }, "items": { "items": { "description": "Market as returned in list and detail endpoints.", "properties": { "active": { "title": "Active", "type": "boolean" }, "added_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Added At" }, "categories": { "default": [], "items": { "type": "string" }, "title": "Categories", "type": "array" }, "chart_24h": { "anyOf": [ { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "title": "Chart 24H" }, "closed": { "title": "Closed", "type": "boolean" }, "closed_time": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Closed Time" }, "countries": { "default": [], "items": { "type": "string" }, "title": "Countries", "type": "array" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description" }, "end_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "End Date" }, "event_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Id" }, "event_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Event Title" }, "fetched_at": { "format": "date-time", "title": "Fetched At", "type": "string" }, "group_item_title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Group Item Title" }, "icon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon" }, "id": { "title": "Id", "type": "string" }, "image": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Image" }, "liquidity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Liquidity" }, "normalized_vol_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Vol 24Hr" }, "normalized_volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Normalized Volume" }, "outcome_prices": { "default": [], "items": { "type": "number" }, "title": "Outcome Prices", "type": "array" }, "outcomes": { "default": [], "items": { "type": "string" }, "title": "Outcomes", "type": "array" }, "prob_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Prob 24H Change" }, "probability": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Probability" }, "question": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Question" }, "slug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Slug" }, "source": { "title": "Source", "type": "string" }, "spread": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Spread" }, "start_date": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Start Date" }, "updated_at": { "format": "date-time", "title": "Updated At", "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Url" }, "volume": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume" }, "volume_24h_change": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24H Change" }, "volume_24hr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Volume 24Hr" } }, "required": [ "source", "id", "active", "closed", "updated_at", "fetched_at" ], "title": "MarketOut", "type": "object" }, "title": "Items", "type": "array" }, "meta": { "properties": { "page": { "minimum": 1, "title": "Page", "type": "integer" }, "page_size": { "minimum": 1, "title": "Page Size", "type": "integer" }, "total": { "minimum": 0, "title": "Total", "type": "integer" }, "total_pages": { "minimum": 0, "title": "Total Pages", "type": "integer" } }, "required": [ "page", "page_size", "total", "total_pages" ], "title": "PageMeta", "type": "object" } }, "required": [ "items", "meta", "_meta" ], "title": "Page[MarketOut]", "type": "object", "x-fastmcp-top-level-schema": "Page_MarketOut_" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:514b365a07a4c9d10845df5e4dd9ddcace50608399a17f0b8e5c9bc81690de7e | sha256sum