pinecallDocs
Guides / Reading a call

Reading a call

One call in full: the turns, the tools, the state after each, the latency, the verdicts.

Every call leaves a log: each turn, each tool call and its result, each change of state, the latency of each turn, and at the end what it cost and how the judges answered. This page is how to read one, in the console and from a terminal.

What a call is made of#

The log is a list of entries in order, each with a seq. A judge's verdict cites the seqs it rests on, so every claim about a call points at a line of it.

Entry What it records
call.started who, on which channel, in the sandbox or production; the state the call opened in, and the persona when one played the caller
turn.user, turn.agent what each side said; an agent turn carries its metrics
tool.call a tool the model called, with its arguments
state.changed the agent's whole state after a change
docs.sources, memory.ops what a lookup returned, and the facts memory recalled or wrote
call.ended why the call ended and who ended it
call.summary the outcome in one line, duration, turns and cost
call.score every judge's verdict, with its reason and the seqs it cites

In the console#

Open Calls, then a call, or paste a call id into the search box. The page follows a live call as it happens and stays on the same URL when it ends.

The middle of the page reads four ways, and the browser keeps your choice for the next call:

View Shows
Chat bubbles, each tool one line
Transcript the turns, the tool calls with their arguments and output, confirmations, a supervisor's moves
Log every entry in seq order, turns with their latencies, state changes, lookups
Trace each exchange on a time axis: caller speaking, end of turn, model (first token marked), voice (first byte), tools, agent speaking

On the right: the agent's state, the room and its participants, the prompt block by block (name, hash and length, never the text), and the metrics.

When the call is over#

The pane opens with what it came to:

  • the outcome, and the score: each judge's verdict, its sentence, and the seqs it cites as links into the log;
  • the latency per measure, median and worst, with the silence before a reply and the agent's share of the talking;
  • Where the time went: every second given to one part (the caller, the agent, both at once, waiting on a tool, on hold) so the parts add up to the call's length;
  • the cost by model, and the recording when the call kept one.

At the foot of the log: Re-check by code (Replaying a real call), Promote to a golden, Erase this call and Do not call this number. Attach a judge scores a call nobody judged.

From a terminal#

Terminal
$ pinecall sessions --limit 3
clinica-norte · 3 calls

● call_314b0306e2a64daba6b6dbab129540c0  web inbound     16m 27s  live                    —
  call_df5aaa81ac7142f5a2c6f9b77033d23e  web inbound         31s  caller_hung_up    $0.0000  Clínica Norte, good morning…
  call_29d7c7b6cdd643de9c659984a0125c8c  web inbound          3s  caller_hung_up    $0.0205  Perfect. On Thursday we have…

pinecall sessions <call> prints one call's ending: the outcome, why and when it ended, the cost with a line per priced row, and the score, one line per judge with its question and, when it did not hold, its reason.

Terminal
$ pinecall sessions call_5b1f0e9d2c7a4e8f9a1b3c5d7e9f1a2b
call_5b1f0e9d2c7a4e8f9a1b3c5d7e9f1a2b

  outcome   Understood, Ana. Your Thursday appointment at ten with Dr. Vidal stands for now.
  ended     caller_hung_up · 1m 24s · 4 turns
  cost      $0.0505
            api.anthropic.com claude-haiku-5-5           17,621 input_tokens       $0.0018
            api.anthropic.com claude-haiku-5-5           312 output_tokens         $0.0002
            Cartesia sonic-3                             623 characters            $0.0312
            Deepgram flux-general-multi                  80.6 audio_seconds        $0.0105
            twilio twilio-inbound/+1                     2 minutes                 $0.0068

The score follows the cost: a line saying whether every judge held, then one line per judge.

It reads the sandbox's calls; add --prod for production's, and --agent <slug> outside the agent's directory. --json prints what the gateway answered.

A call can end with no score. Then sessions says not judged and why, for example when the org turned judging off. A call nobody judged is neither a pass nor a failure.

What to read first#

  • A judge that broke: follow its seqs into the Log view. The reason names the turn.
  • A slow call: the Trace view shows which stage took the time: the ears, the model, a tool or the voice.
  • A wrong answer: the state.changed before that turn and the docs.sources of that turn. Then pinecall prompt --state <file> prints the prompt that state produces.
  • A call worth keeping: pinecall runs promote <call-id> writes it to test/candidates/ as a golden candidate. Edit it and move it into goldens/ yourself.

Next steps#