An agent tells you something about the market. An hour later you want to know whether it was reading a tool or making it up. If all you kept is the sentence, you cannot tell. A small log fixes that. It does not need to be clever. It needs to hold the right few things.

The question

Save what you asked, word for word. Many disputes with an agent turn out to be about the question. You meant the market and it heard one ticker. The exact wording settles it.

The calls

Save the name of every tool the agent called and the arguments it passed. This is the most useful part of the log. It shows at once whether a figure about NVDA came from a call about NVDA. It also shows when no call was made, which means the answer came from the model’s memory.

What came back

Save the payload, or at least the fields the answer leaned on. With NoVo’s tools that includes three freshness fields on every reading: as_of, age_seconds and as_of_kind. Save any gated or delayed flags too. If the tool returned an error, save the error. A refusal is evidence of what the agent knew.

What the agent said

Save the final answer as written. Then the check is mechanical. Every number in the answer should appear in a payload from the same turn. Every time it states should match an as_of. Every caveat in the payload should have survived into the prose. A number with no payload behind it is the case described in the number the model made up.

Save the time of the conversation itself, apart from the time of the reading. The gap between them is the age you were acting on. If the agent quoted a level at ten and the reading was from much earlier, the log shows it. Whether that age was expected is the question in delayed data and stale data.

What this log is for

It checks faithfulness. Did the agent report what the tool returned, with its time and its caveats. That is a question with a yes or no answer, and the log gives it.

It also makes a reading repeatable. A snapshot from one morning can be set beside the next, which a single answer cannot do. The value of keeping readings over time is the subject of a snapshot is not a series.

How to keep it

Many AI apps show tool calls and their results in the conversation, so the simplest log is the saved conversation. If you run your own agent, write each turn to a file with the fields above. Keep it plain. A log you can search by ticker and date is enough.

A check like this only works if the tool’s response is specific. Named fields, stated times and explicit refusals give you something to compare against. That is how the responses on the MCP & API are built.