Report every declared external tool server's health and cost
Answers, per declared MCP tool server, whether it is up, since when, how many consecutive connection attempts have failed and why the last one did — plus how many calls it has been asked to make and how many characters of model context its presence in the budgeted catalogue spends. Health is taken live off an MCP ping while answering, so a server holding an open socket and answering nothing reads as down rather than as connected. The whole sweep is bounded by the request: the pings go out in parallel, so eight silent endpoints cost one ping ceiling between them.
Response
One entry per declared tool server, in name order.
The name the server was declared under.
waiting-for-sign-in is a connection attempt held open for a PERSON: the server demanded OAuth, the host put an authorization URL in front of whoever is watching, and nothing else is wrong. It is reported separately from connecting because the two need opposite reactions — connecting resolves itself, this one resolves only when somebody opens signInUrl — and because the alternative was a five-minute "connecting" whose eventual failure read "context canceled" and never named the sign-in.
connecting, connected, down, waiting-for-sign-in x >= 0Consecutive failures since this server last connected.
x >= 0Tool calls this server has been asked to make.
x >= 0Characters of model context this server's catalogue entry spends.
x >= 0When the server entered this status — for waiting-for-sign-in, when the host started waiting on the person.
Round trip of the live MCP ping taken while answering. Absent when the server is not connected, or when the ping failed — in which case lastError says so.
x >= 0Why the last attempt, session or ping failed.
The authorization page a person must open to finish this server's sign-in. Present only while status is waiting-for-sign-in.
When this sign-in window closes. Present only while status is waiting-for-sign-in.

