Mockd Observe
Mockd captures the full conversation between your agent and its tools. Inspect each call and replay the session to find where the model misreads a tool, before it touches production.
Everything below renders one recorded run, the same session /try opens under “Watch a demo trace”.
- Tool calls
- 50
- 17 tools used
- errors
- 4
- 8 %
- Required fields
- 49/50
- 1 invented parameter
- median
- 120 ms
| Tool | Calls | errors | Median | slowest |
|---|---|---|---|---|
| Rcrm.deals.search | 5 | 1 · 408 | 233 ms | 3,0 s |
| Wcrm.notes.create | 4 | 1 · 429 | 195 ms | 1,3 s |
| Wcrm.deals.update | 3 | 1 · 500 | 366 ms | 412 ms |
| Wcrm.tickets.create | 2 | 1 · 400 | 178 ms | 298 ms |
The overview of the recorded run, unedited.Open this view
One run. Four ways to read it.
Four views of the same recorded session, from one sentence about the whole run down to a single argument in a single call. Which one you need depends on what you are looking for, so all four are one click apart.
The verdict
Errors retried, required fields set, writes attempted. All of it stated before you open a single call.
- Tool calls
- 50
- errors
- 4
- median
- 120 ms
The sequence
Every call on one time axis, as wide as it took. A retry storm has a shape you recognise.
- crm.pipelines.list78 ms
- crm.owners.list65 ms
- crm.companies.search231 ms
- crm.companies.get91 ms
- crm.contacts.search287 ms
One call, opened
Arguments joined against the tool's own schema, the response beside them, the latency named.
- dealIdrequired
- amountrequired
- stagemissing
What changed
The records the run touched, field by field, including the ones it wrote and read back.
A verdict on the run, before you open a single call
Fifty calls are more than anyone reads line by line. So the viewer states its reading first: did the agent recover from what went wrong, did it fill every required field, and how much of the run wrote rather than read.
The verdict is derived, not scored
It names what happened: errors retried, required fields set, writes attempted. There is no grade and no threshold to argue with.
Required fields are checked against the schema
Every argument is joined against the tool's own input schema. A missing required field and an invented parameter are counted separately, because they are different mistakes.
Reads and writes are counted apart
Whether a tool mutates comes from the catalog, not from its name. Where the catalog is silent, the run says so instead of guessing.
Every call on one time axis
Each bar is one tool call, placed where it happened and as wide as it took. The shape of a run is usually the first thing that gives it away: a retry storm, a serial chain that should have been parallel, one call that eats a third of the wall clock.
- crm.pipelines.list78 ms
- crm.owners.list65 ms
- crm.companies.search231 ms
- crm.companies.get91 ms
- crm.contacts.search287 ms
- crm.contacts.get84 ms
- crm.contacts.get79 ms
- crm.deals.search408
- crm.deals.search341 ms
- crm.deals.get96 ms
- crm.notes.list118 ms
- crm.deals.update500
- crm.deals.update366 ms
- crm.associations.create214 ms
The opening of the recorded run. · 14 of 50 Calls · 16,2 sOpen this view
- R / W
- Reads and writes, marked before the tool name.
- Bar colour
- One blue that darkens with duration. It measures time, never state.
- Amber row
- A call that failed. Colour means failure here and nothing else.
The call, read against the tool's own schema
This is where a trace stops being a log. Mockd knows the tool's description and input schema, so it can show what the model read before it filled anything in, and which of the fields it sent the schema actually declares.
Tool & arguments
The exact tool the model picked and the arguments it filled in, each one marked required, optional, or not in the schema at all.
Response
The synthetic payload Mockd returned, shaped like the real thing, error body included, so your retry logic meets a realistic one.
Latency & status
How long the call took and how it ended. Duration carries the blue ramp; the status code stands on its own.
Injected scenario
When a failure was staged, the call says which scenario staged it. A 429 you asked for should never look like a bug you found.
The agent waited and tried again:crm.notes.create · 201 · 156 ms
- start
- 12:04:18.165
- duration
- 34 ms
- scenario
- 429 burst
Creates a note and attaches it to one or more CRM records.
Text content of the note.
IDs of the records the note is attached to.
Artificially injected by the Mockd scenario: 429 burst
{
"error": "RATE_LIMITED",
"message": "Too many requests. Injected by Mockd scenario 'burst'.",
"retryAfterMs": 260
}The call detail, as it opens in the viewer.Open this view
What the run left behind
The mock keeps state for the length of the session, so a write is visible afterwards: the record it created, the fields it changed, and the value each field held before. A rejected write is listed too, with what it tried to do.
Before and after, per field
The earlier value comes from a call that read it, not from a guess. Where a later read confirms the new one, the field says so.
Rejected writes stay visible
An attempt that failed is part of what happened. It keeps its place in the sequence instead of disappearing from the summary.
- +13,4scrm.deals.update500retried +1,5s
- +14,9scrm.deals.update
- dealstage
- "contractsent""closedwon"confirmed later
- amount
- 6200078000confirmed later
- +16,0scrm.associations.create
deal_5561 ↔ company_7734
One record from the run, with every field the agent touched.Open this view
Send the run, not a screenshot
Every run has a read-only link. Whoever opens it sees the full trace, every call, every argument, every injected failure, with no account and nothing to install. It stays available for a day after the run ends, then the run and its link are gone together.
- No account for whoever opens it
- The whole trace, not a cropped screenshot
- Gone with the run: a day after it ends
- crm.contacts.search84msok
- crm.deals.create196msok
- crm.notes.create12ms429
- crm.notes.create141msok
See your agent's first trace
Point your agent at a Mockd endpoint and watch every tool call land in real time.
- crm.pipelines.list78 ms
- crm.owners.list65 ms
- crm.companies.search231 ms
- crm.companies.get91 ms
- crm.contacts.search287 ms
- crm.contacts.get84 ms
- crm.contacts.get79 ms
- crm.deals.search408