MCP Server for Prediction Market Metadata API - Access comprehensive prediction market data through 24 specialized tools
DFlow MCP Server has 15 tools with inconsistent quality. Naming is generally strong (verb-noun pattern: get_event, get_markets, etc.), but schemas are only partially visible in the provided source. Descriptions are present and moderately detailed (50-150 chars typical), but several critical issues emerge: (1) output schemas are not documented anywhere in the source provided, forcing the score down significantly; (2) some tools lack proper constraint documentation (e.g., percentiles parameter in get_forecast_percentile_history is described as 'Comma-separated list' but no enum or pattern is enforced); (3) error handling guidance is absent, no mention of recovery steps or error categorization; (4) parameter relationships are undocumented (e.g., get_events has both 'seriesTickers' and 'status' filters but no guidance on how they interact). Tools 1-15 show consistent patterns but lack depth in documentation that production-grade tools provide. The web-server.ts shows only 3 tools defined (get_events, get_markets, get_trades) while the spec lists 15, suggesting tool definitions may be spread across multiple files or not fully visible in the sample code provided.
Get a single event by ticker. Returns event metadata including series ticker, subtitle, markets, strike information and volume.
Get event candlesticks from the Kalshi API. Resolves series ticker automatically.
Get a paginated list of all events with optional filtering and sorting.
Get historical raw and formatted forecast numbers for an event at specified percentiles.
Get forecast history by looking up an event using a market mint address.
Get live data from the Kalshi API for specific milestones.
Output schemas not documented. No tool returns a documented schema showing what fields agents will receive. This forces LLMs to guess at response structure and prevents effective downstream tool chaining.
Missing error handling guidance. No tool documents what errors can occur, how to recover, or what the LLM should do next. A raw HTTP error or API timeout gives agents no path forward.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 47 | - | v1 |
Get live data for all milestones of an event.
Get details of a market by ticker.
Get a market by looking up its mint address.
Get market candlesticks. Resolves series ticker automatically.
Get candlesticks by looking up a market by mint address.
Get a paginated list of markets with optional filtering.
Get multiple markets by tickers and/or mint addresses (up to 100 results).
Get a paginated list of trades across markets with optional filtering.
Get trades for a market identified by a mint address.
Parameters with free-form string constraints lack enums. 'percentiles' in get_forecast_percentile_history is described as 'Comma-separated list' but no enum validation or format pattern is specified. LLMs will hallucinate invalid percentile values.
Parameter relationships undocumented. Tools like get_events accept multiple filter parameters (seriesTickers, status, isInitialized) but do not explain how they combine (AND vs OR) or whether some are mutually exclusive.
Pagination cursors lack consistency. get_trades uses cursor as string, but get_events and get_markets use cursor as integer. This inconsistency forces LLMs to track different cursor types for similar list operations.
No pagination or result-limit documentation. Tools accept limit parameters but do not document max allowed values, default behaviors, or whether they support result overflow. Unbounded result sets can exhaust context windows.
Descriptions too generic in some cases. Tools like get_live_data ('Get live data from the Kalshi API for specific milestones') do not explain what 'live data' means or when to use this vs get_live_data_by_event. Similar-name tools risk LLM confusion.