MCP serverio.github.Jorgeperez0825/v12-dfs
AI-driven DFS lineup optimizer for MLB & NBA — build FanDuel & DraftKings lineups via MCP.
Overview
Score?
UNRATED 0.690
of what a free look can see, on 32 looks
Looks
36
last 1 hr ago
Tools
34
More info
URL
v12dfs-production.up.railway.app/mcp
streamable-http
Says it is
V12 DFS Optimizer 1.0.0
protocol 2025-06-18
In the record since
32 days ago
Among servers18,413 with a card
0median 0.606 · this server 0.690 · highest on record 0.8561
Toolsfrom sha256:02e2892bc3…1c0ec8
| Tool | Schema |
|---|---|
| admin_issue_key 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 a |
input · no output |
| agent_guide 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 |
input · no output |
| betting_agent_guide 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/j |
input · no output |
| betting_analyze_prop 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* |
input · no output |
| betting_best_bets 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. |
input · no output |
| betting_build_parlay 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 |
input · no output |
| betting_cross_book 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 |
input · no output |
| betting_game_lines 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 p |
input · no output |
| betting_game_model 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×(st |
input · no output |
| betting_log_bet 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-o |
input · no output |
| betting_market 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), FI |
input · no output |
| betting_market_movers 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 |
input · no output |
| betting_matchup 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 wit |
input · no output |
| betting_my_bets 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**: Succe |
input · no output |
| betting_player_form Player Form
Streak / splits / recent form for any player ('racha de X').
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**422**: V |
input · no output |
| betting_scan_edges Scan Edges
Tonight's prop board ranked by model edge (VALUE first).
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**422**: Valida |
input · no output |
| betting_settle_bet 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**: Suc |
input · no output |
| betting_sharp 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 |
input · no output |
| contest_advice 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 |
input · no output |
| contest_semaforo 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:
* |
input · no output |
| fill_template 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_t |
input · no output |
| generate_lineups Generate Lineups
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"status": "Status",
"generated |
input · no output |
| get_slate_players 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** |
input · no output |
| health_check Health
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"status": "Status",
"version": "Version" |
input · no output |
| health_v12 Health V12
Deep health check for the V12 pipeline. Surfaces:
- last nightly regression run (pass/fail + per-slate deltas)
- regression baseline metadata
- recent preflight b |
input · no output |
| list_contests Contest Registry
List contest strategy registry entries for agents and the dashboard.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/js |
input · no output |
| list_live_contests Live Contests
Return latest V12 contest context without backend identifiers.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**422* |
input · no output |
| list_presets 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 |
input · no output |
| list_slates Get Slates
List available V12 slates for today. Returns slate IDs, game counts, and lock times.
### Responses:
**200**: Successful Response (Success Response)
Content-Type: appl |
input · no output |
| run_mlb_postmortem Run Mlb Postmortem
### Responses:
**200**: Successful Response (Success Response)
Content-Type: application/json
**Example Response:**
```json
{
"status": "Status",
"generat |
input · no output |
| scout_field 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 regula |
input · no output |
| slate_diff Slate Diff
Compute what changed since a previously-stored snapshot.
Body shape:
{
"slate_id": 32867,
"date": "2026-05-11",
"sport": "NBA",
"site": "FD",
"pr |
input · no output |
| slate_health 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 |
input · no output |
| slate_refresh 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_playe |
input · no output |
Verify it yourself
npx teppi-check https://v12dfs-production.up.railway.app/mcpcurl -s https://api.teppi.xyz/v1/trust/mcp/mcs_01M1FZ2CSKQ906TG2DVQK1WX29