Get an email, Slack message or signed webhook when an sBTC withdrawal stalls, the peg moves in a way it shouldn't, or a PoX-5 admin role changes. One line per check, no contract to name.
sBTC and PoX-5 are watched as a whole: there is no target and no plan. Each named check runs once for everyone, from secondlayer's sBTC and PoX-5 feeds, and alerts every account that holds it.
sentinel when sbtc stall
$ sentinel when sbtc stall --gap 5 --open 40 --to slack:#pegstall alerts when a withdrawal is due (6 Bitcoin confirmations) and no sweep confirms for more than --gap blocks (default 7), or when a withdrawal stays open --open blocks (default 30) with no accept or reject. Over MCP, send the same text to the when tool: when { line: "sbtc stall --gap 5 --open 40" }.
sentinel when sbtc peg --to slack:#peg
$ sentinel when sbtc rotation --to emailpeg alerts when the newest peg output is spent outside a sweep, when a sweep moves it to a script the signer registry doesn't derive, or when a confirmed sweep waits more than 90 minutes for its acknowledgment on Stacks. rotation alerts when deposits completed more than --after (default 6h) after a key rotation are still locked to an earlier key set.
sentinel when pox5 admin --to slack:#oncall
$ sentinel when pox5 bond-setup --to email
$ sentinel when pox5 early-exit --to slack:#oncall| Check | Alerts when |
|---|---|
pox5 admin | The bond-admin or pause-admin role moves, or signer rewards are paused. Urgent. |
pox5 bond-setup | A bond is set up. Normal inside the earlier bonds' parameters, urgent when its target rate, ratios, early-exit script, a staker or a max-sats is outside them. |
pox5 early-exit | An L1 bond's Bitcoin output is spent before its lock opens, by a staker who never announced an early exit. Urgent. |
| Check | Alerts when |
|---|---|
sbtc payout | An accepted withdrawal's sweep output doesn't pay its recipient exactly what it asked, or a sweep pays an output no accept explains. |
sbtc mint | A completed deposit isn't backed by a sweep that spends it. A v2 deposit hides its recipient, so it says "v2: not verifiable now", never unbacked. |
sbtc protocol-update | A protocol contract (governance, deposit, withdrawal) is replaced. Urgent, with the code diff. |
sbtc reserve | The peg holds more than 0.01 BTC less than the sBTC it backs, 3 sweeps in a row. |
Facts only: the transactions, the blocks, the numbers, and where each came from. No model writes an alert. Bitcoin transactions come from secondlayer's SPV proofs, checked before use. Data that can't be read, or reads stale, makes a check wait and retry; it never alerts.
| Paid tier | System watches are refused on Free with 402 and sentinel upgrade builder. They are included on a paid tier and don't count toward your contracts. |
| Shared checks | A check runs once for everyone. You choose which to hold, their parameters and where alerts go; you don't change the logic. |
| After the block | An alert follows the block or Bitcoin transaction that holds the event, not the mempool. |
| Witness fields | Fields read from a transaction's witness (a deposit's recipient, max fee and lock keys) come from the transaction bytes, which SPV doesn't prove. |
| Cost | See Pricing. Events are never billed. |