prediction-friction-tracker
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@prediction-friction-trackerBest venue for low fees and no KYC?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Prediction market friction tracker
Structured KYC, fee, and withdrawal data across 12 prediction-market venues, plus a change feed for when those terms move and a natural-language "which venue is best for X" recommendation tool. Built for AI agents that need to check execution friction before routing a trade — not for humans clicking around a dashboard.
Live now: https://prediction-friction-tracker-production.up.railway.app
For agents: three ways in
Plain HTTP —
GET /friction/venues,GET /friction/venue/{slug},GET /friction/changes?since=<ISO8601>. Full OpenAPI spec at/openapi.json, interactive docs at/docs, agent-readable summary at/llms.txt.MCP — a streamable-HTTP MCP server mounted at
/mcp/, exposinglist_venues,get_venue,recommend_venue, andget_changes_infoas tools. Point any MCP-compatible client at the/mcp/URL directly.x402 —
/friction/changes(the time-sensitive change feed) is gated by the x402 protocol: unpaid requests get a real402with a payment challenge; pay $0.05 USDC on Base mainnet and retry to get the data. This is live, verified end-to-end with real money, not a demo — seeapi.pyfor the CDP-facilitator wiring.
Related MCP server: Parlay
Endpoints
Endpoint | Cost | What it returns |
| Free | Current snapshot of every tracked venue. Optional |
| Free | One venue's current fee/KYC/withdrawal/API-access data, e.g. |
| $0.05 USDC (x402) | Append-only log of every detected change since a timestamp — the time-sensitive product. |
Every record carries a confidence field: verified (spot-checked or
high-confidence extraction), stale (source was unreachable, showing a
cached value), or unconfirmed (LLM extraction was ambiguous). Treat
unconfirmed as a lead to verify against the venue directly, not a fact to
trade on.
MCP tools
list_venues(confidence)— browse/filter the current snapshot.get_venue(slug)— one venue's full data.recommend_venue(query)— free-text "which venue is best for lowest fees on high-frequency trading" / "I don't want to do KYC" / "API access without a wallet" style questions, reasoned over the current dataset. Says so explicitly rather than guessing when a query depends on data this tracker doesn't have (liquidity, volume, spread, uptime).get_changes_info()— describes the paid change feed (URL, price) without reimplementing it for free.
What's here
File | What it does |
| The data model — one |
| The 12 tracked venues and their policy-page source URLs |
| Fetches and cleans raw policy-page text (requests + Playwright fallback for JS-rendered pages) |
| Sends raw page text to Claude, gets back a structured |
| Natural-language venue recommendation — reasons over the current dataset via Claude, structured-output constrained to real venue slugs |
| Cross-checks scraped fees against a third-party source (TradeBlock), flags divergences for human review |
| SQLite: |
| Compares a fresh extraction to the stored one, writes a |
| Orchestrates fetch → extract → diff → store, for all 12 venues |
| FastAPI server — the HTTP endpoints above, x402 payment gating, MCP mount |
| The MCP tool definitions, mounted into |
| Pure-logic tests, no API key needed |
Running it locally
pip install -r requirements.txt
python test_pipeline_logic.py # no API key needed, proves storage/diff logic
python test_recommend_logic.py # no API key needed, proves recommendation logic
export ANTHROPIC_API_KEY=sk-ant-...
python run_pipeline.py # real scrape -> extract -> store, all 12 venues
uvicorn api:app --reload # boots the API on localhost:8000Then in another terminal:
curl http://localhost:8000/friction/venues
curl http://localhost:8000/friction/venue/kalshi
curl "http://localhost:8000/friction/changes?since=2020-01-01T00:00:00Z"See CLAUDE.md for environment quirks, Claude API usage notes, and the
data-quality/confidence model in more depth.
Informational only — not financial or legal advice. Verify directly with the venue before acting on any figure returned here.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only MCP server for live Polymarket, Kalshi, Limitless odds; Manifold sentiment.
market-spread MCP — cross-venue prediction-market landscape scanner.
Hosted MCP for Kalshi prediction markets: search, odds, order books, settlement rules, and trading.
Keyless prediction-market data across 12 venues plus paper-trading of crypto spot, futures, and PM.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for Polymarket prediction markets, enabling search, market details, pricing, and bet analysis through 6 tools, with optional authenticated trading via API key.622 npmMIT

Parlayofficial
AlicenseNot gradedqualityCmaintenanceRemote MCP server for prediction markets — search and compare live odds across Polymarket, Kalshi, and Limitless from Claude, ChatGPT, or Gemini. Six read-only tools, free tier available.6MIT- AlicenseCqualityCmaintenanceMCP server that provides a unified prediction market API for multiple venues like Polymarket and Kalshi, allowing AI agents to discover markets, fetch order books, and execute trades through a single interface.32216 npm8MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for querying and optionally trading across prediction markets (Polymarket, Kalshi, Limitless, Manifold) through a unified API.31MIT