Skip to content
Language
Every call on record

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”.

Partly caught3 of 4 errors retried, 1 without
Tool calls
50
17 tools used
errors
4
8 %
Required fields
49/50
1 invented parameter
median
120 ms
Tools & behavior
ToolCallserrorsMedianslowest
Rcrm.deals.search51 · 408233 ms3,0 s
Wcrm.notes.create41 · 429195 ms1,3 s
Wcrm.deals.update31 · 500366 ms412 ms
Wcrm.tickets.create21 · 400178 ms298 ms

The overview of the recorded run, unedited.Open this view

The trace

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.

  1. crm.pipelines.list78 ms
  2. crm.owners.list65 ms
  3. crm.companies.search231 ms
  4. crm.companies.get91 ms
  5. crm.contacts.search287 ms
0+4,4s

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.

deal_9981 · amount42 000
crm.deals.update48 000
The first look

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.

The sequence

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.

  1. crm.pipelines.list78 ms
  2. crm.owners.list65 ms
  3. crm.companies.search231 ms
  4. crm.companies.get91 ms
  5. crm.contacts.search287 ms
  6. crm.contacts.get84 ms
  7. crm.contacts.get79 ms
  8. crm.deals.search408
  9. crm.deals.search341 ms
  10. crm.deals.get96 ms
  11. crm.notes.list118 ms
  12. crm.deals.update500
  13. crm.deals.update366 ms
  14. crm.associations.create214 ms
0+17,0s

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.
One call

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

crm.notes.create429
start
12:04:18.165
duration
34 ms
scenario
429 burst
Request1/1 Required fields · 0 not in schema

Creates a note and attaches it to one or more CRM records.

bodystringrequired

Text content of the note.

Q3-Abschluss dokumentiert: Nordwind-Deal auf Closed Won gesetzt, Betrag auf 78.000 € angepasst.
associationsarrayoptional

IDs of the records the note is attached to.

["deal_5561"]
Response429

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

The effects

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.

Session statepersists for this session
Dealdeal_5561211
  1. +13,4scrm.deals.update500retried +1,5s
  2. +14,9scrm.deals.update
    dealstage
    "contractsent""closedwon"confirmed later
    amount
    6200078000confirmed later
  3. +16,0scrm.associations.create

    deal_5561company_7734

One record from the run, with every field the agent touched.Open this view

Share

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
mock-d.com/try?view=…read-only
  • 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.