Futuur Prediction Market MCP. Global play-money + real-money prediction markets — politics, crypto, sports, science. Per-outcome implied probabilities (price 0–1) in two currency modes: OOM = play money, USDC = real money. Keyless for public market reads. A complement to the polymarket / kalshi / manifold / predictit packs.
Three well-named, read-only tools with complete input schemas and solid descriptions (150 - 250 chars each). All parameters have types and descriptions. Output structure is documented in code (mapMarket, mapOutcomes functions). Naming follows verb_noun pattern (search_, get_, top_). No critical security issues (keyless, read-only). Main gaps: no output schema formally documented in tool definitions; no error recovery guidance in descriptions; no pagination metadata (total count, next_cursor) in search_markets despite accepting limit; parameter enums not declared (currency_mode, status accept free strings instead of enum constraints).
Get one Futuur market by id with its full outcome list and per-outcome implied probabilities (play-money OOM + real-money USDC, as percentages), volumes, tags, description, and resolution status. Example id: 231754 ("Which price will Bitcoin hit in 2026?"). Keyless.
Search Futuur prediction markets (politics, crypto, sports, science) by text. Returns open markets by default with per-outcome implied probabilities in both play-money (OOM) and real-money (USDC) modes. Keyless.
Most-active open Futuur markets (attention signal), ranked by trading volume. Returns each market with per-outcome implied probabilities (OOM play-money + USDC real-money). Keyless.
Parameter enums not declared: currency_mode and status accept free-form strings instead of enum constraints. LLMs may hallucinate invalid values like 'crypto_money' or 'pending'.
Output schema not formally documented in tool definitions. Descriptions mention 'per-outcome implied probabilities' and 'volumes' but the exact response structure (fields, types, nesting) is only visible in mapMarket/mapOutcomes code. LLMs cannot plan downstream calls without explicit output schema.
search_markets accepts limit but does not return pagination metadata (total count, next_cursor, has_more). Agents cannot determine if results are truncated or plan multi-page fetches.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Error descriptions lack recovery guidance. If futuurGet() fails (network error, 404, rate limit), the error message is raw HTTP status + truncated body. No hint to the LLM about what to do next (retry, try a different search, check network).
search_markets description includes example values ('trump', 'bitcoin', 'world cup'). LLMs tend to reuse examples literally rather than adapting to context, risking low-quality searches.