Skip to main content
An uptime monitor calls, texts, or emails one of your live agents on a fixed interval, grades what happened, and records UP or DOWN. When the verdict flips, it notifies Slack, email, or PagerDuty. It works on voice, SMS, and email agents, inbound and outbound.

Checks

A monitor grades one or more checks. Every monitor needs at least one check that names what to grade, otherwise there is nothing to measure and the monitor is rejected. You can also point a check at one of your own Digital Humans so the probe uses that persona instead of the default. A Digital Human on its own is not gradable, so pair it with one of the checks above. Email monitors grade a different set: Agent Responds (the agent replied), Authentication (the reply passed SPF, DKIM, and DMARC), Spam (it cleared spam filtering), Bounced (it was delivered, not bounced), and Latency (send to reply, under a threshold). For email monitors, the agent’s inbox must allowlist our sending domain, mail.bluejaysims.com. Corporate mail (Google Workspace, Microsoft 365) quarantines an unrecognized sender, so without the allowlist the probe email is held and never reaches the agent.

Managing monitors via the API

Everything the UI does — create, update, pause and resume, delete — is available over the REST API and as MCP tools, so tooling that updates your agent can update its monitor in the same step. Updates are partial: pass only the fields you change.

Custom caller

The custom caller is one entry in the monitor’s checks array:
Send it alongside the template checks with Update Uptime Monitor. checks replaces the whole array, and the Digital Human only picks who places the probe, so keep at least one enabled check with a checkType or customMetricId in the payload. To go back to the default caller, resend the checks without the digitalHumanId entry.

How latency is measured

Latency is the gap between your caller finishing and your agent starting to speak, averaged across the conversation. The agent’s opening greeting is not included. The first measured gap is the agent’s first real answer. Time to greeting is covered by Agent Responds instead. SMS and webchat monitors measure the same gap, between your message and the agent’s reply. Text replies take far longer than voice, so the default threshold there is 60000 ms instead of 3000 ms. Set latency_threshold_ms to whatever your agent should beat. Email monitors measure latency, from the probe email being sent to the agent’s reply arriving. Mail is asynchronous, so the default threshold is far higher; set latency_threshold_ms to your agent’s expected reply time.

Alerting after repeated failures

Latency is an average over a single conversation and Agent Malfunction is a judgment call, so one bad result is not always a real problem. Set alert_after_failures on a check and it only counts toward DOWN once it has failed that many checks in a row. A single pass resets the count.
Leave Agent Responds at the default of 1. An agent that cannot be reached is not ambiguous and should page immediately.

Verdicts

Uptime percentage is UP divided by UP plus DOWN. UNKNOWN is excluded, so it never counts for or against you. Alerts fire only on a measurable flip between UP and DOWN. UNKNOWN never pages.

Frequency

Pick an interval that comfortably exceeds how long a conversation takes. SMS conversations run for minutes, so use 10 minutes or more; a check that has not finished in five minutes is recorded as UNKNOWN.

Outbound agents

Bluejay never dials your outbound agent. Something on your side has to start the conversation, which is either Vapi or Retell placing the call automatically, or your own outbound trigger webhook. An outbound agent with neither is rejected, because every check would time out.