v12-dfs
Server Details
AI-driven DFS lineup optimizer for MLB & NBA — build FanDuel & DraftKings lineups via MCP.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 35 tools
Most tools have distinct purposes, but betting_scan_edges ('prop board ranked by model edge') and betting_best_bets ('scan EVERY main prop market') both look like full prop-board scans, and betting_market / betting_game_lines / betting_game_model overlap on game lines. health_check, health_v12, and slate_health all read as 'check health', and list_contests vs list_live_contests are subtly distinguished. The detailed descriptions do help, but an agent must read them carefully to avoid misselection.
Mostly snake_case with verb_noun (generate_lineups, list_slates, fill_template), but the prefix scheme and word order are inconsistent: betting_*, slate_*, contest_*, health_*, get_slate_players vs list_slates, slate_health vs health_v12. Two 'guide' tools (agent_guide, betting_agent_guide) and get-prefixed aliases (list_presets/'Get Presets') add to the mixed conventions. It's readable but not uniform.
35 tools is heavy for any single server and exceeds the ~15 comfort threshold. While the breadth (DFS lineups + betting model + admin + health) partly justifies volume, there is clear overlap (two prop-scan tools, three health tools, two guide tools, two contest listings) that could be consolidated.
Coverage across DFS lifecycle (slates, players, presets, generate, fill, late_swap, contests, scout, semaforo, postmortem, refresh) and betting workflow (market, analyze, best bets, parlay, sharp, cross_book, log/settle/my bets) is strong, with no obvious dead ends. Minor gaps like append-only bets (no update/delete) and limited user management exist, but core workflows are fully supported.
Available Tools
35 toolsadmin_issue_keyAInspect
Issue Key
Idempotently issue a user's API key and ALWAYS return the paste-able connect block. Returns the email's existing active key (or mints one) so a user keeps a single key across dashboard reloads; with rotate=true, revokes the existing keys and mints a fresh one. Admin-gated — the dashboard's per-user provision route (which verifies the user's Firebase token) calls this server-side, never the browser.
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Example Response:
{
"api_key": "Api Key",
"tier": "Tier",
"limits": {}
}422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: email (required), tier, rotate.
agent_guideAInspect
Agent Guide
Self-serve onboarding: connect any agent (Claude/MCP or REST) to drive the V12 motor, the same engine the dashboard agent uses. No auth. Returns copy-paste MCP + REST config with a PLACEHOLDER key, the endpoint map, and the generate body fields. Operators: issue each user their OWN key via POST /v1/admin/create-key — never share one key.
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Inputs: no named parameters.
betting_agent_guideBInspect
Betting Agent Guide
How any agent uses the MLB betting tools + how to read the output.
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Inputs: no named parameters.
betting_analyze_propCInspect
Analyze Prop
Model a single player's prop vs tonight's FanDuel line -> edge.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: name (required), prop, season, threshold.
betting_best_betsAInspect
Best Bets
THE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/ 2+hits/stolen_base) in one call and returns the top edges across all of them, not just home runs. Power props carry the Savant validation (CONFIRMED power ranked above neutral/noise). Use this for an open 'what's hot / best plays / what do you recommend tonight' so you NEVER conclude off a single-market scan. A SCREEN vs the vig line — validate with CLV; game-side value is separate (betting_sharp / betting_game_model).
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: limit, min_edge.
betting_build_parlayAInspect
Build Parlay
Deterministic parlay analysis for BOTH leg shapes. Body:
{legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the
legacy correlation-aware EV. GAME-side legs (ML / run line / total / team
total / F5, selected by the market field) — the slips users actually
paste — are priced from the CURRENT de-vigged market at that exact market/
line (canonical team resolution), falling back to the market-anchored run
model for totals; per-leg fair prob + edge vs the slip's price, combined
payout / breakeven / fair prob / EV under a documented independence
assumption. Legs sharing a game are flagged correlated=true and get a
correlation_warning INSTEAD of a combined edge. ticket_odds (the slip's
printed combined price) is verified vs the leg product — >2% off flags
ticket_odds_mismatch (the slip was misread; do not trust the numbers).
NEVER estimate a parlay in prose — this endpoint is the math.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: legs (required), ticket_odds.
betting_cross_bookDInspect
Cross Book
Cross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API, no key/WS). LINE_SHOP (the books hang different numbers — take the easier side) and PRICE_SHOP (better price, same line) are CONFIRMED edges, no model needed. Arbitrage is NOT auto-reported (needs over/under sides, which ESPN doesn't label). Overnight only pitcher_strikeouts overlaps; richer markets appear near game time.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: prop.
betting_game_linesAInspect
Game Lines
GAME markets — moneyline / run total / run line for today's MLB games. This answers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toronto' questions that player props CAN'T (V12 used to just refuse them). Optional team filter ('Yankees', 'NYY'). MARKET data from ESPN's public scoreboard, surfaced as-is — V12 has NO game-outcome model, so this is the book's own number, never a fabricated prediction. A book may not have posted a game yet (fields null) — say so, don't invent a line.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: date, team.
betting_game_modelAInspect
Game Model
MODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs the FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged implied mean + 0.25×(structural model − book), and every edge is computed vs the FAIR (de-vigged) probability, never the raw vig price. The structural inputs (season runs/game, opposing STARTER + BULLPEN run factors, park; negative-binomial tails) supply only the tilt. Entries with anchored=false / model_only=true carry edge=null — present them as context, NEVER as value. A SCREEN vs the market, not a lock — validate with CLV. For raw lines on every market use betting_market.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: team (required), date.
betting_log_betAInspect
Log Bet
Record a bet you placed (per user) so we can track P&L + CLV over time. Body: {uid, market, selection, odds (American), stake, line?, prop?, team?, game?, book?}. Append-only — this is the evidence base that PROVES edge.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: uid (required), odds (required), stake (required), market (required), +6 more.
betting_marketAInspect
Market
FULL FanDuel market board for a team's game — EVERY market with real odds + de-vig fair price, so NO market question goes unanswered. Game lines (ML / total / run line), FIRST 5 INNINGS (F5), TEAM TOTALS, NRFI/YRFI, alternate lines, AND the full player-prop menu (HR / 2+ HR / hit / 2+ hits / RBI / 2+ RBI / run / single / double / triple / total bases / stolen base / K). The book's market surfaced as-is (no model). For our model edge on a prop, follow up with betting_analyze_prop.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: team (required), date.
betting_market_moversBInspect
Market Movers
MARKET pattern (not model opinion): how FanDuel lines MOVED today, from the captured snapshots. A line that shortened = money coming in (sharp/news); a drift = money off. This is the 'obvious opportunity' signal — market-confirmed, independent of our unproven model. Needs accumulated capture; thin → thin.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: date, prop, min_move.
betting_matchupAInspect
Matchup
GROUNDING — the real game for a team today: probable pitchers + the POSTED lineup (ACTUAL player names from MLB statsapi) + the market line + the CONTEXT a pro reasons with: home-plate UMPIRE (strike zone → totals/Ks), the INJURY report (who's OUT / Day-To-Day), and BULLPEN health (ERA / blown saves). Call this BEFORE naming any player or discussing a game. Name ONLY the players this returns — never a roster from memory (that is how the agent ends up naming players who aren't on the team).
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: team (required), date.
betting_my_betsCInspect
My Bets
A user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're beating the closing line = real edge (the only durable proof).
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: uid (required).
betting_player_formCInspect
Player Form
Streak / splits / recent form for any player ('racha de X').
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: name (required), season.
betting_scan_edgesCInspect
Scan Edges
Tonight's prop board ranked by model edge (VALUE first).
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: prop, coors, limit, season, +2 more.
betting_settle_betBInspect
Settle Bet
Settle a logged bet. Body: {uid, bet_id, result: won|lost|push, closing_odds?}. closing_odds lets us compute CLV (did you beat the close).
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: uid (required), bet_id (required), result (required), closing_odds.
betting_sharpAInspect
Sharp
SHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's de-vigged line ≈ TRUE probability, so this is the most reliable value signal in the kit, NO model needed: edge_vs_sharp = FD's price minus the sharp's true prob; POSITIVE means FanDuel pays MORE than fair (real value vs the market). Plus total line-shop. Pinnacle only lists UPCOMING games (gone once started).
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: team (required), date.
contest_adviceAInspect
Contest Advice
Advice for a concrete contest name. Resolves the name against the LIVE lobby FIRST so a real live contest is never reported missing (the curated registry is only a subset — that was the "$800 Wed MLB Home Run no existe" bug), then layers registry strategy advice on top when a template matches.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: name (required), sport, platform.
contest_semaforoCInspect
Contest Semaforo
VIP-only: per-contest play/skip verdict from the owner's verified P&L bands + structure gates + rake/fill math. See core/data/contest_semaforo.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: limit, sport, platform.
fill_templateAInspect
Fill Template
Fill a downloaded FanDuel/DK entries-template with already-generated lineups WITHOUT re-running the optimizer — the MCP-callable equivalent of the dashboard's fill_template. Keeps each entry row's leading columns (entry_id, contest_id, fee) and replaces the roster-slot columns with a lineup's upload tokens, cycling lineups if there are more entry rows than lineups.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: lineups (required), template_csv (required), lineup_header.
generate_lineupsCInspect
Generate Lineups
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Example Response:
{
"status": "Status",
"generated_at": "Generated At",
"warnings": [],
"exposures": {},
"lineups": []
}422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: date (required), runs, seed, locks, +28 more.
get_slate_playersDInspect
Get Slate Players Endpoint
Get the V12 player pool for a specific slate ID.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: slate_id (required), limit, compact.
health_checkCInspect
Health
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Example Response:
{
"status": "Status",
"version": "Version",
"timestamp": "Timestamp"
}Inputs: no named parameters.
health_v12AInspect
Health V12
Deep health check for the V12 pipeline. Surfaces:
last nightly regression run (pass/fail + per-slate deltas)
regression baseline metadata
recent preflight blockers (if any cached) No auth required — monitoring endpoint.
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Inputs: no named parameters.
late_swapAInspect
Late Swap Entries
FanDuel NBA late swap: re-solve the OPEN slots of your existing entries; locked players stay in their slot.
Send the FanDuel entries CSV for the slate (after the first tip: the 'Edit entries' download; before lock:
the entries-upload template). A player whose game has started keeps his exact column; every other slot is
re-solved on fresh projections and OUT news with the salary cap and 4-per-team rule over the WHOLE lineup.
Returns the same file with only those cells changed (csv, upload it at FanDuel > Edit entries) and a
per-entry diff. Started slates are hidden by list_slates(playable=true); pass the slate_id from
list_slates(playable=false), or omit it to use the FanDuel fixture id inside the file. NBA FanDuel classic only.
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Example Response:
{
"status": "Status",
"csv": "Csv",
"filename": "Filename",
"slate_id": 1,
"fd_slate_id": "Fd Slate Id",
"date": "Date",
"salary_cap": 1,
"layout": "Layout",
"mode": "Mode",
"lock_buffer_minutes": 1,
"entries_total": 1,
"entries_changed": 1,
"entries_unchanged": 1,
"entries_infeasible": 1,
"per_entry": [
{
"entry_id": "Entry Id",
"contest_id": "Contest Id",
"contest_name": "Contest Name",
"status": "Status",
"reason": "Reason",
"locked": [
{
"col": 1,
"label": "Label",
"player_id": "Player Id",
"name": "Name"
}
],
"swaps": [
{
"col": 1,
"label": "Label",
"in_id": "In Id",
"in_name": "In Name"
}
],
"proj_before": 1.0,
"gain": 1.0
}
],
"started_games": [
"string"
],
"closing_games": [
"string"
],
"open_games": [
"string"
],
"evaluated_at_utc": "Evaluated At Utc",
"solves": 1,
"warnings": [
"string"
],
"note": "Note"
}422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: template_csv (required), date, mode, sport, +5 more.
list_contestsCInspect
Contest Registry
List contest strategy registry entries for agents and the dashboard.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: sport, platform.
list_live_contestsCInspect
Live Contests
Return latest V12 contest context without backend identifiers.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: limit, sport, compact, platform.
list_presetsCInspect
Get Presets
List the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with their configurations. No auth required.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: sport.
list_slatesCInspect
Get Slates
List available V12 slates for today. Returns slate IDs, game counts, and lock times.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: site, limit, sport, compact, +1 more.
run_mlb_postmortemDInspect
Run Mlb Postmortem
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Example Response:
{
"status": "Status",
"generated_at": "Generated At",
"date": "Date",
"game_id": "Game Id",
"entries": 1,
"field_lineups": 1,
"training_rows": 1,
"missing_sources": [
"string"
],
"results": {},
"history_validation": {},
"field": {},
"diagnostics": {},
"simulator_feed": {},
"warnings": [
"string"
]
}422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: date (required), game_id (required), history_csv (required), upload_csvs, +4 more.
scout_fieldBInspect
Scout Field
VIP-only (owner order 8/16): opponent-scouting profiles for the small single-entry band. The owner's $65 table runs the SAME regulars nightly; this returns each regular's fingerprint — days seen, avg score, chalkiness (overlap with field consensus), favorite pitchers/bats and head-to-head vs the owner — built from harvested full fields (brain/scout_profiles.json, refreshed by the local scouting pipeline; packaged snapshot as fallback so the endpoint never 500s on a fresh volume). Same fail-closed allowlist as the semaforo.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: contest, min_days.
slate_diffAInspect
Slate Diff
Compute what changed since a previously-stored snapshot.
Body shape: { "slate_id": 32867, "date": "2026-05-11", "sport": "NBA", "site": "FD", "previous": { "v": "v1", "players": [{"id","name","status","salary","proj"}, ...], "odds": [{"game","ou","spread","home_ml","away_ml"}, ...] } }
Returns a structured diff: which players changed status / salary / projection, which games moved spread or O/U, which players were added or removed from the pool. The thresholds for "changed":
status: any non-empty difference (Q→OUT, ''→OUT, GTD→IN, etc.)
salary: any integer delta
projection: |delta| >= 0.5 fantasy points
odds spread: |delta| >= 0.5
odds ou: |delta| >= 0.5
odds ml: |delta| >= 10 (American odds noise floor)
No auth required — read-only computation off in-memory current snapshot plus the caller-supplied previous one.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: no named parameters.
slate_healthAInspect
Slate Health
Pre-flight diagnostic for a slate. Returns whether odds, projections, matchup, and FD master-session are ready BEFORE the agent invokes /v1/generate.
Either slate_id or date is required. When slate_id is given, the slate metadata is also returned (games list, lock times). When only date is given, the data-pillar checks still run but game coverage cannot be computed (returned as null).
READING THE PROJECTION FRESHNESS (MLB especially): stokastic.age_min is the
age of the cached snapshot FILE, NOT a data-quality signal. For MLB the cache
is refreshed only twice a day, so mid-afternoon it routinely reads several
hours old AND THAT IS FINE — a user-facing generate fetches projections LIVE
(refresh_data=true), and stokastic.generate_fetches_live=true flags this.
A stale age_min with a loaded, populated pool is NOT "projections broken /
aces at 0 / no edge": probable pitchers are set days ahead (non-zero), and
only confirmed BATTING lineups firm up ~1-2h before lock. Do NOT treat a stale
cache age as a blocker or tell the user to wait/re-refresh — check the actual
pool (get_slate_players) for non-zero pitcher projections instead.
BLOCKERS vs WARNINGS: a blocker means generation will not work (slate closed) or the slate has a
PARTIAL odds gap (some games cached, some not). Nothing cached at all is a WARNING, not a blocker:
generate fetches odds/projections live. data_store_ok=false / degraded=true means the cache
store could not be read: degraded service, builds still fetch live, do not report the data as
unavailable and do not tell the user to wait.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: date, site, sport, slate_id, +2 more.
slate_refreshAInspect
Slate Refresh
Re-fetch projections + odds + slate metadata for a date.
Writes to the configured store (Supabase in prod). Returns a summary dict (date, slate_id, n_games, n_players, n_upserted, n_odds, backend).
Auth: requires X-API-Key OR X-Internal-Secret (cron use). This is a write op that costs one Stokastic + one ESPN API call.
Responses:
200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Inputs: date, site, sport.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
DFS lineup optimizer for DraftKings and FanDuel: projections, builds, entries, and late swap.
DFS projections, ownership, optimizers and model picks for NFL, MLB, NBA, NHL, PGA, MMA and more.
Free sports slate and matchup research for AI agents over MCP and REST. Research only; 21+.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides AI-powered sports analytics for Daily Fantasy Sports (DFS) with real-time player projections, lineup optimization, live odds aggregation from multiple sportsbooks, and SHAP-based explainability to understand recommendation reasoning.41MIT
- AlicenseAqualityCmaintenanceEnables querying probable football lineups with per-player start probability and expected fantasy points, match analysis, model picks, and a verified public track record across major European leagues through MCP tools.1759 npmMIT
- AlicenseNot gradedqualityBmaintenanceConnect ESPN & Yahoo fantasy leagues to AI assistants via MCP. Read-only tools for rosters, standings, matchups, free agents, and league info across football and baseball.23MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that turns real NFL & fantasy data into a decisive edge, offering 70+ tools for draft assistance, start/sit recommendations, trade analysis, playoff odds, and more, with live league integration.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.