Final Score β On-Chain Sports Prediction Markets (Live on Mainnet)
Hey everyone ![]()
Iβve been building Final Score, a fully on-chain sports prediction market running on the Internet Computer. Itβs been stable on mainnet for the past 24 hours and Iβm looking for collaborators, testers, and anyone interested in prediction markets or AI agent infrastructure.
What is Final Score?
Final Score is a prediction market running entirely on-chain on the Internet Computer. Markets are synced from Polymarket via an off-chain worker, and when they resolve, the canister does a direct HTTP outcall to Polymarket to fetch the outcome β no trusted intermediary needed for resolution.
It uses the standard $1 contract model (same as Polymarket/Kalshi) β you buy outcome shares at a price between $0 and $1, and winning shares pay out $1. Simple, familiar, composable.
We started with sports but the architecture works with any market on Polymarket β politics, crypto, world events, whatever. The sync worker just needs to be pointed at new categories.
Live App: vn2t6-yiaaa-aaaai-q4b4q-cai.icp0.io
GitHub: github.com/jneums/final-score
MCP Endpoint: https://ilyol-uqaaa-aaaai-q34kq-cai.icp0.io/mcp
Current Stats
- 685 markets synced (628 currently open)
- 47 markets resolved with successful payouts
- 6 sports covered so far: Football, Basketball, Cricket, Baseball, Hockey, American Football
- Multi-league: Premier League, La Liga, Bundesliga, Serie A, Ligue 1, Champions League, WNBA, and more
- Expandable to any Polymarket category
How It Works
- Connect your ICP wallet
- Approve token spending (ICRC-2)
- Buy outcome shares on a market (priced $0β$1)
- Winning shares pay out $1 β all settled on-chain
Markets are synced from Polymarket and resolution is verified via HTTP outcalls directly to Polymarketβs API. No oracle trust assumptions beyond Polymarket itself.
Note on tokens: Weβre currently using a test ICRC-1 token from the DFINITY faucet while we finalize the token choice. Options on the table are ckUSDC, 1sec USDC, or ICP. Happy to hear opinions on this.
The AI Agent Angle (MCP)
This is where it gets interesting. Final Score is built as an MCP (Model Context Protocol) server, meaning AI agents can natively interact with it. Any MCP-compatible agent can:
- Browse and filter markets
- Check account balances
- Place predictions
- Claim winnings
The MCP endpoint exposes 7 tools that any agent can call. If youβre building AI agents on ICP or experimenting with MCP, this is a live production target to test against.
What Iβm Looking For
Iβm at the stage where the core system works and I need people to battle-test it and help push it forward. Hereβs where you can contribute:
Testers
Try the app, place some predictions, break things. I need eyes on the UI, the wallet connection flow, and the trading experience. Bug reports are gold.
Market Makers
The markets need liquidity. If youβre interested in providing liquidity across sports markets, Iβd love to chat about strategies and tooling to make this easier.
AI Agent Builders
If youβre building MCP-compatible agents or experimenting with autonomous trading, Final Score is a live sandbox. Point your agent at the MCP endpoint and see what it can do. Iβm especially interested in agents that can:
- Analyze match data and place informed predictions
- Provide automated liquidity across markets
- Build dashboards or analytics on top of the market data
Bot & Strategy Developers
Want to write a trading bot? The canister interface is fully documented and the MCP endpoint makes integration straightforward. The $1 contract model means youβre trading shares at market prices β find mispriced outcomes and profit.
Market Expansion / Sync Contributors
The sync worker currently pulls sports markets from Polymarket, but the architecture supports any category β politics, crypto, entertainment, world events. If youβre interested in helping expand market coverage or improving the sync pipeline, thereβs plenty of room.
Frontend Contributors
The app is React + Vite deployed as an ICP asset canister. Thereβs plenty of room for UI/UX improvements β better market cards, live odds visualization, mobile experience, portfolio analytics. The repo is open source.
Tech Stack
- Backend: Motoko canister on ICP
- Frontend: React + Vite (asset canister)
- Token: ICRC-2 compatible (currently test token, deciding on ckUSDC / 1sec USDC / ICP)
- Market Sync: Off-chain worker syncs markets from Polymarket
- Resolution: HTTP outcalls from canister directly to Polymarket API
- Protocol: MCP (Model Context Protocol) for AI agent integration
Architecture
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β Polymarket β β Final Score β β Token Ledger β
β (Market Data) βββββββΆβ Canister ββββββββ (ICRC-2) β
β β β (MCP Server) β β β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β² β
β β MCP Protocol
Off-chain β
Sync Worker ββββββββββΌβββββββββ
(Market Sync) β AI Agents / β
β Users β
βββββββββββββββββββ
Get Involved
- Try the app: vn2t6-yiaaa-aaaai-q4b4q-cai.icp0.io
- Read the code: github.com/jneums/final-score
- Connect your MCP agent:
https://ilyol-uqaaa-aaaai-q34kq-cai.icp0.io/mcp - Questions/ideas? Drop a reply here or open an issue on GitHub
Would love to hear feedback, ideas, or just what breaks when you try it. This is early and Iβm building in the open.