Most onchain alerts start the same way: a script that reads a value, compares it to a number, remembers the last result in a file and posts to a webhook, kept alive by a cron job on a server someone has to maintain. evmquery Monitors replace that script with a saved expression that evmquery evaluates for you.
TL;DR
A monitor is an evmquery expression plus a schedule and a notification channel. evmquery runs it against live chain state and notifies you when it fires. The Free plan includes 3 active monitors checked every 15 minutes.
What shipped
Monitors are available in the web app, over REST and through the evmquery MCP server. You define what to read, when to notify, how often to check and who hears about it. A guided form walks through those steps, and three templates cover the common cases: a balance falling below an amount, a value moving by a percentage, and an NFT changing hands.
How it works
- An expression reads live state. The same expressions you already use with evmquery queries, on Ethereum, Base, BNB Chain and Polygon.
- A trigger decides when to fire. A
conditiontrigger fires when a boolean turns true. Achangetrigger fires when a value moves away from its baseline: the first value it saw, reset each time it fires. The trigger guide covers both. - A schedule runs the check. Any interval that is a multiple of 60 seconds, up to 24 hours, subject to your plan’s minimum.
- Channels deliver the result. Email to members of your organization, or an HTTPS webhook that you receive with a small handler. A monitor keeps its event history even with no channel attached.
Every monitor is test-evaluated when you create it, so a typo in the expression fails immediately instead of at 3 a.m.
An example
This monitor fires when a wallet holds less than 1,000 USDC:
token.balanceOf("0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045") < parseUnits("1000", 6)The contract alias token points at the USDC contract on Ethereum, and the trigger is condition. It fires once when the balance crosses below the line, then stays quiet until it has gone back above and below again. Swap in your own wallet and token.
Free plan limits
- 3 active monitors.
- Checks every 15 minutes.
- Monitor checks do not use query units.
Paid plans raise these limits. Paused monitors do not count toward the active limit.
Where to start
Open the Monitors page to see what a monitor can watch, or go straight to the app and start from a template. If you build with agents or automation, the developer and AI user pages cover the REST and MCP routes.
Next steps
- Create and manage monitors from Claude or Cursor over MCP.
- Receive monitor webhooks in your own service.
- Condition and change triggers for writing the expression.


