verify_pick: check a sealed BetsBeats pick by its hash
verify_pick takes the SHA-256 hash of a BetsBeats pick, as 64 hex characters or a unique prefix of at least 16, and checks it. Before the pick settles it only confirms the hash exists and returns when it was sealed and when the game starts. After settlement it returns the revealed text, recomputes the hash on the server and reports matches true or false.
Examples are real responses from the live server, captured on 1 November 2026.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
hash | string | yes | The commitment hash: 64 hexadecimal characters, or a unique prefix of at least 16. |
What to ask your assistant
Ask: Use BetsBeats to verify pick 93c087c1418ff2cf86be7b503e04786c10811971e5bcb169659b2933483e369a and tell me when it was sealed relative to kickoff.
Example request
Send a tools/call request to the endpoint with the tool name verify_pick and these arguments.
{ "hash": "93c087c1418ff2cf86be7b503e04786c10811971e5bcb169659b2933483e369a" }Real response
A real response for the main pick of 31 October 2026, which settled as a loss. The record shows losses as well as wins. sealed_at is about two hours before kickoff_at, and matches is true because the recomputed hash equals the published one.
{
"found": true,
"commit_hash": "93c087c1418ff2cf86be7b503e04786c10811971e5bcb169659b2933483e369a",
"sealed_at": "2026-10-31T17:28:09+00:00",
"kickoff_at": "2026-10-31T19:30:00+00:00",
"revealed": true,
"verify_url": "https://betsbeats.com/verify/93c087c1418ff2cf86be7b503e04786c10811971e5bcb169659b2933483e369a",
"notice": "For adults 21+ only. Entertainment and analysis; no wins are promised and past results do not predict future ones. BetsBeats does not take bets.",
"date": "2026-10-31",
"teams": "Northwestern Wildcats — Oregon Ducks",
"sport": "football",
"league": "ncaaf",
"is_main": true,
"market": "spread",
"selection": "Northwestern Wildcats +5.5",
"line": 5.5,
"odds": -129,
"min_odds": -129,
"result": "lost",
"final_score": "26–34",
"commit_version": 2,
"preimage": "2026-10-31|Northwestern Wildcats — Oregon Ducks|spread|Northwestern Wildcats +5.5|5.50|-129.00|-129.00|2026-10-31T19:30:00+00:00|LxlEkc0mgt3FBEbmba6ZerObF5sgK1E0I6Pa6BwRJIV0vssAKXiG2TRbhyM9Lzgt",
"recomputed_sha256": "93c087c1418ff2cf86be7b503e04786c10811971e5bcb169659b2933483e369a",
"matches": true
}The math
- The preimage is the pick's fields joined with the | character: date, teams, market, selection, line, odds, minimum odds, kickoff time and a secret salt (commit version 2).
- The commitment is SHA-256 of that string as UTF-8, written as 64 hex characters. The server computes it and returns recomputed_sha256.
- matches is true when the recomputed value equals the commit_hash that was published before kickoff. A match shows the text was not changed after sealing. It does not show the pick was good.
To check without trusting the server, hash the preimage yourself. The output equals the commit_hash above.
printf '%s' '2026-10-31|Northwestern Wildcats — Oregon Ducks|spread|Northwestern Wildcats +5.5|5.50|-129.00|-129.00|2026-10-31T19:30:00+00:00|LxlEkc0mgt3FBEbmba6ZerObF5sgK1E0I6Pa6BwRJIV0vssAKXiG2TRbhyM9Lzgt' | shasum -a 256
# 93c087c1418ff2cf86be7b503e04786c10811971e5bcb169659b2933483e369a -Errors and edge cases
A malformed hash returns an error result (isError true) with a plain message, shown first below. A well-formed hash that matches nothing returns found false with the message "No commitment matches that hash."
{ "hash": "deadbeef" }"hash must be 16 to 64 hexadecimal characters."Notes
- Before settlement only the hash, sealed_at and kickoff_at are returned. The selection is revealed after the game.
- A prefix must be at least 16 hex characters and unique among sealed picks.
- Read-only. Nothing is written and the tool cannot place a bet.
Questions
What does a match prove?
That the revealed text hashes to the value published before kickoff, so it was not edited afterwards. It does not prove the pick was good or that every pick was published.
Why is the selection missing from my result?
The pick has not settled. Until it does, only the hash, sealed_at and kickoff_at are shown.
Can I check a pick without MCP?
Yes. Paste the hash at /verify, or run the standalone seal-verify scripts from GitHub, which recompute the hash locally.
The other tools
Keep going
Today's free pick, for your email
Team, bet, price and the hash it was sealed under, on this page the moment you send. Lose or win, it stays public.
or by email
Public record of the main pick, losses included: 115 won, 44 lost. See every pick
One free pick a day by email until you unsubscribe, in one click. 21+.
21+. Entertainment and analysis, not financial advice. BetsBeats sells information and takes no bets. The server is read-only: it cannot place a bet or move money. No pick is certain, past results do not predict future ones, and nothing here promises a win or a profit. If gambling stops being fun, see /responsible.