io.github.Jorgeperez0825/v12-dfs

MCPcommunitylive
v1.0.0io.github.Jorgeperez0825UnknownUpdated 3mo ago

AI-driven DFS lineup optimizer for MLB & NBA — build FanDuel & DraftKings lineups via MCP.

Endpoint healthlive
checked 2 days ago · 361ms
100% of the last 6 checks reached this endpoint
Works in
ClaudeCursorCopilotChatGPTGemini

Inferred from the transports this listing declares (streamable-http). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.

Automatically indexed from public sources. Not yet verified by the developer on Forge.Claim this listing →
3mo agoLast update
Package
Authorio.github.Jorgeperez0825
LicenseUnknown
Version1.0.0
Sourcemcp-registry
Trust Status
D
30/100Risk
✓Listed in Forge index+10/10
—Publisher identity verified+0/30
→ Publisher: this listing has no repository on file, so `forge publish` cannot verify ownership automatically. Use "Claim this listing" above — Forge reviews these by hand.
—Domain verification+0/10
→ Not currently available for this listing type — the domain-verification check only runs for npm-backed packages today, so this row cannot be earned here yet regardless of what's hosted at the domain.
—Prompt-injection scan · findings+0/30
→ Publisher: remove instructions in the source aimed at AI clients rather than human readers
✓Obfuscation / exfil scan · clean+20/20
StatusCommunity-indexed
PublisherUnverified
SignatureUnsigned
Domain—
Provenance—
DependenciesNot audited
Tool surface34 tools · none privileged
Security scan⚠ Warnings (2)vlive · 1mo agoHow well does this scan work?
PROMPTtool:agent_guideExfiltration-shaped instruction
PROMPTtool:fill_template#lineupsExfiltration-shaped instruction
EvalsNone
IndexedJun 17, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

34 tools · none privileged · 2 flagged for injection
Observed live from the vendor's endpoint1mo ago

Read from a real MCP initialize → tools/list handshake against the declared endpoint. No tool was ever invoked — tools/list is the read-only introspection call the protocol defines for this. It reflects what the server advertised at that moment; a hosted endpoint is not pinned to any version and can change without notice.

  • https://v12dfs-production.up.railway.app/mcp34 tools · 325ms
agent_guideinjection riskAgent Guide Self-serve onboarding: connect any agent (Claude/MCP or REST) to drive the V12 motor, the same engine the dashboard agent uses. No auth. Returns copy-paste MCP + REST config with a PLACEHOLDER key, the endpoint map, and the generate body fields. Operators: issue each user their OWN key…

Agent Guide Self-serve onboarding: connect any agent (Claude/MCP or REST) to drive the V12 motor, the same engine the dashboard agent uses. No auth. Returns copy-paste MCP + REST config with a PLACEHOLDER key, the endpoint map, and the generate body fields. Operators: issue each user their OWN key…

INJECTIONExfiltration-shaped instructione each user their OWN key via POST /v1/admin/create-key — never share one key. ### Responses: **200**: Su…

No input schema was published for this tool.

health_checkHealth ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "status": "Status", "version": "Version", "timestamp": "Timestamp" } ```

Health ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "status": "Status", "version": "Version", "timestamp": "Timestamp" } ```

No input schema was published for this tool.

health_v12Health V12 Deep health check for the V12 pipeline. Surfaces: - last nightly regression run (pass/fail + per-slate deltas) - regression baseline metadata - recent preflight blockers (if any cached) No auth required — monitoring endpoint. ### Responses: **200**: Successful Response (Success Res…

Health V12 Deep health check for the V12 pipeline. Surfaces: - last nightly regression run (pass/fail + per-slate deltas) - regression baseline metadata - recent preflight blockers (if any cached) No auth required — monitoring endpoint. ### Responses: **200**: Successful Response (Success Res…

No input schema was published for this tool.

list_slatesGet Slates List available V12 slates for today. Returns slate IDs, game counts, and lock times. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ {…

Get Slates List available V12 slates for today. Returns slate IDs, game counts, and lock times. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ {…

ParameterTypeDescription
sitestring—
sportstring—
playableboolean—
compactboolean—
limitinteger—
get_slate_playersGet Slate Players Endpoint Get the V12 player pool for a specific slate ID. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ { "loc": [], "msg":…

Get Slate Players Endpoint Get the V12 player pool for a specific slate ID. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ { "loc": [], "msg":…

ParameterTypeDescription
slate_id*integer—
compactboolean—
limitinteger—
slate_healthSlate Health Pre-flight diagnostic for a slate. Returns whether odds, projections, matchup, and FD master-session are ready BEFORE the agent invokes /v1/generate. Either slate_id or date is required. When slate_id is given, the slate metadata is also returned (games list, lock times). When only d…

Slate Health Pre-flight diagnostic for a slate. Returns whether odds, projections, matchup, and FD master-session are ready BEFORE the agent invokes /v1/generate. Either slate_id or date is required. When slate_id is given, the slate metadata is also returned (games list, lock times). When only d…

ParameterTypeDescription
slate_idinteger—
datestring—
sitestring—
sportstring—
last_known_fingerprintstring—
include_snapshotboolean—
slate_refreshSlate Refresh Re-fetch projections + odds + slate metadata for a date. Writes to the configured store (Supabase in prod). Returns a summary dict (date, slate_id, n_games, n_players, n_upserted, n_odds, backend). Auth: requires X-API-Key OR X-Internal-Secret (cron use). This is a write op that co…

Slate Refresh Re-fetch projections + odds + slate metadata for a date. Writes to the configured store (Supabase in prod). Returns a summary dict (date, slate_id, n_games, n_players, n_upserted, n_odds, backend). Auth: requires X-API-Key OR X-Internal-Secret (cron use). This is a write op that co…

ParameterTypeDescription
datestring—
sportstring—
sitestring—
slate_diffSlate Diff Compute what changed since a previously-stored snapshot. Body shape: { "slate_id": 32867, "date": "2026-05-11", "sport": "NBA", "site": "FD", "previous": { "v": "v1", "players": [{"id","name","status","salary","proj"}, ...], "odds": [{"game","ou","spread","home_ml","away_ml"},…

Slate Diff Compute what changed since a previously-stored snapshot. Body shape: { "slate_id": 32867, "date": "2026-05-11", "sport": "NBA", "site": "FD", "previous": { "v": "v1", "players": [{"id","name","status","salary","proj"}, ...], "odds": [{"game","ou","spread","home_ml","away_ml"},…

No input schema was published for this tool.

list_presetsGet Presets List the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with their configurations. No auth required. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**…

Get Presets List the available strategy presets (gpp_pro_pattern, gpp_sniper, gpp_balanced, gpp_volume, cash_grinder, gpp_contrarian, gpp_mass_entry) with their configurations. No auth required. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**…

ParameterTypeDescription
sportstring—
generate_lineupsGenerate Lineups ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "status": "Status", "generated_at": "Generated At", "warnings": [], "exposures": {}, "lineups": [] } ``` **422**: Validation Error Content-Type: app…

Generate Lineups ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "status": "Status", "generated_at": "Generated At", "warnings": [], "exposures": {}, "lineups": [] } ``` **422**: Validation Error Content-Type: app…

ParameterTypeDescription
date*stringSlate date YYYY-MM-DD
sportstringSport engine to run: nba or mlb.
presetstringStrategy preset key.
platformstringV12 platform profile: fd or dk.
slate_idintegerSpecific slate ID from /v1/slates. Overrides date-based lookup.
contest_idstringOptional contest handle for building an entry-update CSV from the user's existing contest entries.
entry_template_csvstringRaw CSV of a FanDuel entries-upload-template the operator already downloaded. When present, the entry-upload is filled from its OWN entry_ids locally — no FanD…
contest_max_entriesintegerMax entries per user for the selected contest. Used to identify multi-entry mass GPPs (>=4) which keep the caller's preset. Field SIZE, not this, governs the M…
contest_field_sizeintegerTotal entries (field size) of the selected contest. Governs the MLB objective: field <= 10 -> max-mean (mlb_small_field_se); field > 10 -> ceiling (mlb_se_ceil…
contest_fallbackstringEscape hatch when a contest_id cannot be mapped to a slate (contest_slate_unresolved). 'slate_only' + an explicit slate_id builds on THAT slate and skips conte…
plan_onlybooleanWhen true, the server resolves preset / contest / authoritative slate / top-run-env / locks but does NOT run the optimizer. Returns a Plan response so the user…
fd_user_idstringDEPRECATED on /v1/generate: fd_user_id is bound server-side to your API key (see /v1/admin/bind-fd-user). Body value is IGNORED on the public route unless X-In…
lineupsintegerNumber of lineups (overrides preset default)
strategystringGPP or cash game strategy
stylestring—
runsintegerAccepted for tier limits and response metadata. Portfolio quality is controlled by preset, candidate_pool_size, pool_oversample_multiplier, and simulation sett…
seedintegerRandom seed for reproducibility
locksarrayPlayers to lock in
avoidsarrayPlayers to avoid
exposure_capsobjectPer-player exposure caps {name: 0.0-1.0}
max_hitter_exposurenumberPortfolio cap: max share of delivered lineups any ONE hitter may appear in (0.4 = 40%). Pitchers exempt.
max_pitcher_exposurenumberPortfolio cap: max share of delivered lineups any ONE pitcher may appear in.
auto_team_exposure_capnumberDefault per-team portfolio cap (share of lineups containing ANY given team). Per-team entries in team_exposure_caps win over it.
team_exposure_capsobjectPer-team portfolio caps, as [["COL",0.5],...] pairs or {"COL":0.5} dict.
run_mlb_postmortemRun Mlb Postmortem ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "status": "Status", "generated_at": "Generated At", "date": "Date", "game_id": "Game Id", "entries": 1, "field_lineups": 1, "training_rows": 1,…

Run Mlb Postmortem ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **Example Response:** ```json { "status": "Status", "generated_at": "Generated At", "date": "Date", "game_id": "Game Id", "entries": 1, "field_lineups": 1, "training_rows": 1,…

ParameterTypeDescription
date*stringSlate date YYYY-MM-DD
game_id*stringV12 slate/game handle, e.g. 129715.
history_csv*stringRaw FanDuel contest-history CSV content.
history_filenamestring—
upload_csvsarray—
sabersim_csvstringOptional external lineup export for comparison.
top_field_rankinteger—
sync_supabasebooleanUpsert simulator training rows to production store when configured.
list_contestsContest Registry List contest strategy registry entries for agents and the dashboard. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ { "loc": []…

Contest Registry List contest strategy registry entries for agents and the dashboard. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ { "loc": []…

ParameterTypeDescription
platformstring—
sportstring—
list_live_contestsLive Contests Return latest V12 contest context without backend identifiers. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ { "loc": [], "msg":…

Live Contests Return latest V12 contest context without backend identifiers. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ { "loc": [], "msg":…

ParameterTypeDescription
platformstring—
sportstring—
compactboolean—
limitinteger—
contest_semaforoContest Semaforo VIP-only: per-contest play/skip verdict from the owner's verified P&L bands + structure gates + rake/fill math. See core/data/contest_semaforo. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: a…

Contest Semaforo VIP-only: per-contest play/skip verdict from the owner's verified P&L bands + structure gates + rake/fill math. See core/data/contest_semaforo. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: a…

ParameterTypeDescription
platformstring—
sportstring—
limitinteger—
scout_fieldScout Field VIP-only (owner order 8/16): opponent-scouting profiles for the small single-entry band. The owner's $65 table runs the SAME regulars nightly; this returns each regular's fingerprint — days seen, avg score, chalkiness (overlap with field consensus), favorite pitchers/bats and head-to-h…

Scout Field VIP-only (owner order 8/16): opponent-scouting profiles for the small single-entry band. The owner's $65 table runs the SAME regulars nightly; this returns each regular's fingerprint — days seen, avg score, chalkiness (overlap with field consensus), favorite pitchers/bats and head-to-h…

ParameterTypeDescription
conteststring—
min_daysinteger—
contest_adviceContest Advice Advice for a concrete contest name. Resolves the name against the LIVE lobby FIRST so a real live contest is never reported missing (the curated registry is only a subset — that was the "$800 Wed MLB Home Run no existe" bug), then layers registry strategy advice on top when a templa…

Contest Advice Advice for a concrete contest name. Resolves the name against the LIVE lobby FIRST so a real live contest is never reported missing (the curated registry is only a subset — that was the "$800 Wed MLB Home Run no existe" bug), then layers registry strategy advice on top when a templa…

ParameterTypeDescription
name*string—
platformstring—
sportstring—
fill_templateinjection riskFill Template Fill a downloaded FanDuel/DK entries-template with already-generated lineups WITHOUT re-running the optimizer — the MCP-callable equivalent of the dashboard's fill_template. Keeps each entry row's leading columns (entry_id, contest_id, fee) and replaces the roster-slot columns with a…

Fill Template Fill a downloaded FanDuel/DK entries-template with already-generated lineups WITHOUT re-running the optimizer — the MCP-callable equivalent of the dashboard's fill_template. Keeps each entry row's leading columns (entry_id, contest_id, fee) and replaces the roster-slot columns with a…

INJECTIONIn parameter lineups: Exfiltration-shaped instructionEach lineup = upload tokens in template roster-slot order.
ParameterTypeDescription
template_csv*stringRaw CSV of the entries-template (headers + entry rows).
lineups*arrayEach lineup = upload tokens in template roster-slot order.
admin_issue_keyIssue Key Idempotently issue a user's API key and ALWAYS return the paste-able connect block. Returns the email's existing active key (or mints one) so a user keeps a single key across dashboard reloads; with rotate=true, revokes the existing keys and mints a fresh one. Admin-gated — the dashboard…

Issue Key Idempotently issue a user's API key and ALWAYS return the paste-able connect block. Returns the email's existing active key (or mints one) so a user keeps a single key across dashboard reloads; with rotate=true, revokes the existing keys and mints a fresh one. Admin-gated — the dashboard…

ParameterTypeDescription
email*string—
tierstring—
rotatebooleanRevoke existing keys and mint a fresh one.
betting_agent_guideBetting Agent Guide How any agent uses the MLB betting tools + how to read the output. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json

Betting Agent Guide How any agent uses the MLB betting tools + how to read the output. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json

No input schema was published for this tool.

betting_player_formPlayer Form Streak / splits / recent form for any player ('racha de X'). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ { "loc": [], "msg": "Me…

Player Form Streak / splits / recent form for any player ('racha de X'). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ { "loc": [], "msg": "Me…

ParameterTypeDescription
name*string—
seasoninteger—
betting_analyze_propAnalyze Prop Model a single player's prop vs tonight's FanDuel line -> edge. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ { "loc": [], "msg":…

Analyze Prop Model a single player's prop vs tonight's FanDuel line -> edge. ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ { "loc": [], "msg":…

ParameterTypeDescription
name*string—
propstring—
thresholdinteger—
seasoninteger—
betting_scan_edgesScan Edges Tonight's prop board ranked by model edge (VALUE first). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ { "loc": [], "msg": "Message…

Scan Edges Tonight's prop board ranked by model edge (VALUE first). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/json **Example Response:** ```json { "detail": [ { "loc": [], "msg": "Message…

ParameterTypeDescription
propstring—
min_edgenumber—
limitinteger—
thresholdinteger—
coorsboolean—
seasoninteger—
betting_best_betsBest Bets THE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/ 2+hits/stolen_base) in one call and returns the top edges across all of them, not just home runs. Power props carry the Savant validation (CONFIRMED power ranked above neutral/noise). Use this for an open 'what's hot…

Best Bets THE board sweep — scans EVERY main prop market (HR/RBI/hit/total_bases/ 2+hits/stolen_base) in one call and returns the top edges across all of them, not just home runs. Power props carry the Savant validation (CONFIRMED power ranked above neutral/noise). Use this for an open 'what's hot…

ParameterTypeDescription
min_edgenumber—
limitinteger—
betting_build_parlayBuild Parlay Deterministic parlay analysis for BOTH leg shapes. Body: {legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the legacy correlation-aware EV. GAME-side legs (ML / run line / total / team total / F5, selected by the `market` field) — the slips users actually paste — are…

Build Parlay Deterministic parlay analysis for BOTH leg shapes. Body: {legs:[...], ticket_odds?}. PROP legs {name, prop, threshold} keep the legacy correlation-aware EV. GAME-side legs (ML / run line / total / team total / F5, selected by the `market` field) — the slips users actually paste — are…

ParameterTypeDescription
legs*array—
ticket_oddsinteger—
betting_log_betLog Bet Record a bet you placed (per user) so we can track P&L + CLV over time. Body: {uid, market, selection, odds (American), stake, line?, prop?, team?, game?, book?}. Append-only — this is the evidence base that PROVES edge. ### Responses: **200**: Successful Response (Success Response) Cont…

Log Bet Record a bet you placed (per user) so we can track P&L + CLV over time. Body: {uid, market, selection, odds (American), stake, line?, prop?, team?, game?, book?}. Append-only — this is the evidence base that PROVES edge. ### Responses: **200**: Successful Response (Success Response) Cont…

ParameterTypeDescription
uid*string—
market*string—
selection*string—
odds*integer—
stake*number—
linenumber—
propstring—
teamstring—
gamestring—
bookstring—
betting_my_betsMy Bets A user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're beating the closing line = real edge (the only durable proof). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/js…

My Bets A user's bet history + P&L / CLV summary. avg_clv_pct > 0 over time = you're beating the closing line = real edge (the only durable proof). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/js…

ParameterTypeDescription
uid*string—
betting_settle_betSettle Bet Settle a logged bet. Body: {uid, bet_id, result: won|lost|push, closing_odds?}. closing_odds lets us compute CLV (did you beat the close). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/…

Settle Bet Settle a logged bet. Body: {uid, bet_id, result: won|lost|push, closing_odds?}. closing_odds lets us compute CLV (did you beat the close). ### Responses: **200**: Successful Response (Success Response) Content-Type: application/json **422**: Validation Error Content-Type: application/…

ParameterTypeDescription
uid*string—
bet_id*string—
result*string—
closing_oddsinteger—
betting_cross_bookCross Book Cross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API, no key/WS). LINE_SHOP (the books hang different numbers — take the easier side) and PRICE_SHOP (better price, same line) are CONFIRMED edges, no model needed. Arbitrage is NOT auto-reported (needs over/under sides…

Cross Book Cross-book value: FanDuel vs DraftKings (DK pulled via ESPN's public API, no key/WS). LINE_SHOP (the books hang different numbers — take the easier side) and PRICE_SHOP (better price, same line) are CONFIRMED edges, no model needed. Arbitrage is NOT auto-reported (needs over/under sides…

ParameterTypeDescription
propstring—
betting_game_linesGame Lines GAME markets — moneyline / run total / run line for today's MLB games. This answers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toronto' questions that player props CAN'T (V12 used to just refuse them). Optional team filter ('Yankees', 'NYY'). MARKET data from ESPN's publ…

Game Lines GAME markets — moneyline / run total / run line for today's MLB games. This answers the 'quién gana / cuántas carreras / pronóstico Yankees vs Toronto' questions that player props CAN'T (V12 used to just refuse them). Optional team filter ('Yankees', 'NYY'). MARKET data from ESPN's publ…

ParameterTypeDescription
teamstring—
datestring—
betting_marketMarket FULL FanDuel market board for a team's game — EVERY market with real odds + de-vig fair price, so NO market question goes unanswered. Game lines (ML / total / run line), FIRST 5 INNINGS (F5), TEAM TOTALS, NRFI/YRFI, alternate lines, AND the full player-prop menu (HR / 2+ HR / hit / 2+ hits…

Market FULL FanDuel market board for a team's game — EVERY market with real odds + de-vig fair price, so NO market question goes unanswered. Game lines (ML / total / run line), FIRST 5 INNINGS (F5), TEAM TOTALS, NRFI/YRFI, alternate lines, AND the full player-prop menu (HR / 2+ HR / hit / 2+ hits…

ParameterTypeDescription
team*string—
datestring—
betting_sharpSharp SHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's de-vigged line ≈ TRUE probability, so this is the most reliable value signal in the kit, NO model needed: edge_vs_sharp = FD's price minus the sharp's true prob; POSITIVE means FanDuel pays MORE than fair (real value…

Sharp SHARP value — FanDuel vs PINNACLE (the sharpest book, ~2% hold). Pinnacle's de-vigged line ≈ TRUE probability, so this is the most reliable value signal in the kit, NO model needed: edge_vs_sharp = FD's price minus the sharp's true prob; POSITIVE means FanDuel pays MORE than fair (real value…

ParameterTypeDescription
team*string—
datestring—
betting_game_modelGame Model MODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs the FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged implied mean + 0.25×(structural model − book), and every edge is computed vs the FAIR (de-vigged) probability, never the raw vig price. The st…

Game Model MODEL the GAME run markets — TEAM TOTALS (over/under) and NRFI/YRFI — vs the FanDuel line, MARKET-ANCHORED: expected_runs = the book's de-vigged implied mean + 0.25×(structural model − book), and every edge is computed vs the FAIR (de-vigged) probability, never the raw vig price. The st…

ParameterTypeDescription
team*string—
datestring—
betting_matchupMatchup GROUNDING — the real game for a team today: probable pitchers + the POSTED lineup (ACTUAL player names from MLB statsapi) + the market line + the CONTEXT a pro reasons with: home-plate UMPIRE (strike zone → totals/Ks), the INJURY report (who's OUT / Day-To-Day), and BULLPEN health (ERA / b…

Matchup GROUNDING — the real game for a team today: probable pitchers + the POSTED lineup (ACTUAL player names from MLB statsapi) + the market line + the CONTEXT a pro reasons with: home-plate UMPIRE (strike zone → totals/Ks), the INJURY report (who's OUT / Day-To-Day), and BULLPEN health (ERA / b…

ParameterTypeDescription
team*string—
datestring—
betting_market_moversMarket Movers MARKET pattern (not model opinion): how FanDuel lines MOVED today, from the captured snapshots. A line that shortened = money coming in (sharp/news); a drift = money off. This is the 'obvious opportunity' signal — market-confirmed, independent of our unproven model. Needs accumulated…

Market Movers MARKET pattern (not model opinion): how FanDuel lines MOVED today, from the captured snapshots. A line that shortened = money coming in (sharp/news); a drift = money off. This is the 'obvious opportunity' signal — market-confirmed, independent of our unproven model. Needs accumulated…

ParameterTypeDescription
propstring—
min_movenumber—
datestring—

34 of 34 tools published a description.

Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.

About

AI-driven DFS lineup optimizer for MLB & NBA — build FanDuel & DraftKings lineups via MCP.

Keywords
mcp
Alternatives
Comparing tool surfaces…

No dependency coverage

This entry publishes no npm package, so Forge has no dependency tree for it. That is a gap in coverage — not a statement that it has no dependencies.