← WebMCP Directory

Tool tree

negativeev.com

liveFinance & Crypto
https://negativeev.com/
Paste a bet and NegativeEV checks it against thousands of simulated games to tell you whether the price is good, bad, or fair.
Explore capabilities
check_betAnswer

Grade a sports bet against NegativeEV's game simulations. Input the bet as plain text (teams/players, market, line, odds); a multi-leg parlay in one string is graded leg by leg and priced as a whole. Use it when the caller has a SPECIFIC bet to evaluate — it prices a bet you name, it does not search for good bets, so there is nothing to send for 'what should I bet tonight'. Call `get_slate` first if it isn't known that today's games are simulated. Every result leads with `status`: `graded` (every leg scored — this is the only status that spends a check), `partial` (some legs scored), `ungraded` (the bet was understood but no leg is covered by the sims), `no_bet_found` (no bet recognized in the text), or `no_slate`, `unsupported_market`, `unsupported_sport`. When a leg doesn't score, `ungraded_legs[].reason` says why and `retry.rephrasing_helps` says whether re-wording could change the answer — it is false whenever the bet parsed, so do NOT resend the same bet in different words to work around an `ungraded` result. Covers MLB, WNBA, PGA, and ATP; any other sport returns unsupported_sport. Games that already started still grade, against the simulations from before first pitch (a pre-game projection, flagged as such).

View tool JSON
{
  "name": "check_bet",
  "kind": "answer",
  "impl": "imperative",
  "description": "Grade a sports bet against NegativeEV's game simulations. Input the bet as plain text (teams/players, market, line, odds); a multi-leg parlay in one string is graded leg by leg and priced as a whole. Use it when the caller has a SPECIFIC bet to evaluate — it prices a bet you name, it does not search for good bets, so there is nothing to send for 'what should I bet tonight'. Call `get_slate` first if it isn't known that today's games are simulated. Every result leads with `status`: `graded` (every leg scored — this is the only status that spends a check), `partial` (some legs scored), `ungraded` (the bet was understood but no leg is covered by the sims), `no_bet_found` (no bet recognized in the text), or `no_slate`, `unsupported_market`, `unsupported_sport`. When a leg doesn't score, `ungraded_legs[].reason` says why and `retry.rephrasing_helps` says whether re-wording could change the answer — it is false whenever the bet parsed, so do NOT resend the same bet in different words to work around an `ungraded` result. Covers MLB, WNBA, PGA, and ATP; any other sport returns unsupported_sport. Games that already started still grade, against the simulations from before first pitch (a pre-game projection, flagged as such).",
  "inputSchema": {
    "type": "object",
    "properties": {
      "bet": {
        "type": "string",
        "description": "The bet text, e.g. 'Shohei Ohtani over 1.5 total bases -120'"
      }
    },
    "required": [
      "bet"
    ]
  },
  "page": "/"
}
get_slateAnswer

Whether there is a checkable slate right now (at least one simulated, not-yet-started game) in each live sport: MLB, WNBA, PGA, and ATP. Pass `sport` to ask about one; omit it for all of them. This is the free pre-check for `check_bet`: call it before grading when it isn't known that today's games are simulated, and call it after an `ungraded` result instead of re-wording the bet, because `ungraded` means the game isn't on the simulated slate rather than that the wording was wrong. Free — spends no check.

View tool JSON
{
  "name": "get_slate",
  "kind": "answer",
  "impl": "imperative",
  "description": "Whether there is a checkable slate right now (at least one simulated, not-yet-started game) in each live sport: MLB, WNBA, PGA, and ATP. Pass `sport` to ask about one; omit it for all of them. This is the free pre-check for `check_bet`: call it before grading when it isn't known that today's games are simulated, and call it after an `ungraded` result instead of re-wording the bet, because `ungraded` means the game isn't on the simulated slate rather than that the wording was wrong. Free — spends no check.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "sport": {
        "type": "string",
        "enum": [
          "MLB",
          "WNBA",
          "PGA",
          "ATP"
        ],
        "description": "One of: MLB, WNBA, PGA, ATP. Omit to get every live sport."
      }
    }
  },
  "page": "/"
}
get_usageAnswer

How many bet checks the caller has left and when the next one frees up — the daily allowance for anonymous callers, the hourly pace window for accounts. Call it before grading several bets in one turn, to know how many will fit, and after a check is refused for quota, to know when to retry. It reports the budget only; `check_bet` is what spends it. Free — spends no check.

View tool JSON
{
  "name": "get_usage",
  "kind": "answer",
  "impl": "imperative",
  "description": "How many bet checks the caller has left and when the next one frees up — the daily allowance for anonymous callers, the hourly pace window for accounts. Call it before grading several bets in one turn, to know how many will fit, and after a check is refused for quota, to know when to retry. It reports the budget only; `check_bet` is what spends it. Free — spends no check.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "page": "/"
}