The tool calls that actually ran.

MCP: observe() records host tools/call. Personal agents: wrap records calendar, mail, and booking jobs.

What ran

Live
f

fetch

A host called the MCP. The call failed.

Failed
g

get_calendar

A person asked. The wrap found the meeting.

Found
b

book_table

A person asked. The wrap checked. It was not there.

Miss

Tool calls and jobs from real use.

What ran. How long. Whether it found it.

observe() on an MCP. wrap on a personal agent. A second look when you name a read.

MCP

observe() records tools/call on your MCP.

observe()
tools/call → fetch
kept

What we watch

When Cursor or another host calls a tool on your server.

MCPSDK
Functionobserve()
Nottrack()
URLSTAYS PUBLIC

How it gets in

pip install agent-status-sdk. Call observe() after tools are registered. Do not use track().

lookup
create_invoice → get_invoice
same request

Write, then read

lookup= is the write tool then the read tool. We pass the new id on the same request.

Personal agents

wrap records the jobs the agent ran for a person.

JobsWRAP
get_calendarFOUND
create_ticketRAN
book_tableMISS

What we watch

Calendar, mail, booking. The job, not the agent.

Agent()
wrap_tools → get_calendar
looked up

How it gets in

Agent() and wrap_tools on the dispatcher.

1
2
3
write → find sibling → readON THE BOX

The second look

After a job the wrap finds a list or get sibling on the machine. You do not set a second URL.

Found or miss

The second look says whether the work is there.

create_ticketFOUND
WriteRAN
ReadTICKET-184
CheckFOUND

Found

The read came back with the thing the write just made.

book_tableMISS
WriteRAN
ReadEMPTY
CheckMISS

Miss

The write ran. The read did not find it.

lookupOPTIONAL
Map setSECOND CALL
No mapNO SECOND CALL
GuessNEVER

No map, no second call

If there is no read pair, we keep the job and the time. We do not invent a check.

On the page

Each row is a job. Threads and alerts go on top of that.

User TrafficROW
Jobget_calendar
Time1.4s
CheckFOUND

The row

Job name, how long it took, and whether the check found it.

SessionGROUPED
get_calendarFOUND
create_ticketFOUND
book_tableMISS

The thread

Jobs from one session stay together.

AlertsFIRED
SlackSENT
WebhookSENT
PagerDutyPAGED

A miss after a ship

A miss on a new release is the cut. Email or webhook, same channels you already use.

What we keep

The wrap checks on your machine. We never sign into Google.

KeptTHREE
JobNAME
TimeDURATION
CheckFOUND OR MISS

Three things

The job name, how long it took, and whether it found it.

Not keptOFF
NamesNO
ChatNO
Calendar textNO

What we do not keep

Names, the chat, or calendar contents.

ProcessINDEPENDENT
Wrap missTOOLS RUN
Block the jobNEVER
RequiredNO

The tools still run

If the wrap misses the call, the tool still runs. We do not block the job.

FAQ

Common questions

QuestionAnswer
Are MCP and personal agents the same thing?No. MCP uses observe() on the server. Personal agents use Agent() on the dispatcher. Same dashboard tab. Different function. The wrong one is rejected.
Do I need an SDK?For MCP live traffic, yes. observe() on the server. For a personal agent, wrap the dispatcher.
What is lookup?The write tool then the read tool. On MCP you name the pair. On a personal agent the wrap finds a list or get sibling on the machine.
Do you log into Google?No. The wrap checks calendar and mail on your machine. We never sign into Google. We do not keep names, the chat, or calendar contents.

See the jobs that ran.

Add observe() on an MCP, or wrap on a personal agent.

Cover your blind spots