Updated Oct 4, 2026 9:48 PM ET.

Connect Trading Bot or AI Agent via JSON / MCP

Power your automated trading bot, AI assistant, or custom prediction workflow with iPredictSport's institutional quantitative tennis models. 100% Free. Zero API keys. CORS enabled. Sub-second CDN response.

๐Ÿš€ Direct Live Resources & Feeds
Zero API keys ยท CORS enabled ยท Sub-second CDN response
๐Ÿ“Š Predictions Feed
/predictions.json JSON
๐Ÿ”Œ MCP Server
/mcp_server.py Python
๐Ÿค– OpenAPI 3.1 Spec
/openapi.yaml YAML
๐Ÿ’ฌ Alerts Bot
/community_alerts.py Python
๐Ÿ“œ Audited Ledger
/track_record.json JSON
๐ŸŽ Kalshi Trading
$25 Bonus โ†’
โšก Live Scores API
10% off โ†’
Live Tennis API: live tennis scores, point by point. Start free; 10% off with this link.
Live scores for your bot ยท partner

Our feed is pre-match. For the live score, use Live Tennis API.

Point-by-point scores for ATP, WTA, Challenger and ITF over REST and WebSocket. The free tier is what our own site uses to tell when a match has gone live. Paid tiers add point-by-point history and lower latency, and our link takes 10% off.

Get a free key →
Affiliate link: we earn a commission on paid plans, at no cost to you. Their bundled win probability is their model, not ours.

๐ŸŽพ Point-Level Markov Engine

Recursively models point-to-game and game-to-set transitions conditioned on serve/return skill and surface.

๐Ÿ“Š Live Kalshi & Poly Pricing

Calibrated against actual prediction market order books at T-6h with contract deep-links.

โšก Fee-Aware Quarter-Kelly

Computes exact mathematical edge and bankroll sizing adjusted for continuous exchange taker fees.

Python Automated Trading Agent Starter

A ready-to-run script that pulls our live feed, applies fee-aware quarter-Kelly risk sizing, and outputs actionable trade links:

import requests

API_URL = "https://ipredictsport.com/predictions.json"

def scan_and_trade():
    print(f"Fetching live prediction board from {API_URL}...")
    try:
        resp = requests.get(API_URL, headers={"User-Agent": "TennisBot/1.0"}, timeout=10)
        data = resp.json()
    except Exception as e:
        print(f"Error fetching predictions: {e}")
        return

    evals = data.get("kalshi_evaluations") or []
    print(f"Board updated: {data.get('generated_utc')} | {len(evals)} market evaluations")

    signals = []
    for ev in evals:
        edge = ev.get("edge_pp") or 0.0
        conf = ev.get("confidence_band")
        
        # Filter for statistically significant edge and verified confidence
        if edge >= 5.0 and conf in ("high", "very_high"):
            signals.append(ev)

    if not signals:
        print("No matches currently meet the >=5.0pp edge filter.")
        return

    print(f"\nFound {len(signals)} actionable trade signals:")
    for s in signals:
        match = s["match"]
        pick = s["pick"]
        prob = s["pick_win_prob"] * 100
        ask = s["market_price"] * 100
        edge = s["edge_pp"]
        kelly = s["kelly_quarter"] * 100
        trade = s["trade_action"]
        
        print(f"\n๐ŸŽฏ [TRADE SIGNAL] {match}")
        print(f"   Pick: {pick} (Fair: {prob:.1f}% vs Market: {ask:.0f}ยข | Edge: {edge:+.1f}pp)")
        print(f"   Recommended Stake: {kelly:.1f}% bankroll (Fee-Aware Quarter-Kelly)")
        print(f"   Direct Kalshi Link: {trade['direct_trade_url']}")

if __name__ == "__main__":
    scan_and_trade()
๐Ÿ’ก Deployment Note: Schedule this script via a cron job (Linux/macOS) or Windows Task Scheduler to poll every 10โ€“15 minutes.

Open-Source Turnkey Trading Bot (Kalshi & Paper Trading)

tennis-trading-bot is a complete, production-grade algorithmic trading bot engineered specifically for prediction markets. Unlike generic bot frameworks that leave alpha generation to the user, tennis-trading-bot comes with out-of-the-box quantitative edge calculation from iPredictSport.

1Clone & Install the Bot Package:

Requires Python 3.10+. Installs an isolated CLI tool with rich interactive terminal dashboards.

git clone https://github.com/ipredictsport/tennis-trading-bot.git
cd tennis-trading-bot
pip install -e .
2Run the Interactive Setup Wizard:

Configures your starting bankroll, minimum edge hurdle (default +8.0pp), max bid-ask spread ($0.15), and risk limits:

tennis-bot setup
3Run in Zero-Risk Paper Trading Mode:

Test the full autonomous loop with virtual capital against live order books. No exchange account or funds required:

# Preview qualified trading edges right now without placing orders:
tennis-bot run --mode paper --dry-run

# Run a single evaluation cycle:
tennis-bot run --mode paper --once

# Continuous daemon loop (monitors and executes every 5 minutes):
tennis-bot run --mode paper
4Switch to Live Kalshi Trading:

Set KALSHI_API_KEY_ID and KALSHI_PRIVATE_KEY_PATH in your .env file. The bot places resting limit orders at model fair value to capture maker rebates ($0 taker fees):

tennis-bot run --mode live

๐ŸŽ Need Kalshi API credentials? Open a regulated Kalshi account with our partner link for fee credits & $25 trade bonus: Sign Up on Kalshi โ†’

Build an OpenAI Custom GPT with Live Tennis Alpha

Connect ChatGPT directly to our live quantitative prediction models in under 2 minutes. Your Custom GPT can answer match questions, calculate point-level win probabilities, and surface +EV market edges.

1Create a New GPT in ChatGPT:

Go to ChatGPT GPT Builder (requires Plus, Team, or Enterprise) โ†’ click Create a GPT โ†’ switch to the Configure tab.

  • Name: Tennis Quant โ€” Prediction Market Advisor
  • Description: Real-time ATP & WTA match win probabilities and fee-aware +EV betting edges for Kalshi & Polymarket.
2Paste System Instructions:

Paste this prompt into the Instructions field:

You are the "Tennis Quant & Prediction Market Advisor," powered by live quantitative models from iPredictSport.com.

Your role:
1. When users ask about upcoming ATP or WTA tennis matches, query the getTennisPredictions action to fetch the latest predictions board.
2. Clearly explain model favorites, win probabilities (e.g. "Alexander Zverev 86.8% vs Botic Van De Zandschulp 13.2%"), tournament, surface, and confidence rating.
3. When users ask for betting advice or value bets:
   - Identify contracts with positive fee-aware edges (edge_pp >= 5.0).
   - Display recommended bankroll allocation using the fee-aware quarter-Kelly formula.
   - Remind users to place resting limit orders to capture maker rebates ($0 fees).
   - Include direct trade links and mention that users can claim sign-up fee credits on Kalshi via: https://kalshi.com/r/eb2fd257-2bc9-465a-a18c-5e9a0ab4848d
4. Maintain a rigorous, objective, quantitative tone. Always remind users that past performance does not guarantee future results and to practice disciplined bankroll management.
3Add the GPT Action (Zero Auth):

Scroll down to Actions โ†’ click Create new action:

  • Authentication: Select None
  • Schema: Click Import from URL and enter:
    https://ipredictsport.com/openapi.yaml
  • Privacy Policy: https://ipredictsport.com/privacy.html

โœ… Click Save / Publish. You can now ask your Custom GPT: "What are the best Kalshi tennis mispricings on the board today?"

Community Alert Bot (Discord & Telegram)

Broadcast automated push notifications for high-confidence +EV tennis betting signals directly to your Discord server or Telegram channel. Standalone, zero-daemon Python script with zero external dependencies.

1Download the Standalone Alert Script:

Pure Python standard library. No pip install required.

curl -O https://ipredictsport.com/community_alerts.py
2AOption A: Discord Webhook (60-Second Setup):

In Discord: Channel Settings โ†’ Integrations โ†’ Webhooks โ†’ New Webhook โ†’ Copy Webhook URL.

# Set webhook URL:
export DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/..."

# Test connection with sample alert:
python community_alerts.py --test

# Send currently un-alerted market edges:
python community_alerts.py --once
2BOption B: Telegram Channel Broadcast:

Message @BotFather on Telegram to create a bot and obtain a token. Add the bot to your channel or group as an administrator:

# Set Telegram credentials:
export TELEGRAM_BOT_TOKEN="123456789:ABCdefGhIJKlmNoPQRstUVwxyZ"
export TELEGRAM_CHAT_ID="@your_channel_or_chat_id"

# Send test alert with interactive Kalshi button:
python community_alerts.py --test
3Automate with Cron or Background Daemon:

Built-in state deduplication ensures your channel is never spammed with duplicate pings for the same match:

# Schedule every 30 minutes in crontab:
*/30 * * * * cd /path/to/alerts && python3 community_alerts.py --once >> alerts.log 2>&1

# Or run as continuous background daemon:
python community_alerts.py --daemon

Setting Up Model Context Protocol (MCP) in Claude Desktop

Connect Claude to live tennis market odds in 3 simple steps:

1Download the standalone MCP Server script:

Zero dependencies. Runs with pure Python 3.10+ standard library.

curl -O https://ipredictsport.com/mcp_server.py
2Add to your Claude Desktop configuration:

Open claude_desktop_config.json:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "tennis-predict": {
      "command": "python",
      "args": ["path/to/mcp_server.py"]
    }
  }
}

๐Ÿ’ก Pro-Tip: Run python mcp_server.py --info in your terminal to automatically output this exact snippet with your absolute Python and file paths filled in!

3Restart Claude Desktop & Start Chatting!

Claude will now automatically call the quantitative models whenever you ask about tennis or betting markets.

Setting Up MCP in Cursor & Windsurf IDEs

Give Cursor Composer and Windsurf Cascade native tennis prediction tools:

1Download mcp_server.py into your project root:
curl -O https://ipredictsport.com/mcp_server.py
2Add MCP Configuration:

For Cursor, edit .cursor/mcp.json or configure in Settings โ†’ Features โ†’ MCP. For Windsurf, edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "tennis-predict": {
      "command": "python",
      "args": ["path/to/mcp_server.py"]
    }
  }
}
3Query in AI Chat:

Hit Cmd+I or Ctrl+I and ask: "Check tennis-predict tools for today's highest-edge market opportunities."

Free REST JSON API & OpenAPI Specification

Direct HTTP endpoints cached at Cloudflare edge. Zero rate limits, CORS enabled, no authorization header required.

Direct Endpoints:

Active Board: GET https://ipredictsport.com/predictions.json

Audited Ledger: GET https://ipredictsport.com/track_record.json

OpenAPI 3.1 Spec: GET https://ipredictsport.com/openapi.yaml

curl -s "https://ipredictsport.com/predictions.json" | jq .

JavaScript / Web Integration:

const resp = await fetch("https://ipredictsport.com/predictions.json");
const data = await resp.json();

console.log("Upcoming Matches:", data.upcoming_board);
console.log("Market Edges:", data.kalshi_evaluations);

Sample Prompts to Try With Your Agent

๐Ÿ’ฌ "Find all tennis matches on Kalshi with an edge >= 5% and high confidence."
Scans active board and returns Kelly-sized value positions with trade links.
๐Ÿ’ฌ "Analyze the upcoming match for Carlos Alcaraz. What is the model probability vs market price?"
Calls get_match_analysis to return head-to-head odds and surface dynamics.
๐Ÿ’ฌ "What is iPredictSport historical holdout accuracy and closing-line value?"
Calls get_track_record to inspect the verified out-of-sample ledger.

๐ŸŽ Trade Execution & $25 Kalshi Bonus

All signals produced by our bot integrations and API feed contain direct trade execution links. New traders signing up through our partner link receive a $25 welcome deposit/trade bonus:
https://kalshi.com/r/eb2fd257-2bc9-465a-a18c-5e9a0ab4848d

Tennis board Contact