{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_5488qe9syqa3","handle":"v12-dfs","url":"https://wellknown.network/agents/v12-dfs","links":{"self":"https://wellknown.network/agents/v12-dfs/record.json","html":"https://wellknown.network/agents/v12-dfs","markdown":"https://wellknown.network/agents/v12-dfs/record.md","api":"https://wellknown.network/api/v1/agents/v12-dfs","status":"https://wellknown.network/api/v1/agents/v12-dfs/status","claim":"https://wellknown.network/agents/v12-dfs/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/v12-dfs/claim.json","badge":"https://wellknown.network/agents/v12-dfs/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/v12-dfs/history","tools":"https://wellknown.network/api/v1/agents/v12-dfs/tools"},"ard":{"identifier":"urn:air:v12dfs-production.up.railway.app:server:v12-dfs","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"v12-dfs","summary":"AI-driven DFS lineup optimizer for MLB & NBA — build FanDuel & DraftKings lineups via MCP.","description":"AI-driven DFS lineup optimizer for MLB & NBA — build FanDuel & DraftKings lineups via MCP.","publisher":{"name":"Jorgeperez0825","url":null},"homepage":null,"repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://v12dfs-production.up.railway.app/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-06-17T06:17:19.980319Z","publishedAt":"2026-06-17T06:17:19.980319Z","registryName":"io.github.Jorgeperez0825/v12-dfs"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":0.54,"provenance":"derived"},{"slug":"data.database","name":"Databases","confidence":0.525,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.525,"provenance":"derived"},{"slug":"productivity.crm","name":"CRM & Sales","confidence":0.525,"provenance":"derived"},{"slug":"ai.prompting","name":"Prompt Management","confidence":0.525,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"}],"categories":["ai","analytics","content","data","dev","productivity"],"language":"nl"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-10T04:30:54.723Z","lastProbedAt":"2026-10-10T04:30:54.723Z","statusComputedAt":"2026-10-10T04:33:16.762Z","reliability30d":{"probes":110,"successRate":1,"p50Ms":162,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":108,"ok":108,"authBoundaryOk":0,"serviceOk":108,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T04:30:54.723Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":156,"error":null,"detail":{"tools":[{"name":"agent_guide","description":"Agent Guide\n\nSelf-serve onboarding: connect any agent (Claude/MCP or REST) to drive the\nV12 motor, the same engine the dashboard agent uses. No auth. Returns\nco"},{"name":"health_check","description":"Health\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"Status\",\n  "},{"name":"health_v12","description":"Health V12\n\nDeep health check for the V12 pipeline. Surfaces:\n  - last nightly regression run (pass/fail + per-slate deltas)\n  - regression baseline metadata\n  "},{"name":"list_slates","description":"Get Slates\n\nList available V12 slates for today. Returns slate IDs, game counts, and lock times.\n\n### Responses:\n\n**200**: Successful Response (Success Response"},{"name":"get_slate_players","description":"Get Slate Players Endpoint\n\nGet the V12 player pool for a specific slate ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: appl"},{"name":"slate_health","description":"Slate Health\n\nPre-flight diagnostic for a slate. Returns whether odds, projections,\nmatchup, and FD master-session are ready BEFORE the agent invokes\n/v1/genera"},{"name":"slate_refresh","description":"Slate Refresh\n\nRe-fetch projections + odds + slate metadata for a date.\n\nWrites to the configured store (Supabase in prod). Returns a summary\ndict (date, slate_"},{"name":"slate_diff","description":"Slate Diff\n\nCompute what changed since a previously-stored snapshot.\n\nBody shape:\n  {\n    \"slate_id\": 32867,\n    \"date\": \"2026-05-11\",\n    \"sport\": \"NBA\",\n    \""},{"name":"list_presets","description":"Get Presets\n\nList the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with thei"},{"name":"generate_lineups","description":"Generate Lineups\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"S"},{"name":"run_mlb_postmortem","description":"Run Mlb Postmortem\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": "},{"name":"list_contests","description":"Contest Registry\n\nList contest strategy registry entries for agents and the dashboard.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-"},{"name":"list_live_contests","description":"Live Contests\n\nReturn latest V12 contest context without backend identifiers.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"contest_semaforo","description":"Contest Semaforo\n\nVIP-only: per-contest play/skip verdict from the owner's verified P&L\nbands + structure gates + rake/fill math. See core/data/contest_semaforo"},{"name":"scout_field","description":"Scout Field\n\nVIP-only (owner order 8/16): opponent-scouting profiles for the small\nsingle-entry band. The owner's $65 table runs the SAME regulars nightly;\nthis"},{"name":"contest_advice","description":"Contest Advice\n\nAdvice for a concrete contest name. Resolves the name against the LIVE\nlobby FIRST so a real live contest is never reported missing (the curated"},{"name":"fill_template","description":"Fill Template\n\nFill a downloaded FanDuel/DK entries-template with already-generated\nlineups WITHOUT re-running the optimizer — the MCP-callable equivalent of th"},{"name":"admin_issue_key","description":"Issue Key\n\nIdempotently issue a user's API key and ALWAYS return the paste-able\nconnect block. Returns the email's existing active key (or mints one) so a\nuser "},{"name":"betting_agent_guide","description":"Betting Agent Guide\n\nHow any agent uses the MLB betting tools + how to read the output.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent"},{"name":"betting_player_form","description":"Player Form\n\nStreak / splits / recent form for any player ('racha de X').\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: applica"},{"name":"betting_analyze_prop","description":"Analyze Prop\n\nModel a single player's prop vs tonight's FanDuel line -> edge.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"betting_scan_edges","description":"Scan Edges\n\nTonight's prop board ranked by model edge (VALUE first).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/"},{"name":"betting_best_bets","description":"Best Bets\n\nTHE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/\n2+hits/stolen_base) in one call and returns the top edges across all of them,"},{"name":"betting_build_parlay","description":"Build Parlay\n\nDeterministic parlay analysis for BOTH leg shapes. Body:\n{legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the\nlegacy correlation"},{"name":"betting_log_bet","description":"Log Bet\n\nRecord a bet you placed (per user) so we can track P&L + CLV over time.\nBody: {uid, market, selection, odds (American), stake, line?, prop?, team?,\ngam"},{"name":"betting_my_bets","description":"My Bets\n\nA user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're\nbeating the closing line = real edge (the only durable proof).\n\n### Respon"},{"name":"betting_settle_bet","description":"Settle Bet\n\nSettle a logged bet. Body: {uid, bet_id, result: won|lost|push,\nclosing_odds?}. closing_odds lets us compute CLV (did you beat the close).\n\n### Resp"},{"name":"betting_cross_book","description":"Cross Book\n\nCross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API,\nno key/WS). LINE_SHOP (the books hang different numbers — take the easier\n"},{"name":"betting_game_lines","description":"Game Lines\n\nGAME markets — moneyline / run total / run line for today's MLB games. This\nanswers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toron"},{"name":"betting_market","description":"Market\n\nFULL FanDuel market board for a team's game — EVERY market with real odds +\nde-vig fair price, so NO market question goes unanswered. Game lines (ML /\nt"},{"name":"betting_sharp","description":"Sharp\n\nSHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's\nde-vigged line ≈ TRUE probability, so this is the most reliable value signal "},{"name":"betting_game_model","description":"Game Model\n\nMODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs\nthe FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged\nimp"},{"name":"betting_matchup","description":"Matchup\n\nGROUNDING — the real game for a team today: probable pitchers + the POSTED\nlineup (ACTUAL player names from MLB statsapi) + the market line + the CONTE"},{"name":"betting_market_movers","description":"Market Movers\n\nMARKET pattern (not model opinion): how FanDuel lines MOVED today, from the\ncaptured snapshots. A line that shortened = money coming in (sharp/ne"}],"toolCount":34,"toolsHash":"4ea4c3d7535b554756160ace9c3afa8d322d4118a363d34a442135c981473edc","serverName":"V12 DFS Optimizer","capabilities":["experimental","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T21:26:35.976Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":154,"error":null,"detail":{"tools":[{"name":"agent_guide","description":"Agent Guide\n\nSelf-serve onboarding: connect any agent (Claude/MCP or REST) to drive the\nV12 motor, the same engine the dashboard agent uses. No auth. Returns\nco"},{"name":"health_check","description":"Health\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"Status\",\n  "},{"name":"health_v12","description":"Health V12\n\nDeep health check for the V12 pipeline. Surfaces:\n  - last nightly regression run (pass/fail + per-slate deltas)\n  - regression baseline metadata\n  "},{"name":"list_slates","description":"Get Slates\n\nList available V12 slates for today. Returns slate IDs, game counts, and lock times.\n\n### Responses:\n\n**200**: Successful Response (Success Response"},{"name":"get_slate_players","description":"Get Slate Players Endpoint\n\nGet the V12 player pool for a specific slate ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: appl"},{"name":"slate_health","description":"Slate Health\n\nPre-flight diagnostic for a slate. Returns whether odds, projections,\nmatchup, and FD master-session are ready BEFORE the agent invokes\n/v1/genera"},{"name":"slate_refresh","description":"Slate Refresh\n\nRe-fetch projections + odds + slate metadata for a date.\n\nWrites to the configured store (Supabase in prod). Returns a summary\ndict (date, slate_"},{"name":"slate_diff","description":"Slate Diff\n\nCompute what changed since a previously-stored snapshot.\n\nBody shape:\n  {\n    \"slate_id\": 32867,\n    \"date\": \"2026-05-11\",\n    \"sport\": \"NBA\",\n    \""},{"name":"list_presets","description":"Get Presets\n\nList the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with thei"},{"name":"generate_lineups","description":"Generate Lineups\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"S"},{"name":"run_mlb_postmortem","description":"Run Mlb Postmortem\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": "},{"name":"list_contests","description":"Contest Registry\n\nList contest strategy registry entries for agents and the dashboard.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-"},{"name":"list_live_contests","description":"Live Contests\n\nReturn latest V12 contest context without backend identifiers.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"contest_semaforo","description":"Contest Semaforo\n\nVIP-only: per-contest play/skip verdict from the owner's verified P&L\nbands + structure gates + rake/fill math. See core/data/contest_semaforo"},{"name":"scout_field","description":"Scout Field\n\nVIP-only (owner order 8/16): opponent-scouting profiles for the small\nsingle-entry band. The owner's $65 table runs the SAME regulars nightly;\nthis"},{"name":"contest_advice","description":"Contest Advice\n\nAdvice for a concrete contest name. Resolves the name against the LIVE\nlobby FIRST so a real live contest is never reported missing (the curated"},{"name":"fill_template","description":"Fill Template\n\nFill a downloaded FanDuel/DK entries-template with already-generated\nlineups WITHOUT re-running the optimizer — the MCP-callable equivalent of th"},{"name":"admin_issue_key","description":"Issue Key\n\nIdempotently issue a user's API key and ALWAYS return the paste-able\nconnect block. Returns the email's existing active key (or mints one) so a\nuser "},{"name":"betting_agent_guide","description":"Betting Agent Guide\n\nHow any agent uses the MLB betting tools + how to read the output.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent"},{"name":"betting_player_form","description":"Player Form\n\nStreak / splits / recent form for any player ('racha de X').\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: applica"},{"name":"betting_analyze_prop","description":"Analyze Prop\n\nModel a single player's prop vs tonight's FanDuel line -> edge.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"betting_scan_edges","description":"Scan Edges\n\nTonight's prop board ranked by model edge (VALUE first).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/"},{"name":"betting_best_bets","description":"Best Bets\n\nTHE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/\n2+hits/stolen_base) in one call and returns the top edges across all of them,"},{"name":"betting_build_parlay","description":"Build Parlay\n\nDeterministic parlay analysis for BOTH leg shapes. Body:\n{legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the\nlegacy correlation"},{"name":"betting_log_bet","description":"Log Bet\n\nRecord a bet you placed (per user) so we can track P&L + CLV over time.\nBody: {uid, market, selection, odds (American), stake, line?, prop?, team?,\ngam"},{"name":"betting_my_bets","description":"My Bets\n\nA user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're\nbeating the closing line = real edge (the only durable proof).\n\n### Respon"},{"name":"betting_settle_bet","description":"Settle Bet\n\nSettle a logged bet. Body: {uid, bet_id, result: won|lost|push,\nclosing_odds?}. closing_odds lets us compute CLV (did you beat the close).\n\n### Resp"},{"name":"betting_cross_book","description":"Cross Book\n\nCross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API,\nno key/WS). LINE_SHOP (the books hang different numbers — take the easier\n"},{"name":"betting_game_lines","description":"Game Lines\n\nGAME markets — moneyline / run total / run line for today's MLB games. This\nanswers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toron"},{"name":"betting_market","description":"Market\n\nFULL FanDuel market board for a team's game — EVERY market with real odds +\nde-vig fair price, so NO market question goes unanswered. Game lines (ML /\nt"},{"name":"betting_sharp","description":"Sharp\n\nSHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's\nde-vigged line ≈ TRUE probability, so this is the most reliable value signal "},{"name":"betting_game_model","description":"Game Model\n\nMODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs\nthe FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged\nimp"},{"name":"betting_matchup","description":"Matchup\n\nGROUNDING — the real game for a team today: probable pitchers + the POSTED\nlineup (ACTUAL player names from MLB statsapi) + the market line + the CONTE"},{"name":"betting_market_movers","description":"Market Movers\n\nMARKET pattern (not model opinion): how FanDuel lines MOVED today, from the\ncaptured snapshots. A line that shortened = money coming in (sharp/ne"}],"toolCount":34,"toolsHash":"4ea4c3d7535b554756160ace9c3afa8d322d4118a363d34a442135c981473edc","serverName":"V12 DFS Optimizer","capabilities":["experimental","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T15:33:05.753Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":154,"error":null,"detail":{"tools":[{"name":"agent_guide","description":"Agent Guide\n\nSelf-serve onboarding: connect any agent (Claude/MCP or REST) to drive the\nV12 motor, the same engine the dashboard agent uses. No auth. Returns\nco"},{"name":"health_check","description":"Health\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"Status\",\n  "},{"name":"health_v12","description":"Health V12\n\nDeep health check for the V12 pipeline. Surfaces:\n  - last nightly regression run (pass/fail + per-slate deltas)\n  - regression baseline metadata\n  "},{"name":"list_slates","description":"Get Slates\n\nList available V12 slates for today. Returns slate IDs, game counts, and lock times.\n\n### Responses:\n\n**200**: Successful Response (Success Response"},{"name":"get_slate_players","description":"Get Slate Players Endpoint\n\nGet the V12 player pool for a specific slate ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: appl"},{"name":"slate_health","description":"Slate Health\n\nPre-flight diagnostic for a slate. Returns whether odds, projections,\nmatchup, and FD master-session are ready BEFORE the agent invokes\n/v1/genera"},{"name":"slate_refresh","description":"Slate Refresh\n\nRe-fetch projections + odds + slate metadata for a date.\n\nWrites to the configured store (Supabase in prod). Returns a summary\ndict (date, slate_"},{"name":"slate_diff","description":"Slate Diff\n\nCompute what changed since a previously-stored snapshot.\n\nBody shape:\n  {\n    \"slate_id\": 32867,\n    \"date\": \"2026-05-11\",\n    \"sport\": \"NBA\",\n    \""},{"name":"list_presets","description":"Get Presets\n\nList the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with thei"},{"name":"generate_lineups","description":"Generate Lineups\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"S"},{"name":"run_mlb_postmortem","description":"Run Mlb Postmortem\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": "},{"name":"list_contests","description":"Contest Registry\n\nList contest strategy registry entries for agents and the dashboard.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-"},{"name":"list_live_contests","description":"Live Contests\n\nReturn latest V12 contest context without backend identifiers.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"contest_semaforo","description":"Contest Semaforo\n\nVIP-only: per-contest play/skip verdict from the owner's verified P&L\nbands + structure gates + rake/fill math. See core/data/contest_semaforo"},{"name":"scout_field","description":"Scout Field\n\nVIP-only (owner order 8/16): opponent-scouting profiles for the small\nsingle-entry band. The owner's $65 table runs the SAME regulars nightly;\nthis"},{"name":"contest_advice","description":"Contest Advice\n\nAdvice for a concrete contest name. Resolves the name against the LIVE\nlobby FIRST so a real live contest is never reported missing (the curated"},{"name":"fill_template","description":"Fill Template\n\nFill a downloaded FanDuel/DK entries-template with already-generated\nlineups WITHOUT re-running the optimizer — the MCP-callable equivalent of th"},{"name":"admin_issue_key","description":"Issue Key\n\nIdempotently issue a user's API key and ALWAYS return the paste-able\nconnect block. Returns the email's existing active key (or mints one) so a\nuser "},{"name":"betting_agent_guide","description":"Betting Agent Guide\n\nHow any agent uses the MLB betting tools + how to read the output.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent"},{"name":"betting_player_form","description":"Player Form\n\nStreak / splits / recent form for any player ('racha de X').\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: applica"},{"name":"betting_analyze_prop","description":"Analyze Prop\n\nModel a single player's prop vs tonight's FanDuel line -> edge.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"betting_scan_edges","description":"Scan Edges\n\nTonight's prop board ranked by model edge (VALUE first).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/"},{"name":"betting_best_bets","description":"Best Bets\n\nTHE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/\n2+hits/stolen_base) in one call and returns the top edges across all of them,"},{"name":"betting_build_parlay","description":"Build Parlay\n\nDeterministic parlay analysis for BOTH leg shapes. Body:\n{legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the\nlegacy correlation"},{"name":"betting_log_bet","description":"Log Bet\n\nRecord a bet you placed (per user) so we can track P&L + CLV over time.\nBody: {uid, market, selection, odds (American), stake, line?, prop?, team?,\ngam"},{"name":"betting_my_bets","description":"My Bets\n\nA user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're\nbeating the closing line = real edge (the only durable proof).\n\n### Respon"},{"name":"betting_settle_bet","description":"Settle Bet\n\nSettle a logged bet. Body: {uid, bet_id, result: won|lost|push,\nclosing_odds?}. closing_odds lets us compute CLV (did you beat the close).\n\n### Resp"},{"name":"betting_cross_book","description":"Cross Book\n\nCross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API,\nno key/WS). LINE_SHOP (the books hang different numbers — take the easier\n"},{"name":"betting_game_lines","description":"Game Lines\n\nGAME markets — moneyline / run total / run line for today's MLB games. This\nanswers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toron"},{"name":"betting_market","description":"Market\n\nFULL FanDuel market board for a team's game — EVERY market with real odds +\nde-vig fair price, so NO market question goes unanswered. Game lines (ML /\nt"},{"name":"betting_sharp","description":"Sharp\n\nSHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's\nde-vigged line ≈ TRUE probability, so this is the most reliable value signal "},{"name":"betting_game_model","description":"Game Model\n\nMODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs\nthe FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged\nimp"},{"name":"betting_matchup","description":"Matchup\n\nGROUNDING — the real game for a team today: probable pitchers + the POSTED\nlineup (ACTUAL player names from MLB statsapi) + the market line + the CONTE"},{"name":"betting_market_movers","description":"Market Movers\n\nMARKET pattern (not model opinion): how FanDuel lines MOVED today, from the\ncaptured snapshots. A line that shortened = money coming in (sharp/ne"}],"toolCount":34,"toolsHash":"4ea4c3d7535b554756160ace9c3afa8d322d4118a363d34a442135c981473edc","serverName":"V12 DFS Optimizer","capabilities":["experimental","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T09:26:40.878Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":155,"error":null,"detail":{"tools":[{"name":"agent_guide","description":"Agent Guide\n\nSelf-serve onboarding: connect any agent (Claude/MCP or REST) to drive the\nV12 motor, the same engine the dashboard agent uses. No auth. Returns\nco"},{"name":"health_check","description":"Health\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"Status\",\n  "},{"name":"health_v12","description":"Health V12\n\nDeep health check for the V12 pipeline. Surfaces:\n  - last nightly regression run (pass/fail + per-slate deltas)\n  - regression baseline metadata\n  "},{"name":"list_slates","description":"Get Slates\n\nList available V12 slates for today. Returns slate IDs, game counts, and lock times.\n\n### Responses:\n\n**200**: Successful Response (Success Response"},{"name":"get_slate_players","description":"Get Slate Players Endpoint\n\nGet the V12 player pool for a specific slate ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: appl"},{"name":"slate_health","description":"Slate Health\n\nPre-flight diagnostic for a slate. Returns whether odds, projections,\nmatchup, and FD master-session are ready BEFORE the agent invokes\n/v1/genera"},{"name":"slate_refresh","description":"Slate Refresh\n\nRe-fetch projections + odds + slate metadata for a date.\n\nWrites to the configured store (Supabase in prod). Returns a summary\ndict (date, slate_"},{"name":"slate_diff","description":"Slate Diff\n\nCompute what changed since a previously-stored snapshot.\n\nBody shape:\n  {\n    \"slate_id\": 32867,\n    \"date\": \"2026-05-11\",\n    \"sport\": \"NBA\",\n    \""},{"name":"list_presets","description":"Get Presets\n\nList the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with thei"},{"name":"generate_lineups","description":"Generate Lineups\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"S"},{"name":"run_mlb_postmortem","description":"Run Mlb Postmortem\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": "},{"name":"list_contests","description":"Contest Registry\n\nList contest strategy registry entries for agents and the dashboard.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-"},{"name":"list_live_contests","description":"Live Contests\n\nReturn latest V12 contest context without backend identifiers.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"contest_semaforo","description":"Contest Semaforo\n\nVIP-only: per-contest play/skip verdict from the owner's verified P&L\nbands + structure gates + rake/fill math. See core/data/contest_semaforo"},{"name":"scout_field","description":"Scout Field\n\nVIP-only (owner order 8/16): opponent-scouting profiles for the small\nsingle-entry band. The owner's $65 table runs the SAME regulars nightly;\nthis"},{"name":"contest_advice","description":"Contest Advice\n\nAdvice for a concrete contest name. Resolves the name against the LIVE\nlobby FIRST so a real live contest is never reported missing (the curated"},{"name":"fill_template","description":"Fill Template\n\nFill a downloaded FanDuel/DK entries-template with already-generated\nlineups WITHOUT re-running the optimizer — the MCP-callable equivalent of th"},{"name":"admin_issue_key","description":"Issue Key\n\nIdempotently issue a user's API key and ALWAYS return the paste-able\nconnect block. Returns the email's existing active key (or mints one) so a\nuser "},{"name":"betting_agent_guide","description":"Betting Agent Guide\n\nHow any agent uses the MLB betting tools + how to read the output.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent"},{"name":"betting_player_form","description":"Player Form\n\nStreak / splits / recent form for any player ('racha de X').\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: applica"},{"name":"betting_analyze_prop","description":"Analyze Prop\n\nModel a single player's prop vs tonight's FanDuel line -> edge.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"betting_scan_edges","description":"Scan Edges\n\nTonight's prop board ranked by model edge (VALUE first).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/"},{"name":"betting_best_bets","description":"Best Bets\n\nTHE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/\n2+hits/stolen_base) in one call and returns the top edges across all of them,"},{"name":"betting_build_parlay","description":"Build Parlay\n\nDeterministic parlay analysis for BOTH leg shapes. Body:\n{legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the\nlegacy correlation"},{"name":"betting_log_bet","description":"Log Bet\n\nRecord a bet you placed (per user) so we can track P&L + CLV over time.\nBody: {uid, market, selection, odds (American), stake, line?, prop?, team?,\ngam"},{"name":"betting_my_bets","description":"My Bets\n\nA user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're\nbeating the closing line = real edge (the only durable proof).\n\n### Respon"},{"name":"betting_settle_bet","description":"Settle Bet\n\nSettle a logged bet. Body: {uid, bet_id, result: won|lost|push,\nclosing_odds?}. closing_odds lets us compute CLV (did you beat the close).\n\n### Resp"},{"name":"betting_cross_book","description":"Cross Book\n\nCross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API,\nno key/WS). LINE_SHOP (the books hang different numbers — take the easier\n"},{"name":"betting_game_lines","description":"Game Lines\n\nGAME markets — moneyline / run total / run line for today's MLB games. This\nanswers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toron"},{"name":"betting_market","description":"Market\n\nFULL FanDuel market board for a team's game — EVERY market with real odds +\nde-vig fair price, so NO market question goes unanswered. Game lines (ML /\nt"},{"name":"betting_sharp","description":"Sharp\n\nSHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's\nde-vigged line ≈ TRUE probability, so this is the most reliable value signal "},{"name":"betting_game_model","description":"Game Model\n\nMODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs\nthe FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged\nimp"},{"name":"betting_matchup","description":"Matchup\n\nGROUNDING — the real game for a team today: probable pitchers + the POSTED\nlineup (ACTUAL player names from MLB statsapi) + the market line + the CONTE"},{"name":"betting_market_movers","description":"Market Movers\n\nMARKET pattern (not model opinion): how FanDuel lines MOVED today, from the\ncaptured snapshots. A line that shortened = money coming in (sharp/ne"}],"toolCount":34,"toolsHash":"4ea4c3d7535b554756160ace9c3afa8d322d4118a363d34a442135c981473edc","serverName":"V12 DFS Optimizer","capabilities":["experimental","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T02:25:57.912Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":155,"error":null,"detail":{"tools":[{"name":"agent_guide","description":"Agent Guide\n\nSelf-serve onboarding: connect any agent (Claude/MCP or REST) to drive the\nV12 motor, the same engine the dashboard agent uses. No auth. Returns\nco"},{"name":"health_check","description":"Health\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"Status\",\n  "},{"name":"health_v12","description":"Health V12\n\nDeep health check for the V12 pipeline. Surfaces:\n  - last nightly regression run (pass/fail + per-slate deltas)\n  - regression baseline metadata\n  "},{"name":"list_slates","description":"Get Slates\n\nList available V12 slates for today. Returns slate IDs, game counts, and lock times.\n\n### Responses:\n\n**200**: Successful Response (Success Response"},{"name":"get_slate_players","description":"Get Slate Players Endpoint\n\nGet the V12 player pool for a specific slate ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: appl"},{"name":"slate_health","description":"Slate Health\n\nPre-flight diagnostic for a slate. Returns whether odds, projections,\nmatchup, and FD master-session are ready BEFORE the agent invokes\n/v1/genera"},{"name":"slate_refresh","description":"Slate Refresh\n\nRe-fetch projections + odds + slate metadata for a date.\n\nWrites to the configured store (Supabase in prod). Returns a summary\ndict (date, slate_"},{"name":"slate_diff","description":"Slate Diff\n\nCompute what changed since a previously-stored snapshot.\n\nBody shape:\n  {\n    \"slate_id\": 32867,\n    \"date\": \"2026-05-11\",\n    \"sport\": \"NBA\",\n    \""},{"name":"list_presets","description":"Get Presets\n\nList the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with thei"},{"name":"generate_lineups","description":"Generate Lineups\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"S"},{"name":"run_mlb_postmortem","description":"Run Mlb Postmortem\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": "},{"name":"list_contests","description":"Contest Registry\n\nList contest strategy registry entries for agents and the dashboard.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-"},{"name":"list_live_contests","description":"Live Contests\n\nReturn latest V12 contest context without backend identifiers.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"contest_semaforo","description":"Contest Semaforo\n\nVIP-only: per-contest play/skip verdict from the owner's verified P&L\nbands + structure gates + rake/fill math. See core/data/contest_semaforo"},{"name":"scout_field","description":"Scout Field\n\nVIP-only (owner order 8/16): opponent-scouting profiles for the small\nsingle-entry band. The owner's $65 table runs the SAME regulars nightly;\nthis"},{"name":"contest_advice","description":"Contest Advice\n\nAdvice for a concrete contest name. Resolves the name against the LIVE\nlobby FIRST so a real live contest is never reported missing (the curated"},{"name":"fill_template","description":"Fill Template\n\nFill a downloaded FanDuel/DK entries-template with already-generated\nlineups WITHOUT re-running the optimizer — the MCP-callable equivalent of th"},{"name":"admin_issue_key","description":"Issue Key\n\nIdempotently issue a user's API key and ALWAYS return the paste-able\nconnect block. Returns the email's existing active key (or mints one) so a\nuser "},{"name":"betting_agent_guide","description":"Betting Agent Guide\n\nHow any agent uses the MLB betting tools + how to read the output.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent"},{"name":"betting_player_form","description":"Player Form\n\nStreak / splits / recent form for any player ('racha de X').\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: applica"},{"name":"betting_analyze_prop","description":"Analyze Prop\n\nModel a single player's prop vs tonight's FanDuel line -> edge.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"betting_scan_edges","description":"Scan Edges\n\nTonight's prop board ranked by model edge (VALUE first).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/"},{"name":"betting_best_bets","description":"Best Bets\n\nTHE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/\n2+hits/stolen_base) in one call and returns the top edges across all of them,"},{"name":"betting_build_parlay","description":"Build Parlay\n\nDeterministic parlay analysis for BOTH leg shapes. Body:\n{legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the\nlegacy correlation"},{"name":"betting_log_bet","description":"Log Bet\n\nRecord a bet you placed (per user) so we can track P&L + CLV over time.\nBody: {uid, market, selection, odds (American), stake, line?, prop?, team?,\ngam"},{"name":"betting_my_bets","description":"My Bets\n\nA user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're\nbeating the closing line = real edge (the only durable proof).\n\n### Respon"},{"name":"betting_settle_bet","description":"Settle Bet\n\nSettle a logged bet. Body: {uid, bet_id, result: won|lost|push,\nclosing_odds?}. closing_odds lets us compute CLV (did you beat the close).\n\n### Resp"},{"name":"betting_cross_book","description":"Cross Book\n\nCross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API,\nno key/WS). LINE_SHOP (the books hang different numbers — take the easier\n"},{"name":"betting_game_lines","description":"Game Lines\n\nGAME markets — moneyline / run total / run line for today's MLB games. This\nanswers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toron"},{"name":"betting_market","description":"Market\n\nFULL FanDuel market board for a team's game — EVERY market with real odds +\nde-vig fair price, so NO market question goes unanswered. Game lines (ML /\nt"},{"name":"betting_sharp","description":"Sharp\n\nSHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's\nde-vigged line ≈ TRUE probability, so this is the most reliable value signal "},{"name":"betting_game_model","description":"Game Model\n\nMODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs\nthe FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged\nimp"},{"name":"betting_matchup","description":"Matchup\n\nGROUNDING — the real game for a team today: probable pitchers + the POSTED\nlineup (ACTUAL player names from MLB statsapi) + the market line + the CONTE"},{"name":"betting_market_movers","description":"Market Movers\n\nMARKET pattern (not model opinion): how FanDuel lines MOVED today, from the\ncaptured snapshots. A line that shortened = money coming in (sharp/ne"}],"toolCount":34,"toolsHash":"4ea4c3d7535b554756160ace9c3afa8d322d4118a363d34a442135c981473edc","serverName":"V12 DFS Optimizer","capabilities":["experimental","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T19:22:55.044Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":155,"error":null,"detail":{"tools":[{"name":"agent_guide","description":"Agent Guide\n\nSelf-serve onboarding: connect any agent (Claude/MCP or REST) to drive the\nV12 motor, the same engine the dashboard agent uses. No auth. Returns\nco"},{"name":"health_check","description":"Health\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"Status\",\n  "},{"name":"health_v12","description":"Health V12\n\nDeep health check for the V12 pipeline. Surfaces:\n  - last nightly regression run (pass/fail + per-slate deltas)\n  - regression baseline metadata\n  "},{"name":"list_slates","description":"Get Slates\n\nList available V12 slates for today. Returns slate IDs, game counts, and lock times.\n\n### Responses:\n\n**200**: Successful Response (Success Response"},{"name":"get_slate_players","description":"Get Slate Players Endpoint\n\nGet the V12 player pool for a specific slate ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: appl"},{"name":"slate_health","description":"Slate Health\n\nPre-flight diagnostic for a slate. Returns whether odds, projections,\nmatchup, and FD master-session are ready BEFORE the agent invokes\n/v1/genera"},{"name":"slate_refresh","description":"Slate Refresh\n\nRe-fetch projections + odds + slate metadata for a date.\n\nWrites to the configured store (Supabase in prod). Returns a summary\ndict (date, slate_"},{"name":"slate_diff","description":"Slate Diff\n\nCompute what changed since a previously-stored snapshot.\n\nBody shape:\n  {\n    \"slate_id\": 32867,\n    \"date\": \"2026-05-11\",\n    \"sport\": \"NBA\",\n    \""},{"name":"list_presets","description":"Get Presets\n\nList the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with thei"},{"name":"generate_lineups","description":"Generate Lineups\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"S"},{"name":"run_mlb_postmortem","description":"Run Mlb Postmortem\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": "},{"name":"list_contests","description":"Contest Registry\n\nList contest strategy registry entries for agents and the dashboard.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-"},{"name":"list_live_contests","description":"Live Contests\n\nReturn latest V12 contest context without backend identifiers.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"contest_semaforo","description":"Contest Semaforo\n\nVIP-only: per-contest play/skip verdict from the owner's verified P&L\nbands + structure gates + rake/fill math. See core/data/contest_semaforo"},{"name":"scout_field","description":"Scout Field\n\nVIP-only (owner order 8/16): opponent-scouting profiles for the small\nsingle-entry band. The owner's $65 table runs the SAME regulars nightly;\nthis"},{"name":"contest_advice","description":"Contest Advice\n\nAdvice for a concrete contest name. Resolves the name against the LIVE\nlobby FIRST so a real live contest is never reported missing (the curated"},{"name":"fill_template","description":"Fill Template\n\nFill a downloaded FanDuel/DK entries-template with already-generated\nlineups WITHOUT re-running the optimizer — the MCP-callable equivalent of th"},{"name":"admin_issue_key","description":"Issue Key\n\nIdempotently issue a user's API key and ALWAYS return the paste-able\nconnect block. Returns the email's existing active key (or mints one) so a\nuser "},{"name":"betting_agent_guide","description":"Betting Agent Guide\n\nHow any agent uses the MLB betting tools + how to read the output.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent"},{"name":"betting_player_form","description":"Player Form\n\nStreak / splits / recent form for any player ('racha de X').\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: applica"},{"name":"betting_analyze_prop","description":"Analyze Prop\n\nModel a single player's prop vs tonight's FanDuel line -> edge.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"betting_scan_edges","description":"Scan Edges\n\nTonight's prop board ranked by model edge (VALUE first).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/"},{"name":"betting_best_bets","description":"Best Bets\n\nTHE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/\n2+hits/stolen_base) in one call and returns the top edges across all of them,"},{"name":"betting_build_parlay","description":"Build Parlay\n\nDeterministic parlay analysis for BOTH leg shapes. Body:\n{legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the\nlegacy correlation"},{"name":"betting_log_bet","description":"Log Bet\n\nRecord a bet you placed (per user) so we can track P&L + CLV over time.\nBody: {uid, market, selection, odds (American), stake, line?, prop?, team?,\ngam"},{"name":"betting_my_bets","description":"My Bets\n\nA user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're\nbeating the closing line = real edge (the only durable proof).\n\n### Respon"},{"name":"betting_settle_bet","description":"Settle Bet\n\nSettle a logged bet. Body: {uid, bet_id, result: won|lost|push,\nclosing_odds?}. closing_odds lets us compute CLV (did you beat the close).\n\n### Resp"},{"name":"betting_cross_book","description":"Cross Book\n\nCross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API,\nno key/WS). LINE_SHOP (the books hang different numbers — take the easier\n"},{"name":"betting_game_lines","description":"Game Lines\n\nGAME markets — moneyline / run total / run line for today's MLB games. This\nanswers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toron"},{"name":"betting_market","description":"Market\n\nFULL FanDuel market board for a team's game — EVERY market with real odds +\nde-vig fair price, so NO market question goes unanswered. Game lines (ML /\nt"},{"name":"betting_sharp","description":"Sharp\n\nSHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's\nde-vigged line ≈ TRUE probability, so this is the most reliable value signal "},{"name":"betting_game_model","description":"Game Model\n\nMODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs\nthe FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged\nimp"},{"name":"betting_matchup","description":"Matchup\n\nGROUNDING — the real game for a team today: probable pitchers + the POSTED\nlineup (ACTUAL player names from MLB statsapi) + the market line + the CONTE"},{"name":"betting_market_movers","description":"Market Movers\n\nMARKET pattern (not model opinion): how FanDuel lines MOVED today, from the\ncaptured snapshots. A line that shortened = money coming in (sharp/ne"}],"toolCount":34,"toolsHash":"4ea4c3d7535b554756160ace9c3afa8d322d4118a363d34a442135c981473edc","serverName":"V12 DFS Optimizer","capabilities":["experimental","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T12:26:31.815Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":160,"error":null,"detail":{"tools":[{"name":"agent_guide","description":"Agent Guide\n\nSelf-serve onboarding: connect any agent (Claude/MCP or REST) to drive the\nV12 motor, the same engine the dashboard agent uses. No auth. Returns\nco"},{"name":"health_check","description":"Health\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"Status\",\n  "},{"name":"health_v12","description":"Health V12\n\nDeep health check for the V12 pipeline. Surfaces:\n  - last nightly regression run (pass/fail + per-slate deltas)\n  - regression baseline metadata\n  "},{"name":"list_slates","description":"Get Slates\n\nList available V12 slates for today. Returns slate IDs, game counts, and lock times.\n\n### Responses:\n\n**200**: Successful Response (Success Response"},{"name":"get_slate_players","description":"Get Slate Players Endpoint\n\nGet the V12 player pool for a specific slate ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: appl"},{"name":"slate_health","description":"Slate Health\n\nPre-flight diagnostic for a slate. Returns whether odds, projections,\nmatchup, and FD master-session are ready BEFORE the agent invokes\n/v1/genera"},{"name":"slate_refresh","description":"Slate Refresh\n\nRe-fetch projections + odds + slate metadata for a date.\n\nWrites to the configured store (Supabase in prod). Returns a summary\ndict (date, slate_"},{"name":"slate_diff","description":"Slate Diff\n\nCompute what changed since a previously-stored snapshot.\n\nBody shape:\n  {\n    \"slate_id\": 32867,\n    \"date\": \"2026-05-11\",\n    \"sport\": \"NBA\",\n    \""},{"name":"list_presets","description":"Get Presets\n\nList the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with thei"},{"name":"generate_lineups","description":"Generate Lineups\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"S"},{"name":"run_mlb_postmortem","description":"Run Mlb Postmortem\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": "},{"name":"list_contests","description":"Contest Registry\n\nList contest strategy registry entries for agents and the dashboard.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-"},{"name":"list_live_contests","description":"Live Contests\n\nReturn latest V12 contest context without backend identifiers.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"contest_semaforo","description":"Contest Semaforo\n\nVIP-only: per-contest play/skip verdict from the owner's verified P&L\nbands + structure gates + rake/fill math. See core/data/contest_semaforo"},{"name":"scout_field","description":"Scout Field\n\nVIP-only (owner order 8/16): opponent-scouting profiles for the small\nsingle-entry band. The owner's $65 table runs the SAME regulars nightly;\nthis"},{"name":"contest_advice","description":"Contest Advice\n\nAdvice for a concrete contest name. Resolves the name against the LIVE\nlobby FIRST so a real live contest is never reported missing (the curated"},{"name":"fill_template","description":"Fill Template\n\nFill a downloaded FanDuel/DK entries-template with already-generated\nlineups WITHOUT re-running the optimizer — the MCP-callable equivalent of th"},{"name":"admin_issue_key","description":"Issue Key\n\nIdempotently issue a user's API key and ALWAYS return the paste-able\nconnect block. Returns the email's existing active key (or mints one) so a\nuser "},{"name":"betting_agent_guide","description":"Betting Agent Guide\n\nHow any agent uses the MLB betting tools + how to read the output.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent"},{"name":"betting_player_form","description":"Player Form\n\nStreak / splits / recent form for any player ('racha de X').\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: applica"},{"name":"betting_analyze_prop","description":"Analyze Prop\n\nModel a single player's prop vs tonight's FanDuel line -> edge.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"betting_scan_edges","description":"Scan Edges\n\nTonight's prop board ranked by model edge (VALUE first).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/"},{"name":"betting_best_bets","description":"Best Bets\n\nTHE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/\n2+hits/stolen_base) in one call and returns the top edges across all of them,"},{"name":"betting_build_parlay","description":"Build Parlay\n\nDeterministic parlay analysis for BOTH leg shapes. Body:\n{legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the\nlegacy correlation"},{"name":"betting_log_bet","description":"Log Bet\n\nRecord a bet you placed (per user) so we can track P&L + CLV over time.\nBody: {uid, market, selection, odds (American), stake, line?, prop?, team?,\ngam"},{"name":"betting_my_bets","description":"My Bets\n\nA user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're\nbeating the closing line = real edge (the only durable proof).\n\n### Respon"},{"name":"betting_settle_bet","description":"Settle Bet\n\nSettle a logged bet. Body: {uid, bet_id, result: won|lost|push,\nclosing_odds?}. closing_odds lets us compute CLV (did you beat the close).\n\n### Resp"},{"name":"betting_cross_book","description":"Cross Book\n\nCross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API,\nno key/WS). LINE_SHOP (the books hang different numbers — take the easier\n"},{"name":"betting_game_lines","description":"Game Lines\n\nGAME markets — moneyline / run total / run line for today's MLB games. This\nanswers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toron"},{"name":"betting_market","description":"Market\n\nFULL FanDuel market board for a team's game — EVERY market with real odds +\nde-vig fair price, so NO market question goes unanswered. Game lines (ML /\nt"},{"name":"betting_sharp","description":"Sharp\n\nSHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's\nde-vigged line ≈ TRUE probability, so this is the most reliable value signal "},{"name":"betting_game_model","description":"Game Model\n\nMODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs\nthe FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged\nimp"},{"name":"betting_matchup","description":"Matchup\n\nGROUNDING — the real game for a team today: probable pitchers + the POSTED\nlineup (ACTUAL player names from MLB statsapi) + the market line + the CONTE"},{"name":"betting_market_movers","description":"Market Movers\n\nMARKET pattern (not model opinion): how FanDuel lines MOVED today, from the\ncaptured snapshots. A line that shortened = money coming in (sharp/ne"}],"toolCount":34,"toolsHash":"4ea4c3d7535b554756160ace9c3afa8d322d4118a363d34a442135c981473edc","serverName":"V12 DFS Optimizer","capabilities":["experimental","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T06:23:33.865Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":156,"error":null,"detail":{"tools":[{"name":"agent_guide","description":"Agent Guide\n\nSelf-serve onboarding: connect any agent (Claude/MCP or REST) to drive the\nV12 motor, the same engine the dashboard agent uses. No auth. Returns\nco"},{"name":"health_check","description":"Health\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"Status\",\n  "},{"name":"health_v12","description":"Health V12\n\nDeep health check for the V12 pipeline. Surfaces:\n  - last nightly regression run (pass/fail + per-slate deltas)\n  - regression baseline metadata\n  "},{"name":"list_slates","description":"Get Slates\n\nList available V12 slates for today. Returns slate IDs, game counts, and lock times.\n\n### Responses:\n\n**200**: Successful Response (Success Response"},{"name":"get_slate_players","description":"Get Slate Players Endpoint\n\nGet the V12 player pool for a specific slate ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: appl"},{"name":"slate_health","description":"Slate Health\n\nPre-flight diagnostic for a slate. Returns whether odds, projections,\nmatchup, and FD master-session are ready BEFORE the agent invokes\n/v1/genera"},{"name":"slate_refresh","description":"Slate Refresh\n\nRe-fetch projections + odds + slate metadata for a date.\n\nWrites to the configured store (Supabase in prod). Returns a summary\ndict (date, slate_"},{"name":"slate_diff","description":"Slate Diff\n\nCompute what changed since a previously-stored snapshot.\n\nBody shape:\n  {\n    \"slate_id\": 32867,\n    \"date\": \"2026-05-11\",\n    \"sport\": \"NBA\",\n    \""},{"name":"list_presets","description":"Get Presets\n\nList the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with thei"},{"name":"generate_lineups","description":"Generate Lineups\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"S"},{"name":"run_mlb_postmortem","description":"Run Mlb Postmortem\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": "},{"name":"list_contests","description":"Contest Registry\n\nList contest strategy registry entries for agents and the dashboard.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-"},{"name":"list_live_contests","description":"Live Contests\n\nReturn latest V12 contest context without backend identifiers.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"contest_semaforo","description":"Contest Semaforo\n\nVIP-only: per-contest play/skip verdict from the owner's verified P&L\nbands + structure gates + rake/fill math. See core/data/contest_semaforo"},{"name":"scout_field","description":"Scout Field\n\nVIP-only (owner order 8/16): opponent-scouting profiles for the small\nsingle-entry band. The owner's $65 table runs the SAME regulars nightly;\nthis"},{"name":"contest_advice","description":"Contest Advice\n\nAdvice for a concrete contest name. Resolves the name against the LIVE\nlobby FIRST so a real live contest is never reported missing (the curated"},{"name":"fill_template","description":"Fill Template\n\nFill a downloaded FanDuel/DK entries-template with already-generated\nlineups WITHOUT re-running the optimizer — the MCP-callable equivalent of th"},{"name":"admin_issue_key","description":"Issue Key\n\nIdempotently issue a user's API key and ALWAYS return the paste-able\nconnect block. Returns the email's existing active key (or mints one) so a\nuser "},{"name":"betting_agent_guide","description":"Betting Agent Guide\n\nHow any agent uses the MLB betting tools + how to read the output.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent"},{"name":"betting_player_form","description":"Player Form\n\nStreak / splits / recent form for any player ('racha de X').\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: applica"},{"name":"betting_analyze_prop","description":"Analyze Prop\n\nModel a single player's prop vs tonight's FanDuel line -> edge.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"betting_scan_edges","description":"Scan Edges\n\nTonight's prop board ranked by model edge (VALUE first).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/"},{"name":"betting_best_bets","description":"Best Bets\n\nTHE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/\n2+hits/stolen_base) in one call and returns the top edges across all of them,"},{"name":"betting_build_parlay","description":"Build Parlay\n\nDeterministic parlay analysis for BOTH leg shapes. Body:\n{legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the\nlegacy correlation"},{"name":"betting_log_bet","description":"Log Bet\n\nRecord a bet you placed (per user) so we can track P&L + CLV over time.\nBody: {uid, market, selection, odds (American), stake, line?, prop?, team?,\ngam"},{"name":"betting_my_bets","description":"My Bets\n\nA user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're\nbeating the closing line = real edge (the only durable proof).\n\n### Respon"},{"name":"betting_settle_bet","description":"Settle Bet\n\nSettle a logged bet. Body: {uid, bet_id, result: won|lost|push,\nclosing_odds?}. closing_odds lets us compute CLV (did you beat the close).\n\n### Resp"},{"name":"betting_cross_book","description":"Cross Book\n\nCross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API,\nno key/WS). LINE_SHOP (the books hang different numbers — take the easier\n"},{"name":"betting_game_lines","description":"Game Lines\n\nGAME markets — moneyline / run total / run line for today's MLB games. This\nanswers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toron"},{"name":"betting_market","description":"Market\n\nFULL FanDuel market board for a team's game — EVERY market with real odds +\nde-vig fair price, so NO market question goes unanswered. Game lines (ML /\nt"},{"name":"betting_sharp","description":"Sharp\n\nSHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's\nde-vigged line ≈ TRUE probability, so this is the most reliable value signal "},{"name":"betting_game_model","description":"Game Model\n\nMODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs\nthe FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged\nimp"},{"name":"betting_matchup","description":"Matchup\n\nGROUNDING — the real game for a team today: probable pitchers + the POSTED\nlineup (ACTUAL player names from MLB statsapi) + the market line + the CONTE"},{"name":"betting_market_movers","description":"Market Movers\n\nMARKET pattern (not model opinion): how FanDuel lines MOVED today, from the\ncaptured snapshots. A line that shortened = money coming in (sharp/ne"}],"toolCount":34,"toolsHash":"4ea4c3d7535b554756160ace9c3afa8d322d4118a363d34a442135c981473edc","serverName":"V12 DFS Optimizer","capabilities":["experimental","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T00:24:46.018Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":154,"error":null,"detail":{"tools":[{"name":"agent_guide","description":"Agent Guide\n\nSelf-serve onboarding: connect any agent (Claude/MCP or REST) to drive the\nV12 motor, the same engine the dashboard agent uses. No auth. Returns\nco"},{"name":"health_check","description":"Health\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"Status\",\n  "},{"name":"health_v12","description":"Health V12\n\nDeep health check for the V12 pipeline. Surfaces:\n  - last nightly regression run (pass/fail + per-slate deltas)\n  - regression baseline metadata\n  "},{"name":"list_slates","description":"Get Slates\n\nList available V12 slates for today. Returns slate IDs, game counts, and lock times.\n\n### Responses:\n\n**200**: Successful Response (Success Response"},{"name":"get_slate_players","description":"Get Slate Players Endpoint\n\nGet the V12 player pool for a specific slate ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: appl"},{"name":"slate_health","description":"Slate Health\n\nPre-flight diagnostic for a slate. Returns whether odds, projections,\nmatchup, and FD master-session are ready BEFORE the agent invokes\n/v1/genera"},{"name":"slate_refresh","description":"Slate Refresh\n\nRe-fetch projections + odds + slate metadata for a date.\n\nWrites to the configured store (Supabase in prod). Returns a summary\ndict (date, slate_"},{"name":"slate_diff","description":"Slate Diff\n\nCompute what changed since a previously-stored snapshot.\n\nBody shape:\n  {\n    \"slate_id\": 32867,\n    \"date\": \"2026-05-11\",\n    \"sport\": \"NBA\",\n    \""},{"name":"list_presets","description":"Get Presets\n\nList the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with thei"},{"name":"generate_lineups","description":"Generate Lineups\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"S"},{"name":"run_mlb_postmortem","description":"Run Mlb Postmortem\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": "},{"name":"list_contests","description":"Contest Registry\n\nList contest strategy registry entries for agents and the dashboard.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-"},{"name":"list_live_contests","description":"Live Contests\n\nReturn latest V12 contest context without backend identifiers.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"contest_semaforo","description":"Contest Semaforo\n\nVIP-only: per-contest play/skip verdict from the owner's verified P&L\nbands + structure gates + rake/fill math. See core/data/contest_semaforo"},{"name":"scout_field","description":"Scout Field\n\nVIP-only (owner order 8/16): opponent-scouting profiles for the small\nsingle-entry band. The owner's $65 table runs the SAME regulars nightly;\nthis"},{"name":"contest_advice","description":"Contest Advice\n\nAdvice for a concrete contest name. Resolves the name against the LIVE\nlobby FIRST so a real live contest is never reported missing (the curated"},{"name":"fill_template","description":"Fill Template\n\nFill a downloaded FanDuel/DK entries-template with already-generated\nlineups WITHOUT re-running the optimizer — the MCP-callable equivalent of th"},{"name":"admin_issue_key","description":"Issue Key\n\nIdempotently issue a user's API key and ALWAYS return the paste-able\nconnect block. Returns the email's existing active key (or mints one) so a\nuser "},{"name":"betting_agent_guide","description":"Betting Agent Guide\n\nHow any agent uses the MLB betting tools + how to read the output.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent"},{"name":"betting_player_form","description":"Player Form\n\nStreak / splits / recent form for any player ('racha de X').\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: applica"},{"name":"betting_analyze_prop","description":"Analyze Prop\n\nModel a single player's prop vs tonight's FanDuel line -> edge.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"betting_scan_edges","description":"Scan Edges\n\nTonight's prop board ranked by model edge (VALUE first).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/"},{"name":"betting_best_bets","description":"Best Bets\n\nTHE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/\n2+hits/stolen_base) in one call and returns the top edges across all of them,"},{"name":"betting_build_parlay","description":"Build Parlay\n\nDeterministic parlay analysis for BOTH leg shapes. Body:\n{legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the\nlegacy correlation"},{"name":"betting_log_bet","description":"Log Bet\n\nRecord a bet you placed (per user) so we can track P&L + CLV over time.\nBody: {uid, market, selection, odds (American), stake, line?, prop?, team?,\ngam"},{"name":"betting_my_bets","description":"My Bets\n\nA user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're\nbeating the closing line = real edge (the only durable proof).\n\n### Respon"},{"name":"betting_settle_bet","description":"Settle Bet\n\nSettle a logged bet. Body: {uid, bet_id, result: won|lost|push,\nclosing_odds?}. closing_odds lets us compute CLV (did you beat the close).\n\n### Resp"},{"name":"betting_cross_book","description":"Cross Book\n\nCross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API,\nno key/WS). LINE_SHOP (the books hang different numbers — take the easier\n"},{"name":"betting_game_lines","description":"Game Lines\n\nGAME markets — moneyline / run total / run line for today's MLB games. This\nanswers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toron"},{"name":"betting_market","description":"Market\n\nFULL FanDuel market board for a team's game — EVERY market with real odds +\nde-vig fair price, so NO market question goes unanswered. Game lines (ML /\nt"},{"name":"betting_sharp","description":"Sharp\n\nSHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's\nde-vigged line ≈ TRUE probability, so this is the most reliable value signal "},{"name":"betting_game_model","description":"Game Model\n\nMODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs\nthe FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged\nimp"},{"name":"betting_matchup","description":"Matchup\n\nGROUNDING — the real game for a team today: probable pitchers + the POSTED\nlineup (ACTUAL player names from MLB statsapi) + the market line + the CONTE"},{"name":"betting_market_movers","description":"Market Movers\n\nMARKET pattern (not model opinion): how FanDuel lines MOVED today, from the\ncaptured snapshots. A line that shortened = money coming in (sharp/ne"}],"toolCount":34,"toolsHash":"4ea4c3d7535b554756160ace9c3afa8d322d4118a363d34a442135c981473edc","serverName":"V12 DFS Optimizer","capabilities":["experimental","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T17:28:16.825Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":176,"error":null,"detail":{"tools":[{"name":"agent_guide","description":"Agent Guide\n\nSelf-serve onboarding: connect any agent (Claude/MCP or REST) to drive the\nV12 motor, the same engine the dashboard agent uses. No auth. Returns\nco"},{"name":"health_check","description":"Health\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"Status\",\n  "},{"name":"health_v12","description":"Health V12\n\nDeep health check for the V12 pipeline. Surfaces:\n  - last nightly regression run (pass/fail + per-slate deltas)\n  - regression baseline metadata\n  "},{"name":"list_slates","description":"Get Slates\n\nList available V12 slates for today. Returns slate IDs, game counts, and lock times.\n\n### Responses:\n\n**200**: Successful Response (Success Response"},{"name":"get_slate_players","description":"Get Slate Players Endpoint\n\nGet the V12 player pool for a specific slate ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: appl"},{"name":"slate_health","description":"Slate Health\n\nPre-flight diagnostic for a slate. Returns whether odds, projections,\nmatchup, and FD master-session are ready BEFORE the agent invokes\n/v1/genera"},{"name":"slate_refresh","description":"Slate Refresh\n\nRe-fetch projections + odds + slate metadata for a date.\n\nWrites to the configured store (Supabase in prod). Returns a summary\ndict (date, slate_"},{"name":"slate_diff","description":"Slate Diff\n\nCompute what changed since a previously-stored snapshot.\n\nBody shape:\n  {\n    \"slate_id\": 32867,\n    \"date\": \"2026-05-11\",\n    \"sport\": \"NBA\",\n    \""},{"name":"list_presets","description":"Get Presets\n\nList the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with thei"},{"name":"generate_lineups","description":"Generate Lineups\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"S"},{"name":"run_mlb_postmortem","description":"Run Mlb Postmortem\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": "},{"name":"list_contests","description":"Contest Registry\n\nList contest strategy registry entries for agents and the dashboard.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-"},{"name":"list_live_contests","description":"Live Contests\n\nReturn latest V12 contest context without backend identifiers.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"contest_semaforo","description":"Contest Semaforo\n\nVIP-only: per-contest play/skip verdict from the owner's verified P&L\nbands + structure gates + rake/fill math. See core/data/contest_semaforo"},{"name":"scout_field","description":"Scout Field\n\nVIP-only (owner order 8/16): opponent-scouting profiles for the small\nsingle-entry band. The owner's $65 table runs the SAME regulars nightly;\nthis"},{"name":"contest_advice","description":"Contest Advice\n\nAdvice for a concrete contest name. Resolves the name against the LIVE\nlobby FIRST so a real live contest is never reported missing (the curated"},{"name":"fill_template","description":"Fill Template\n\nFill a downloaded FanDuel/DK entries-template with already-generated\nlineups WITHOUT re-running the optimizer — the MCP-callable equivalent of th"},{"name":"admin_issue_key","description":"Issue Key\n\nIdempotently issue a user's API key and ALWAYS return the paste-able\nconnect block. Returns the email's existing active key (or mints one) so a\nuser "},{"name":"betting_agent_guide","description":"Betting Agent Guide\n\nHow any agent uses the MLB betting tools + how to read the output.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent"},{"name":"betting_player_form","description":"Player Form\n\nStreak / splits / recent form for any player ('racha de X').\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: applica"},{"name":"betting_analyze_prop","description":"Analyze Prop\n\nModel a single player's prop vs tonight's FanDuel line -> edge.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"betting_scan_edges","description":"Scan Edges\n\nTonight's prop board ranked by model edge (VALUE first).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/"},{"name":"betting_best_bets","description":"Best Bets\n\nTHE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/\n2+hits/stolen_base) in one call and returns the top edges across all of them,"},{"name":"betting_build_parlay","description":"Build Parlay\n\nDeterministic parlay analysis for BOTH leg shapes. Body:\n{legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the\nlegacy correlation"},{"name":"betting_log_bet","description":"Log Bet\n\nRecord a bet you placed (per user) so we can track P&L + CLV over time.\nBody: {uid, market, selection, odds (American), stake, line?, prop?, team?,\ngam"},{"name":"betting_my_bets","description":"My Bets\n\nA user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're\nbeating the closing line = real edge (the only durable proof).\n\n### Respon"},{"name":"betting_settle_bet","description":"Settle Bet\n\nSettle a logged bet. Body: {uid, bet_id, result: won|lost|push,\nclosing_odds?}. closing_odds lets us compute CLV (did you beat the close).\n\n### Resp"},{"name":"betting_cross_book","description":"Cross Book\n\nCross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API,\nno key/WS). LINE_SHOP (the books hang different numbers — take the easier\n"},{"name":"betting_game_lines","description":"Game Lines\n\nGAME markets — moneyline / run total / run line for today's MLB games. This\nanswers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toron"},{"name":"betting_market","description":"Market\n\nFULL FanDuel market board for a team's game — EVERY market with real odds +\nde-vig fair price, so NO market question goes unanswered. Game lines (ML /\nt"},{"name":"betting_sharp","description":"Sharp\n\nSHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's\nde-vigged line ≈ TRUE probability, so this is the most reliable value signal "},{"name":"betting_game_model","description":"Game Model\n\nMODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs\nthe FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged\nimp"},{"name":"betting_matchup","description":"Matchup\n\nGROUNDING — the real game for a team today: probable pitchers + the POSTED\nlineup (ACTUAL player names from MLB statsapi) + the market line + the CONTE"},{"name":"betting_market_movers","description":"Market Movers\n\nMARKET pattern (not model opinion): how FanDuel lines MOVED today, from the\ncaptured snapshots. A line that shortened = money coming in (sharp/ne"}],"toolCount":34,"toolsHash":"4ea4c3d7535b554756160ace9c3afa8d322d4118a363d34a442135c981473edc","serverName":"V12 DFS Optimizer","capabilities":["experimental","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"agent_guide","description":"Agent Guide\n\nSelf-serve onboarding: connect any agent (Claude/MCP or REST) to drive the\nV12 motor, the same engine the dashboard agent uses. No auth. Returns\nco"},{"name":"health_check","description":"Health\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"Status\",\n  "},{"name":"health_v12","description":"Health V12\n\nDeep health check for the V12 pipeline. Surfaces:\n  - last nightly regression run (pass/fail + per-slate deltas)\n  - regression baseline metadata\n  "},{"name":"list_slates","description":"Get Slates\n\nList available V12 slates for today. Returns slate IDs, game counts, and lock times.\n\n### Responses:\n\n**200**: Successful Response (Success Response"},{"name":"get_slate_players","description":"Get Slate Players Endpoint\n\nGet the V12 player pool for a specific slate ID.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: appl"},{"name":"slate_health","description":"Slate Health\n\nPre-flight diagnostic for a slate. Returns whether odds, projections,\nmatchup, and FD master-session are ready BEFORE the agent invokes\n/v1/genera"},{"name":"slate_refresh","description":"Slate Refresh\n\nRe-fetch projections + odds + slate metadata for a date.\n\nWrites to the configured store (Supabase in prod). Returns a summary\ndict (date, slate_"},{"name":"slate_diff","description":"Slate Diff\n\nCompute what changed since a previously-stored snapshot.\n\nBody shape:\n  {\n    \"slate_id\": 32867,\n    \"date\": \"2026-05-11\",\n    \"sport\": \"NBA\",\n    \""},{"name":"list_presets","description":"Get Presets\n\nList the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with thei"},{"name":"generate_lineups","description":"Generate Lineups\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": \"S"},{"name":"run_mlb_postmortem","description":"Run Mlb Postmortem\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/json\n\n**Example Response:**\n```json\n{\n  \"status\": "},{"name":"list_contests","description":"Contest Registry\n\nList contest strategy registry entries for agents and the dashboard.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-"},{"name":"list_live_contests","description":"Live Contests\n\nReturn latest V12 contest context without backend identifiers.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"contest_semaforo","description":"Contest Semaforo\n\nVIP-only: per-contest play/skip verdict from the owner's verified P&L\nbands + structure gates + rake/fill math. See core/data/contest_semaforo"},{"name":"scout_field","description":"Scout Field\n\nVIP-only (owner order 8/16): opponent-scouting profiles for the small\nsingle-entry band. The owner's $65 table runs the SAME regulars nightly;\nthis"},{"name":"contest_advice","description":"Contest Advice\n\nAdvice for a concrete contest name. Resolves the name against the LIVE\nlobby FIRST so a real live contest is never reported missing (the curated"},{"name":"fill_template","description":"Fill Template\n\nFill a downloaded FanDuel/DK entries-template with already-generated\nlineups WITHOUT re-running the optimizer — the MCP-callable equivalent of th"},{"name":"admin_issue_key","description":"Issue Key\n\nIdempotently issue a user's API key and ALWAYS return the paste-able\nconnect block. Returns the email's existing active key (or mints one) so a\nuser "},{"name":"betting_agent_guide","description":"Betting Agent Guide\n\nHow any agent uses the MLB betting tools + how to read the output.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent"},{"name":"betting_player_form","description":"Player Form\n\nStreak / splits / recent form for any player ('racha de X').\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: applica"},{"name":"betting_analyze_prop","description":"Analyze Prop\n\nModel a single player's prop vs tonight's FanDuel line -> edge.\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: app"},{"name":"betting_scan_edges","description":"Scan Edges\n\nTonight's prop board ranked by model edge (VALUE first).\n\n### Responses:\n\n**200**: Successful Response (Success Response)\nContent-Type: application/"},{"name":"betting_best_bets","description":"Best Bets\n\nTHE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/\n2+hits/stolen_base) in one call and returns the top edges across all of them,"},{"name":"betting_build_parlay","description":"Build Parlay\n\nDeterministic parlay analysis for BOTH leg shapes. Body:\n{legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the\nlegacy correlation"},{"name":"betting_log_bet","description":"Log Bet\n\nRecord a bet you placed (per user) so we can track P&L + CLV over time.\nBody: {uid, market, selection, odds (American), stake, line?, prop?, team?,\ngam"},{"name":"betting_my_bets","description":"My Bets\n\nA user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're\nbeating the closing line = real edge (the only durable proof).\n\n### Respon"},{"name":"betting_settle_bet","description":"Settle Bet\n\nSettle a logged bet. Body: {uid, bet_id, result: won|lost|push,\nclosing_odds?}. closing_odds lets us compute CLV (did you beat the close).\n\n### Resp"},{"name":"betting_cross_book","description":"Cross Book\n\nCross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API,\nno key/WS). LINE_SHOP (the books hang different numbers — take the easier\n"},{"name":"betting_game_lines","description":"Game Lines\n\nGAME markets — moneyline / run total / run line for today's MLB games. This\nanswers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toron"},{"name":"betting_market","description":"Market\n\nFULL FanDuel market board for a team's game — EVERY market with real odds +\nde-vig fair price, so NO market question goes unanswered. Game lines (ML /\nt"},{"name":"betting_sharp","description":"Sharp\n\nSHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's\nde-vigged line ≈ TRUE probability, so this is the most reliable value signal "},{"name":"betting_game_model","description":"Game Model\n\nMODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs\nthe FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged\nimp"},{"name":"betting_matchup","description":"Matchup\n\nGROUNDING — the real game for a team today: probable pitchers + the POSTED\nlineup (ACTUAL player names from MLB statsapi) + the market line + the CONTE"},{"name":"betting_market_movers","description":"Market Movers\n\nMARKET pattern (not model opinion): how FanDuel lines MOVED today, from the\ncaptured snapshots. A line that shortened = money coming in (sharp/ne"}],"package":null,"toolSurface":{"id":"ts_n7mz3ttjf43h","endpointId":"ep_ftafu2uwzeaz","hash":"4ea4c3d7535b554756160ace9c3afa8d322d4118a363d34a442135c981473edc","toolCount":34,"serverName":"V12 DFS Optimizer","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-12T11:27:12.640Z","lastSeenAt":"2026-10-10T04:30:54.739Z","observations":102,"toolNames":["agent_guide","health_check","health_v12","list_slates","get_slate_players","slate_health","slate_refresh","slate_diff","list_presets","generate_lineups","run_mlb_postmortem","list_contests","list_live_contests","contest_semaforo","scout_field","contest_advice","fill_template","admin_issue_key","betting_agent_guide","betting_player_form","betting_analyze_prop","betting_scan_edges","betting_best_bets","betting_build_parlay","betting_log_bet","betting_my_bets","betting_settle_bet","betting_cross_book","betting_game_lines","betting_market","betting_sharp","betting_game_model","betting_matchup","betting_market_movers"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_ftafu2uwzeaz","url":"https://v12dfs-production.up.railway.app/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-10T04:30:54.747Z","auth":{"observedAt":"2026-10-10T04:30:54.902Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-10T04:30:54.910Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"*.up.railway.app","issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validFrom":"2026-09-27T03:01:43.000Z","validTo":"2026-12-26T03:01:42.000Z","daysToExpiry":76,"sanCount":2,"fingerprint256":"FB:37:0C:A2:68:42:DA:2B:2F:F8:E3:18:2E:0E:8C:FC:6F:B8:EA:C3:2C:DB:57:18:F4:5A:4B:39:B9:E1:40:AF"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.Jorgeperez0825/v12-dfs","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.Jorgeperez0825%2Fv12-dfs","firstSeenAt":"2026-09-06T04:20:50.958Z","fetchedAt":"2026-10-09T22:20:27.629Z","normalizedAt":"2026-10-09T22:20:27.629Z"}]},"firstSeenAt":"2026-09-06T04:20:50.958Z","updatedAt":"2026-10-10T04:33:54.214Z"}