ENSign in
MCP tool

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

NameTypeRequiredDescription
hashstringyesThe 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.

tools/call · verify_pick
{ "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."

tools/call · verify_pick
{ "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 (not the main pick)

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.

Unlock today's pick in Telegram →Telegram channel: sealed picks and the record, 21+ →

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+.