---
name: check-a-bet
description: Check whether a sports bet is +EV or -EV using NegativeEV's simulation-based bet checker. Use when the user shares a bet slip, asks whether a bet or parlay is good, or wants a bet on MLB, WNBA, PGA or ATP graded before placing it.
---

# Check a bet on NegativeEV

NegativeEV (https://negativeev.com) grades bets on MLB, WNBA, PGA and ATP by
comparing them against thousands of simulations, each game simulated
play-by-play, comparing the simulated outcome distribution to the price the
sportsbook is offering.

## Web flow

1. Open https://negativeev.com/ — or deep-link a bet directly:
   `https://negativeev.com/?b=<url-encoded bet text>` runs the check on load.
2. Type or paste the bet (e.g. "Shohei Ohtani over 1.5 total bases -120"), or
   upload a screenshot of the slip.
3. Read the verdict: every leg gets the simulator's probability, the implied
   probability of the offered odds, and the resulting edge, plus a written
   read of the factors behind it.

## HTTP flow (the same endpoints the web app uses)

Not a stable public API; response shapes can change. Quotas and rate limits
apply — see https://negativeev.com/auth.md for authentication.

1. `POST https://negativeev.com/extract` with `{"text": "<bet text>"}`.
   Returns parsed `legs` (or `no_slate`, `unsupported_market`,
   `unsupported_sport` when the bet can't be graded — stop there if so).
2. `POST https://negativeev.com/check` echoing what extract returned:
   `{"text": "...", "legs": [...], "parlay_price": ..., "game_date": "...",
   "model_date": "..."}`. Returns `picks[]` (per-leg simulated probability
   and edge) and `parlay` (combined edge when multiple legs).

## MCP server

A stateless MCP server (Streamable HTTP) at `POST https://negativeev.com/mcp`
exposes `check_bet`, `get_slate`, and `get_usage` — the same flow as the HTTP
endpoints, one tool call instead of two requests. Server card:
https://negativeev.com/.well-known/mcp/server-card.json. Send a signed-in
user's Supabase access token as `Authorization: Bearer` on the POST to use
their account quota.

## In-browser tools (WebMCP)

Pages on negativeev.com register in-page tools for browser-driving agents
through `document.modelContext.registerTool` — the same three tools the MCP
server exposes, with the same result shapes: `check_bet` (grade a bet from
text), `get_slate` (is there a checkable slate right now), and `get_usage`
(checks remaining). An in-page check spends from the web allowance, not the
separate MCP one, because it posts to the same endpoint the site's own
composer does.

## Constraints

- Sports covered track the live slate: MLB is always on, other sports follow
  their go-live flags. The MCP tool descriptions and GET /config list the
  current set. A bet in an uncovered sport returns `unsupported_sport`.
- Bets on games that already started still grade, against the simulations from
  before first pitch (a pre-game read, flagged as such).
- Anonymous callers get 10 free checks a day on the HTTP endpoints, and a
  separate allowance of 100 a day over the MCP server; a signed-in user's
  `Authorization: Bearer <token>` makes checks unlimited (per-hour pace cap).
  No agent self-registration.
- Verdicts are estimates from simulations, not guarantees.
