{"serverId":"mcp-registry/io.github.jacobiusmakes/parlayapi","tools":[{"name":"parlayapi_account_info","fixed":{"name":"parlayapi_account_info","description":"Get info about the API key currently in use: tier, credits\n    remaining, billing period.\n    ","inputSchema":{"type":"object","title":"parlayapi_account_infoArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":66,"tokensAfter":66},{"name":"parlayapi_book_coverage","fixed":{"name":"parlayapi_book_coverage","description":"Return public per-book coverage gates.\n\n    No API key required. This is the proof surface for whether each\n    source survives freshness, normalization, database, REST-shape, and\n    stream-shape checks.\n    ","inputSchema":{"type":"object","title":"parlayapi_book_coverageArguments","properties":{"include_warn":{"type":"boolean","title":"Include Warn","default":true},"window_minutes":{"type":"integer","title":"Window Minutes","default":15}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":140,"tokensAfter":140},{"name":"parlayapi_checkout_link","fixed":{"name":"parlayapi_checkout_link","description":"Request an owner-authenticated checkout URL or an email-link flow.\n\n    A configured key is forwarded for the backend to verify account ownership.\n    With no matching key, the backend returns an email-flow acknowledgement\n    rather than a checkout URL. That response does not confirm email delivery.\n    Tiers: starter, pro, business, enterprise, scale. For current prices, call\n    parlayapi_get_pricing.\n    ","inputSchema":{"type":"object","title":"parlayapi_checkout_linkArguments","required":["email"],"properties":{"tier":{"type":"string","title":"Tier","default":"pro"},"email":{"type":"string","title":"Email"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":189,"tokensAfter":189},{"name":"parlayapi_find_arbitrage","fixed":{"name":"parlayapi_find_arbitrage","description":"Find cross-book arbitrage candidates from current quoted prices.\n\n    Scans every event for quoted prices whose combined implied probability\n    is under 100%. Results are candidates, not guaranteed executable profit:\n    prices can move or be unavailable, and limits, latency, commissions,\n    voids, settlement rules, or stake constraints can change the outcome.\n    Soccer and other 3-way (home/draw/away) markets are supported, including\n    candidates anchored on the draw.\n\n    Args:\n        sp","inputSchema":{"type":"object","title":"parlayapi_find_arbitrageArguments","required":["sport_key"],"properties":{"markets":{"type":"string","title":"Markets","default":""},"sport_key":{"type":"string","title":"Sport Key"},"min_profit":{"type":"number","title":"Min Profit","default":0},"exclude_exchanges":{"type":"boolean","title":"Exclude Exchanges","default":false}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":260,"tokensAfter":260},{"name":"parlayapi_find_ev","fixed":{"name":"parlayapi_find_ev","description":"Find positive-EV bets vs a sharp book's no-vig fair line.\n\n    Compares every soft book's price against the no-vig fair probability\n    derived from a sharp book (default Pinnacle); rows where a soft book\n    offers better odds than the sharp fair price are +EV. Three-way soccer\n    markets use a dedicated no-vig pass over home/draw/away, so +EV on the\n    draw surfaces too.\n\n    Args:\n        sport_key: e.g. \"baseball_mlb\", \"soccer_epl\".\n        sharp_book: Sharp baseline book. Default \"pinnacl","inputSchema":{"type":"object","title":"parlayapi_find_evArguments","required":["sport_key"],"properties":{"markets":{"type":"string","title":"Markets","default":""},"min_edge":{"type":"number","title":"Min Edge","default":2},"sport_key":{"type":"string","title":"Sport Key"},"sharp_book":{"type":"string","title":"Sharp Book","default":"pinnacle"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":254,"tokensAfter":254},{"name":"parlayapi_find_middles","fixed":{"name":"parlayapi_find_middles","description":"Find cross-book middle opportunities.\n\n    A middle takes the Over at a low line on one book and the Under at a\n    higher line on another, so a window of whole numbers cashes BOTH bets\n    (e.g. Over 7.5 at one book, Under 9.5 at another means 8 or 9 wins both).\n    Scans game totals, spreads, AND player-total props (points, rebounds,\n    strikeouts, ...). Each result carries the window, the numbers that hit,\n    and per-$100 economics: profit_if_hit and net_if_above/below_window.\n\n    Args:\n  ","inputSchema":{"type":"object","title":"parlayapi_find_middlesArguments","required":["sport_key"],"properties":{"markets":{"type":"string","title":"Markets","default":""},"min_gap":{"type":"number","title":"Min Gap","default":1},"sport_key":{"type":"string","title":"Sport Key"},"include_props":{"type":"boolean","title":"Include Props","default":true}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":255,"tokensAfter":255},{"name":"parlayapi_get_odds","fixed":{"name":"parlayapi_get_odds","description":"Get game-level odds for a sport from all configured bookmakers.\n\n    Args:\n        sport_key: e.g. \"baseball_mlb\", \"soccer_epl\"\n        markets: Comma-separated. h2h, spreads, totals.\n        regions: us, us2, uk, eu, fr, au, ca, mx, latam, br, asia. Comma-separated for multiple.\n        bookmakers: Comma-separated bookmaker keys (optional).\n            Examples: pinnacle, draftkings, fanduel, bovada, caesars.\n        odds_format: decimal | american\n    ","inputSchema":{"type":"object","title":"parlayapi_get_oddsArguments","required":["sport_key"],"properties":{"markets":{"type":"string","title":"Markets","default":"h2h"},"regions":{"type":"string","title":"Regions","default":"us"},"sport_key":{"type":"string","title":"Sport Key"},"bookmakers":{"type":"string","title":"Bookmakers","default":""},"odds_format":{"type":"string","title":"Odds Format","default":"decimal"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":261,"tokensAfter":261},{"name":"parlayapi_get_pricing","fixed":{"name":"parlayapi_get_pricing","description":"Return the current public pricing table.\n\n    No API key required. Use this when an agent needs to explain which\n    tier unlocks a workflow before sending a checkout link.\n    ","inputSchema":{"type":"object","title":"parlayapi_get_pricingArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":89,"tokensAfter":89},{"name":"parlayapi_get_props","fixed":{"name":"parlayapi_get_props","description":"Get player prop odds for a sport.\n\n    Args:\n        sport_key: e.g. \"baseball_mlb\", \"basketball_nba\"\n        markets: Comma-separated prop market keys (optional).\n            Examples: player_points, player_rebounds, player_strikeouts,\n            player_passing_yards, player_total_bases.\n        bookmakers: Comma-separated. Examples: prizepicks, underdog,\n            sleeper, draftkings, fanduel.\n        player: Filter to props mentioning this player name.\n        include_futures: Include seas","inputSchema":{"type":"object","title":"parlayapi_get_propsArguments","required":["sport_key"],"properties":{"player":{"type":"string","title":"Player","default":""},"markets":{"type":"string","title":"Markets","default":""},"sport_key":{"type":"string","title":"Sport Key"},"bookmakers":{"type":"string","title":"Bookmakers","default":""},"include_futures":{"type":"boolean","title":"Include Futures","default":false}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":273,"tokensAfter":273},{"name":"parlayapi_list_sports","fixed":{"name":"parlayapi_list_sports","description":"List available sport keys. Use these in subsequent calls.\n\n    Examples: baseball_mlb, basketball_nba, americanfootball_nfl,\n    icehockey_nhl, soccer_epl, mma_ufc, esports_lol, table_tennis_*.\n    ","inputSchema":{"type":"object","title":"parlayapi_list_sportsArguments","properties":{"active_only":{"type":"boolean","title":"Active Only","default":true}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":114,"tokensAfter":114},{"name":"parlayapi_live_search","fixed":{"name":"parlayapi_live_search","description":"Search live teams, players, and sport keys.\n\n    No API key required. Useful when the user asks for a team, player,\n    or league by natural-language name and the agent needs the exact\n    sport_key to call next.\n    ","inputSchema":{"type":"object","title":"parlayapi_live_searchArguments","required":["q"],"properties":{"q":{"type":"string","title":"Q"},"limit":{"type":"integer","title":"Limit","default":25}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":130,"tokensAfter":130},{"name":"parlayapi_set_bettable_books","fixed":{"name":"parlayapi_set_bettable_books","description":"Remember which books the user can bet at, so parlayapi_verdict scopes its\n    best-price and shop recommendations to them automatically (no need to pass\n    region/books every call).\n\n    Call this once when a user tells you where they bet (\"I'm in the US on\n    DraftKings and FanDuel\"). Pass region OR an exact books list.\n\n    Args:\n        region: us | eu | uk | au | ca.\n        books: exact CSV of book keys, e.g. \"draftkings,fanduel,novig\". Overrides region.\n    ","inputSchema":{"type":"object","title":"parlayapi_set_bettable_booksArguments","properties":{"books":{"type":"string","title":"Books","default":""},"region":{"type":"string","title":"Region","default":""}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":208,"tokensAfter":208}],"toolsChanged":12,"tokensSaved":0,"todo":[{"tool":"parlayapi_best_bets","params":["books","limit","region","min_edge","sport_key"]},{"tool":"parlayapi_best_line","params":["market","sport_key","bookmakers"]},{"tool":"parlayapi_book_coverage","params":["include_warn","window_minutes"]},{"tool":"parlayapi_checkout_link","params":["tier","email"]},{"tool":"parlayapi_consensus","params":["markets","sport_key"]},{"tool":"parlayapi_find_arbitrage","params":["markets","sport_key","min_profit","exclude_exchanges"]},{"tool":"parlayapi_find_ev","params":["markets","min_edge","sport_key","sharp_book"]},{"tool":"parlayapi_find_middles","params":["markets","min_gap","sport_key","include_props"]},{"tool":"parlayapi_get_odds","params":["markets","regions","sport_key","bookmakers","odds_format"]},{"tool":"parlayapi_get_props","params":["player","markets","sport_key","bookmakers","include_futures"]},{"tool":"parlayapi_list_sports","params":["active_only"]},{"tool":"parlayapi_live_command_center","params":["limit","sport_key"]},{"tool":"parlayapi_live_search","params":["q","limit"]},{"tool":"parlayapi_magic_link","params":["email"]},{"tool":"parlayapi_parlay_verdict","params":["book","legs","books","kelly","stake","region","bankroll"]},{"tool":"parlayapi_set_bettable_books","params":["books","region"]},{"tool":"parlayapi_signup","params":["email","agent_id","intended_use"]},{"tool":"parlayapi_source_quality","params":["limit","minutes"]},{"tool":"parlayapi_verdict","params":["away","book","home","line","side","team","books","kelly","price","sport","market","player","region","bankroll"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}