This prompt is designed for Site Reliability Engineers (SREs) and platform engineers who are building and operating a mesh of AI agents. The core job-to-be-done is to produce a standardized, machine-readable health check response from an agent so that an external orchestrator, load balancer, or monitoring system can make a reliable routing decision. The ideal user is someone integrating an agent into a production control plane where decisions about liveness, readiness, and degraded operation must be programmatic, not based on a human reading a status message. To use this prompt effectively, you must provide the agent with a concrete list of its internal dependencies, external tool capabilities, and current operational state, as the prompt's value comes from forcing the agent to introspect and report against a known contract.
Prompt
Agent Heartbeat and Health Check Prompt

When to Use This Prompt
Defines the operational context for the Agent Heartbeat and Health Check Prompt, identifying the target user, required inputs, and scenarios where the prompt is inappropriate.
You should use this prompt when you are building a multi-agent pipeline, an agent mesh, or any system where a central orchestrator must decide whether to route a new task to a specific agent. The structured payload it generates, containing fields like agent_id, liveness, readiness, and a list of degraded_capabilities, is designed to be parsed by a control plane and fed into metrics dashboards or automated circuit breakers. However, do not use this prompt for generating human-readable status dashboards or for agents that lack a defined set of dependencies and capabilities to report against. If an agent has no self-knowledge of its tooling or internal state, this prompt will produce a generic and unactionable response that creates a false sense of security.
Before implementing this prompt, ensure your agent runtime can inject the necessary context about its own health. The prompt is a contract enforcement mechanism, not a diagnostic tool. It works by asking the agent to evaluate its own state against a provided schema, but it cannot replace actual external health checks on the agent's dependencies. The next step is to pair this prompt with an application-layer validator that confirms the output conforms to the expected schema and to set up an alert if the readiness field ever returns false without a corresponding degraded_capabilities entry, as this indicates a failure in the agent's self-reporting logic.
Use Case Fit
Where the Agent Heartbeat and Health Check Prompt delivers reliable operational visibility and where it introduces risk. Use these cards to decide if this prompt fits your agent monitoring architecture before you integrate it into production runbooks.
Good Fit: Multi-Agent Orchestration Platforms
Use when: you operate a platform where multiple specialized agents depend on each other's availability. A standardized heartbeat contract lets orchestrators detect stalled agents before they block downstream workflows. Guardrail: enforce a common schema across all agents so health checks are machine-parseable and comparable.
Bad Fit: Single-Agent Chatbots Without Uptime SLAs
Avoid when: you run a single conversational agent with no internal orchestration dependency. Adding a heartbeat endpoint creates operational overhead without benefit. Guardrail: use this prompt only when agent-to-agent availability matters; for simple bots, rely on existing HTTP or gRPC health checks.
Required Input: Agent Capability and Dependency Map
Risk: generating a health check without knowing which tools, models, or downstream agents the target agent depends on produces a false sense of safety. Guardrail: always provide a current capability registry and dependency graph as input so the prompt can distinguish between 'agent alive' and 'agent functional.'
Operational Risk: False-Positive Liveness Signals
Risk: an agent that responds to a liveness probe but cannot execute its actual work (degraded tool access, stale credentials, full queue) will be marked healthy. Guardrail: require the prompt to generate separate liveness, readiness, and degraded-mode indicators with explicit failure conditions for each.
Operational Risk: Timeout Masking in Async Chains
Risk: a slow but eventually responsive agent may pass health checks while causing cascading timeouts in calling agents. Guardrail: include latency thresholds and percentile reporting in the generated health check format so callers can detect degradation before hard failures occur.
Bad Fit: Air-Gapped or Network-Partitioned Deployments
Avoid when: agents run in environments where network partitions are common and health check endpoints cannot reliably reach each other. The prompt may generate checks that trigger false alarms or fail to propagate. Guardrail: pair this prompt with a local-fallback health evaluation pattern and avoid hard dependency on cross-network probes.
Copy-Ready Prompt Template
A reusable prompt that generates structured health check responses with liveness, readiness, and degraded-mode indicators for agent monitoring systems.
This prompt template produces a standardized health check payload that SRE teams and monitoring systems can consume to determine whether an agent is alive, ready to accept work, and operating within acceptable parameters. Replace each square-bracket placeholder with the agent's current runtime context before sending. The template is designed to be called on a regular interval by an orchestration layer or health probe, and its output should be parseable by Prometheus, Datadog, or custom monitoring dashboards.
textYou are an agent health check reporter. Your job is to produce a structured health status payload based on the current runtime state provided to you. Do not fabricate metrics. Only report what is supplied in [RUNTIME_STATE]. [RUNTIME_STATE] - Agent ID: [AGENT_ID] - Agent Role: [AGENT_ROLE] - Uptime (seconds): [UPTIME_SECONDS] - Last Successful Task Completion (ISO 8601): [LAST_SUCCESSFUL_TASK] - Last Error (ISO 8601 or null): [LAST_ERROR_TIMESTAMP] - Last Error Code (or null): [LAST_ERROR_CODE] - Active Task Count: [ACTIVE_TASK_COUNT] - Queue Depth: [QUEUE_DEPTH] - Connected Dependencies (name: status): [DEPENDENCY_STATUS_MAP] - Memory Usage (MB): [MEMORY_USAGE_MB] - CPU Usage (%): [CPU_USAGE_PERCENT] - Tool Availability (tool_name: available|unavailable): [TOOL_AVAILABILITY_MAP] - Degraded Mode Flag (boolean): [DEGRADED_MODE] - Degraded Mode Reason (or null): [DEGRADED_REASON] [OUTPUT_SCHEMA] { "agent_id": "string", "timestamp": "ISO 8601 UTC now", "liveness": { "status": "alive" | "unreachable", "uptime_seconds": number }, "readiness": { "status": "ready" | "not_ready", "active_tasks": number, "queue_depth": number, "last_successful_task": "ISO 8601 or null", "blocking_conditions": ["string"] }, "degraded_mode": { "active": boolean, "reason": "string or null", "affected_capabilities": ["string"] }, "dependencies": { "healthy": ["string"], "unhealthy": ["string"], "degraded": ["string"] }, "resources": { "memory_mb": number, "cpu_percent": number, "tool_availability": { "available": ["string"], "unavailable": ["string"] } }, "last_error": { "timestamp": "ISO 8601 or null", "code": "string or null" }, "overall_status": "healthy" | "degraded" | "unhealthy" } [CONSTRAINTS] 1. Set readiness.status to "not_ready" if active_tasks > [MAX_CONCURRENT_TASKS] or queue_depth > [MAX_QUEUE_DEPTH] or any dependency in the unhealthy list is critical. 2. Set overall_status to "unhealthy" if liveness.status is "unreachable" or readiness.status is "not_ready" and degraded_mode.active is false. 3. Set overall_status to "degraded" if degraded_mode.active is true or any non-critical dependency is unhealthy. 4. Populate blocking_conditions with human-readable reasons for not_ready status. 5. Populate affected_capabilities based on unavailable tools and unhealthy dependencies. 6. If last_error_timestamp is older than [ERROR_WINDOW_SECONDS] seconds, set last_error.timestamp and last_error.code to null. 7. Use the current UTC timestamp for the timestamp field. 8. Do not invent metrics. If a value is not provided in [RUNTIME_STATE], omit the field or set it to null as appropriate. [EXAMPLES] Example healthy output: { "agent_id": "doc-processor-01", "timestamp": "2025-01-15T10:30:00Z", "liveness": { "status": "alive", "uptime_seconds": 86400 }, "readiness": { "status": "ready", "active_tasks": 2, "queue_depth": 5, "last_successful_task": "2025-01-15T10:29:45Z", "blocking_conditions": [] }, "degraded_mode": { "active": false, "reason": null, "affected_capabilities": [] }, "dependencies": { "healthy": ["vector-db", "ocr-service"], "unhealthy": [], "degraded": [] }, "resources": { "memory_mb": 512, "cpu_percent": 34, "tool_availability": { "available": ["pdf-reader", "text-extractor"], "unavailable": [] } }, "last_error": { "timestamp": null, "code": null }, "overall_status": "healthy" } Generate the health check payload now.
To adapt this template, replace each [PLACEHOLDER] with live values from your agent runtime. The [RUNTIME_STATE] block should be populated by your orchestration layer or agent supervisor before the prompt is sent. The [OUTPUT_SCHEMA] is included inline so the model produces a valid JSON object matching your monitoring system's expected contract. Adjust [MAX_CONCURRENT_TASKS], [MAX_QUEUE_DEPTH], and [ERROR_WINDOW_SECONDS] to match your SLO thresholds. For high-reliability systems, validate the output against the schema before ingesting it into your monitoring pipeline, and log any parse failures as a separate alert condition.
Before deploying this prompt into production, wire it into a health probe that runs on a fixed interval. Validate the JSON output against the schema using a strict parser. If the model returns malformed JSON, retry once with a repair prompt. If the retry also fails, emit an agent_health_check_failed alert. Do not treat a missing or unparseable health check as a healthy state. For agents operating in regulated or safety-critical domains, add a human-review step when overall_status transitions from healthy to degraded or unhealthy.
Prompt Variables
Inputs the agent runtime or orchestration layer must supply before invoking the heartbeat prompt. Each placeholder maps to a specific health dimension.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[AGENT_ID] | Unique identifier for the agent instance being checked | agent-7f3a2b | Must match ^[a-z]+-[a-f0-9]{6}$ pattern. Reject if empty or malformed. |
[AGENT_ROLE] | Declared specialization of the agent for context-aware health interpretation | document_retrieval_agent | Must be a non-empty string from the approved role registry. Reject unknown roles. |
[LAST_ACTIVE_TIMESTAMP] | ISO-8601 timestamp of the agent's last successful action or heartbeat | 2025-01-15T14:32:00Z | Must parse as valid ISO-8601. Reject if in the future or older than [STALE_THRESHOLD_SECONDS]. |
[CURRENT_TASK_COUNT] | Number of tasks currently assigned or in-progress for this agent | 3 | Must be a non-negative integer. Null allowed only if agent has no task queue. |
[ERROR_COUNT_WINDOW] | Count of errors in the last [WINDOW_SECONDS] seconds | 2 | Must be a non-negative integer. Compare against [MAX_ERROR_THRESHOLD] for degraded status. |
[DEPENDENCY_STATUS_MAP] | JSON object mapping dependency names to their last known status | {"vector_db": "healthy", "llm_gateway": "degraded"} | Must be valid JSON with string keys and values from [HEALTHY, DEGRADED, UNREACHABLE, UNKNOWN]. Reject if unparseable. |
[MEMORY_USAGE_PERCENT] | Current memory consumption as percentage of allocated limit | 72.4 | Must be a float between 0.0 and 100.0. Trigger warning if above [MEMORY_WARN_THRESHOLD]. |
Implementation Harness Notes
How to wire the heartbeat prompt into an agent runtime with validation, retries, and observability.
The heartbeat prompt is not a standalone utility; it is a contract between an agent and its supervisor or orchestrator. In production, this prompt is called on a regular cadence—typically every 15 to 60 seconds—by a sidecar health-check process or the orchestration framework itself. The caller sends the agent's current [AGENT_STATE] (including active task IDs, tool-call queues, and recent error logs) and expects a structured response that indicates whether the agent is live, ready to accept work, or running in a degraded mode. The prompt must be treated as a synchronous, low-latency call: if the model does not respond within a defined timeout window, the system should mark the agent as unresponsive and trigger the escalation path defined in your runbook.
Wire the prompt into your application with a thin wrapper that enforces a strict output contract. After receiving the model's response, validate the JSON against the expected schema before acting on it. A liveness field of false or a readiness field of false should immediately pause task dispatch to that agent and log the degraded_mode_indicators array for the on-call channel. Implement a retry policy with exponential backoff (e.g., 1s, 2s, 4s) capped at three attempts before declaring the agent dead. Log every heartbeat attempt—including model latency, raw response, validation errors, and the final interpreted status—to your observability stack so that SRE teams can distinguish between model failures, agent crashes, and transient network issues. For high-reliability deployments, pair this prompt with a separate watchdog timer that independently monitors the agent process; the prompt should confirm what the watchdog suspects, not be the sole detection mechanism.
Avoid using this prompt as a generic 'is the model alive?' check. It is designed for agent runtimes that hold state, manage tool queues, and can degrade gracefully. If your agent is stateless or you only need to know if the model endpoint is reachable, a simple HTTP health check against the model provider's status endpoint is cheaper and more reliable. When deploying, pin the model version used for heartbeat checks and monitor for response drift—a model update that changes the output schema or adds hallucinated fields will break your validation layer and can cause false-positive failure cascades. Start with a conservative timeout (5 seconds) and tighten it only after you have production data on p95 latency for your chosen model and region.
Expected Output Contract
Fields, format, and validation rules for the agent health check response. Use this contract to parse, validate, and act on heartbeat payloads in production orchestration.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
agent_id | string (UUID v4) | Must match registered agent UUID. Reject if format is not lowercase hex with dashes. | |
timestamp | ISO 8601 UTC string | Must parse to a valid datetime within the last [HEARTBEAT_TIMEOUT_SECONDS]. Reject if future-dated or unparseable. | |
status | enum: healthy | degraded | unhealthy | starting | shutting_down | Must be one of the allowed enum values. Reject unknown status strings. | |
liveness | boolean | Must be true for the agent to be considered alive. If false, trigger immediate restart or escalation. | |
readiness | boolean | Must be true for the agent to receive work. If false, route tasks away but do not terminate. | |
active_task_count | integer >= 0 | Must be a non-negative integer. Alert if value exceeds [MAX_CONCURRENT_TASKS] threshold. | |
degraded_reasons | array of strings or null | If status is degraded, this field must be a non-empty array. If status is healthy, must be null or empty array. | |
last_error | object {code: string, message: string, timestamp: string} or null | If present, code must be a non-empty string and timestamp must be a valid ISO 8601 UTC datetime. Reject malformed error objects. |
Common Failure Modes
Agent heartbeat and health check prompts fail in predictable ways that can mask real outages or trigger false alarms. These cards cover the most common failure modes and how to guard against them before they reach production.
Stale Health Responses
Risk: The agent returns a cached or memorized healthy response even when its tools, memory stores, or downstream dependencies are unavailable. The prompt checks liveness but not actual capability. Guardrail: Require the prompt to perform a lightweight live check (tool invocation, DB ping, or context fetch) and timestamp the response. Reject responses older than a configurable TTL.
False-Positive Liveness Under Load
Risk: The agent responds quickly with a healthy status while its request queue is saturated, causing silent failures for real work. The health check measures response time but not queue depth or processing capacity. Guardrail: Include queue depth, active task count, and average processing latency in the health payload. Set degraded-mode thresholds that trigger when capacity is near exhaustion.
Timeout Misclassification
Risk: A slow but functional agent exceeds the health check timeout and is marked dead, triggering unnecessary restarts or failovers. The timeout is too aggressive for the agent's normal latency profile. Guardrail: Use separate liveness (fast) and readiness (comprehensive) checks. Set liveness timeouts at 2-3x the p99 response time. Never use the same timeout for both checks.
Missing Dependency Transparency
Risk: The agent reports healthy but fails to disclose that a critical dependency (vector store, API endpoint, tool server) is degraded or unreachable. Operators cannot diagnose the blast radius. Guardrail: Require the health prompt to enumerate all dependencies with individual status codes. Include dependency names, latency, and error rates. Never collapse dependency health into a single boolean.
Schema Drift in Health Payloads
Risk: The agent changes its health response format without warning, breaking monitoring dashboards, alerting rules, and orchestration logic that parse the payload. The prompt lacks output schema enforcement. Guardrail: Define a strict JSON schema for the health response with required fields, enum status values, and version field. Validate every response against the schema before accepting it. Reject and alert on schema violations.
Silent Degradation Masking
Risk: The agent enters a degraded state (partial tool failure, memory corruption, credential expiry) but continues reporting healthy because the prompt only checks process liveness. Real failures are invisible until users report them. Guardrail: Include readiness checks that exercise each capability category. Require the prompt to test tool availability, credential validity, and memory store access. Report degraded status with specific capability gaps rather than a generic warning.
Evaluation Rubric
Run these checks against a golden dataset of known agent states to validate the health check prompt before deployment. Each criterion targets a specific failure mode in liveness, readiness, or degraded-mode reporting.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Liveness response time | Response generated within [TIMEOUT_MS] for 95% of requests | Response time exceeds threshold; agent appears unresponsive | Load test with 100 concurrent requests; measure p95 latency |
Readiness check accuracy | Readiness field matches actual dependency availability in 100% of golden cases | Ready=true when a critical dependency is down; Ready=false when all dependencies are up | Inject dependency failures in test harness; compare reported readiness to ground truth |
Degraded-mode detection | Degraded field is true when any non-critical dependency fails and false otherwise | Degraded=false during partial outage; Degraded=true when all systems nominal | Simulate non-critical dependency failure; verify Degraded flag and [DEGRADED_REASON] populated |
Schema compliance | Output parses successfully against [OUTPUT_SCHEMA] with all required fields present | Missing required field; extra field not in schema; wrong type for any field | Validate output with JSON Schema validator; reject any non-conforming response |
Error code enumeration | Error codes in [ERRORS] array match the defined [STATUS_CODE_ENUM] exactly | Unknown error code; missing error code for known failure; wrong severity level | Cross-reference error codes against allowed enum; flag any code not in approved list |
False-positive avoidance | Zero false-positive health failures across 1000 healthy-state test cases | Healthy agent reports unhealthy status; liveness=false when agent is operational | Run 1000 healthy-state inputs; assert liveness=true and ready=true for all |
False-negative avoidance | Zero false-negative health passes across 1000 known-failure test cases | Unhealthy agent reports healthy status; liveness=true when agent is crashed | Run 1000 failure-state inputs; assert liveness=false or ready=false for all |
Timestamp freshness | Timestamp in [LAST_CHECK] is within 5 seconds of actual check execution time | Stale timestamp older than 5 seconds; timestamp in future; missing timestamp | Compare reported timestamp to system clock at check execution; reject drift >5s |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Use the base prompt with a single model call and minimal validation. Focus on getting a parseable JSON response with status, timestamp, and checks fields. Skip retry logic and schema enforcement initially.
codeGenerate a health check response for agent [AGENT_ID]. Include: liveness, readiness, degraded-mode indicators. Return JSON only.
Watch for
- Missing
degraded_modefield when a check is marginal - Overly optimistic readiness when dependencies are slow
- Timestamp format drift across model versions

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us