Run the same market routine every morning and most of it will read like yesterday. The walls are at the same strikes. The calendar has the same entries. After a week you stop reading, and that is the day something moves. An agent that reports only differences fixes the habit. It needs a little more setting up than one that reports everything.
Decide what counts as a change
The agent cannot know what matters to you. Write it down. A wall on a different strike than last time. Spot on the other side of a wall. A release added to the calendar. An earnings date that moved. A coin on the trending list for the first time. Each of these is a yes or no test against two readings.
Leave adjectives out of the rules. A model asked to flag anything significant will decide for itself what significant means, and it will decide differently each day.
It needs the last report
A model starts fresh in every conversation. It has no memory of what it told you yesterday unless your app keeps the earlier report or you hand it back. Without the before, there is no difference to compute. An agent that reports a change with nothing to compare against has made the change up.
Some of the before lives on the server. get_dealer_levels has a history option that returns one ticker’s delayed level history. get_robinhood_trending, a paid tool, marks first-time entries itself. Where the server holds the record, let the agent read it there. Why a record beats a single reading is in one reading tells you where, a series tells you which way.
Nothing changed is a full report
On a quiet day the report is one line: nothing changed, here is what was checked, here is how old each reading was. That line matters. It separates a quiet market from a routine that did not run.
Keep a third case apart from both. If a tool returned an error, the agent did not find no change. It found nothing at all. The report should say which reading could not be fetched.
A new time is not a new reading
Every response carries a fresh as_of. A careless agent sees a different timestamp and reports an update. Tell it to compare the values and to quote the times beside them. The free dealer levels are delayed by design, so their age is steady and expected. A level that is the same as yesterday, with a current stamp, is no change.
Keep the full version one question away
A report of differences hides everything that stayed put. Sometimes you want the whole picture. Keep a second instruction for that, or use a layout like the one in a watchlist agent that only reads. Save both kinds of report. The pile becomes the record described in what to log so you can check an agent later.
Where NoVo fits
Every reading on the MCP & API carries its time, so two runs can always be told apart. The agent does the comparing. It reports that something moved and never what to do about it.