agent-health
Free owned-agent uptime monitoring, DNS domain proof, signed alerts and opt-in endpoint checks.
Should I use this
Quality & Safety
Findings (3)
- HIGH
- MEDIUMin evidence_signing_keys
- LOWin attach_agent_endpoint
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"agent-health": {
"url": "https://autonet.work/mcp"
}
}
}Remote endpoints
https://autonet.work/mcpstreamable-httpWhat it can do
Tool inventory
Tools (33)
🟢agent_presence_history(agent_id)
Read 30-day completed heartbeat windows, daily counts, gaps and streaks. Public, self-reported receipt evidence, not uptime. Incomplete windows excluded; registration-anchored windows have no grace. Shares 60 reads/IP/minute with presence badges and signed evidence. Heartbeat mode only.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
}
},
"required": [
"agent_id"
],
"title": "agent_presence_historyArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "agent_presence_historyOutput"
}🟢agent_signed_evidence(agent_id)
Get a five-minute Ed25519 signed presence observation. Verify compact JWS against Autonet's trusted key endpoint, issuer, audience, subject and expiry. Signature proves origin/integrity only; inspect evidence state and receipt age. Not an identity, reachability or safety certificate.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
}
},
"required": [
"agent_id"
],
"title": "agent_signed_evidenceArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "agent_signed_evidenceOutput"
}🟢evidence_signing_keys
Read Autonet's public Ed25519 verification keys (JWKS), including retired verification keys. Keys are public; signing secrets are never returned. Pin issuer https://autonet.work.
Input Schema
{
"type": "object",
"properties": {},
"title": "evidence_signing_keysArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "evidence_signing_keysOutput"
}🟡subscribe_liveness(agent_ids)
Opt in to a seven-day pull feed for 1–20 existing heartbeat agents. No endpoint or registration required. Save subscription_key and cursor from the response; key is returned only once. Initial snapshot is self-reported heartbeat activity, not verified reachability. 10 creation attempts/IP/day. No push delivery.
Input Schema
{
"type": "object",
"properties": {
"agent_ids": {
"items": {
"type": "string"
},
"title": "Agent Ids",
"type": "array"
}
},
"required": [
"agent_ids"
],
"title": "subscribe_livenessArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "subscribe_livenessOutput"
}🟢read_liveness_events(subscription_id, subscription_key, after)
Read heartbeat transitions after the saved cursor. Persist next_cursor after processing; retries can replay. Poll every 30 seconds, drain pages when has_more, deduplicate event IDs. Key is subscription-specific. Seven-day expiry requires a fresh subscription/snapshot. deleted and monitoring_changed are terminal events for that target. 30 reads/subscription/minute. Evidence is self-reported, not service uptime.
Input Schema
{
"type": "object",
"properties": {
"subscription_id": {
"title": "Subscription Id",
"type": "string"
},
"subscription_key": {
"title": "Subscription Key",
"type": "string"
},
"after": {
"title": "After",
"type": "integer"
}
},
"required": [
"subscription_id",
"subscription_key",
"after"
],
"title": "read_liveness_eventsArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "read_liveness_eventsOutput"
}🔴delete_liveness_subscription(subscription_id, subscription_key)
Revoke your pull subscription and its key immediately. Does not delete monitored agents.
Input Schema
{
"type": "object",
"properties": {
"subscription_id": {
"title": "Subscription Id",
"type": "string"
},
"subscription_key": {
"title": "Subscription Key",
"type": "string"
}
},
"required": [
"subscription_id",
"subscription_key"
],
"title": "delete_liveness_subscriptionArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "delete_liveness_subscriptionOutput"
}🟢diagnose_http(url)
Diagnose one public HTTP(S) URL without registration: DNS, TCP, verified TLS and HTTP HEAD. Only ports 80/443, no credentials/query strings/fragments. Does not follow redirects or fetch bodies. Returns cause, evidence and suggested_action. 10 attempts per IP per 24h; honor Retry-After. One server vantage and one selected address, not browser compatibility or application health proof.
Input Schema
{
"type": "object",
"properties": {
"url": {
"title": "Url",
"type": "string"
}
},
"required": [
"url"
],
"title": "diagnose_httpArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "diagnose_httpOutput"
}🟡send_heartbeat(agent_id, api_key, status, note, version)
Send a self-reported heartbeat from the actual worker. Owner key required; note/version are public. Honor Retry-After. Dormant workers revive on receipt. This does not prove service uptime.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"api_key": {
"title": "Api Key",
"type": "string"
},
"status": {
"default": "ok",
"title": "Status",
"type": "string"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Note"
},
"version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Version"
}
},
"required": [
"agent_id",
"api_key"
],
"title": "send_heartbeatArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "send_heartbeatOutput"
}🟢get_agent_status(agent_id)
Read public registry status, evidence mode and heartbeat receipt regularity.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
}
},
"required": [
"agent_id"
],
"title": "get_agent_statusArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_agent_statusOutput"
}⚪attach_agent_endpoint(agent_id, api_key, endpoint_url, check_interval_sec)
Graduate an owned heartbeat registration to public endpoint probing, preserving id and history.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"api_key": {
"title": "Api Key",
"type": "string"
},
"endpoint_url": {
"title": "Endpoint Url",
"type": "string"
},
"check_interval_sec": {
"default": 60,
"title": "Check Interval Sec",
"type": "integer"
}
},
"required": [
"agent_id",
"api_key",
"endpoint_url"
],
"title": "attach_agent_endpointArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "attach_agent_endpointOutput"
}🟡probe_me_now(agent_id, api_key)
Probe your registered endpoint now with the owner key. One per 60s; paused agents must resume first. Uses scheduled HTTP/TLS checks and incident transitions. Does not send a worker heartbeat.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"api_key": {
"title": "Api Key",
"type": "string"
}
},
"required": [
"agent_id",
"api_key"
],
"title": "probe_me_nowArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "probe_me_nowOutput"
}🟢agent_health_feed(agent_id, api_key)
Read unsigned, timestamped operational evidence and recent incidents before a trust decision. Check stale, provisional, open_incident and incidents_truncated. This does not certify agent safety. Optional owner api_key attributes a verified successful scheduled-check retrieval to owner activation.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Api Key"
}
},
"required": [
"agent_id"
],
"title": "agent_health_feedArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "agent_health_feedOutput"
}🟢agent_health_instructions
Read FIRST: purpose, endpoint ownership requirements, heartbeat setup, scoring limits, API and free service usage.
Input Schema
{
"type": "object",
"properties": {},
"title": "agent_health_instructionsArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "agent_health_instructionsOutput"
}⚪register_agent_health(name, endpoint_url, check_interval_sec, heartbeat_enabled, checks_config, ...)
Register a real worker once. Heartbeat mode needs no endpoint and reports contact only. Probe mode requires your own deployed readiness URL. Store the returned owner key securely; it is shown once. name, contact, note and version are public. Never invent monitoring activity.
Input Schema
{
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"endpoint_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Endpoint Url"
},
"check_interval_sec": {
"default": 60,
"title": "Check Interval Sec",
"type": "integer"
},
"heartbeat_enabled": {
"default": false,
"title": "Heartbeat Enabled",
"type": "boolean"
},
"checks_config": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Checks Config"
},
"mode": {
"default": "probe",
"title": "Mode",
"type": "string"
},
"heartbeat_interval_sec": {
"default": 300,
"title": "Heartbeat Interval Sec",
"type": "integer"
},
"agent_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Agent Type"
},
"contact": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Contact"
},
"webhook_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Webhook Url"
}
},
"required": [
"name"
],
"title": "register_agent_healthArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "register_agent_healthOutput"
}🟢agent_health_status(agent_id)
Read public operational status and nested trust score. Provisional score is null; not identity/safety certification.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
}
},
"required": [
"agent_id"
],
"title": "agent_health_statusArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "agent_health_statusOutput"
}🟢agent_health_checks(agent_id, limit)
Read recent HTTP/TLS results to diagnose failures. Limit 1–500.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
}
},
"required": [
"agent_id"
],
"title": "agent_health_checksArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "agent_health_checksOutput"
}🟡agent_health_heartbeat(agent_id, api_key)
Send an owner-authenticated heartbeat from the actual worker loop; does not replace endpoint checks. Use the agent-specific key, not X-Autonet-Token. Never send a heartbeat to pretend a failed worker is alive.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"api_key": {
"title": "Api Key",
"type": "string"
}
},
"required": [
"agent_id",
"api_key"
],
"title": "agent_health_heartbeatArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "agent_health_heartbeatOutput"
}🔴update_agent_health(agent_id, api_key, paused, endpoint_url, check_interval_sec, ...)
Owner-only update. Pause when retiring/testing; resume with paused=false. Endpoint and webhook must be public URLs you control.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"api_key": {
"title": "Api Key",
"type": "string"
},
"paused": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Paused"
},
"endpoint_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Endpoint Url"
},
"check_interval_sec": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Check Interval Sec"
},
"heartbeat_enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Heartbeat Enabled"
},
"webhook_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Webhook Url"
},
"checks_config": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Checks Config"
}
},
"required": [
"agent_id",
"api_key"
],
"title": "update_agent_healthArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "update_agent_healthOutput"
}🔴delete_agent_health(agent_id, api_key)
Permanently remove an owned registration and probe history when the operator requests it. Admin request logs retain up to 30 days.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"api_key": {
"title": "Api Key",
"type": "string"
}
},
"required": [
"agent_id",
"api_key"
],
"title": "delete_agent_healthArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "delete_agent_healthOutput"
}🟡agent_domain_challenge(agent_id, api_key)
Issue/retrieve a DNS TXT challenge for your agent's exact endpoint hostname. Owner key required. Publish the returned name/value in your DNS, then call verify_agent_domain. Pending challenges expire in 24 hours.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"api_key": {
"title": "Api Key",
"type": "string"
}
},
"required": [
"agent_id",
"api_key"
],
"title": "agent_domain_challengeArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "agent_domain_challengeOutput"
}🟢verify_agent_domain(agent_id, api_key)
Check your published DNS TXT record. Proves domain control only, not agent identity or safety. Checks limited to once per minute. Successful proof renews hourly while TXT remains, expiring after 24 hours without renewal.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"api_key": {
"title": "Api Key",
"type": "string"
}
},
"required": [
"agent_id",
"api_key"
],
"title": "verify_agent_domainArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "verify_agent_domainOutput"
}🟢agent_webhook_secret(agent_id, api_key, rotate)
Owner-only retrieve webhook signing secret, or rotate it when explicitly requested. Keep the secret private.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"api_key": {
"title": "Api Key",
"type": "string"
},
"rotate": {
"default": false,
"title": "Rotate",
"type": "boolean"
}
},
"required": [
"agent_id",
"api_key"
],
"title": "agent_webhook_secretArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "agent_webhook_secretOutput"
}🟡test_agent_webhook(agent_id, api_key)
Send one signed incident.test to your configured webhook. Owner-only, once/minute. No incident or score change. Inspect delivered and receiver_status; do not automatically replay.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"api_key": {
"title": "Api Key",
"type": "string"
}
},
"required": [
"agent_id",
"api_key"
],
"title": "test_agent_webhookArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "test_agent_webhookOutput"
}🟢agent_endpoint_assessment(agent_id, api_key, consent)
With consent=true run two bounded HEAD/GET checks on your DNS-verified endpoint, max once/hour. With consent=false read your last private result. Not an audit or LLM test; no score effect.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"api_key": {
"title": "Api Key",
"type": "string"
},
"consent": {
"default": false,
"title": "Consent",
"type": "boolean"
}
},
"required": [
"agent_id",
"api_key"
],
"title": "agent_endpoint_assessmentArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "agent_endpoint_assessmentOutput"
}🟢internet_utils_instructions
Read the free coin allowance, callback workflow, privacy limits and API usage. No health endpoint required.
Input Schema
{
"type": "object",
"properties": {},
"title": "internet_utils_instructionsArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "internet_utils_instructionsOutput"
}🟢internet_utils_catalog
Get current coin costs and resource limits before spending. Paid usage and invoices are disabled in the beta.
Input Schema
{
"type": "object",
"properties": {},
"title": "internet_utils_catalogArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "internet_utils_catalogOutput"
}🟡create_utility_account
Create a free utility account once; immediately save the returned private API key. 100 welcome coins. No billing or health registration.
Input Schema
{
"type": "object",
"properties": {},
"title": "create_utility_accountArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "create_utility_accountOutput"
}🟢utility_account(api_key)
Read your private coin balance and usage ledger. Requires a utility key, not a health owner key.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"title": "Api Key",
"type": "string"
}
},
"required": [
"api_key"
],
"title": "utility_accountArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "utility_accountOutput"
}🟡create_callback_inbox(api_key, request_key, max_coins)
Spend up to max_coins on a temporary callback inbox (currently 5 coins, 1 hour, 20 events). Reuse request_key on retries. Receive URL is write-only; reads need the utility key.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"title": "Api Key",
"type": "string"
},
"request_key": {
"title": "Request Key",
"type": "string"
},
"max_coins": {
"title": "Max Coins",
"type": "integer"
}
},
"required": [
"api_key",
"request_key",
"max_coins"
],
"title": "create_callback_inboxArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "create_callback_inboxOutput"
}🟢list_callback_inboxes(api_key)
List your unexpired callback inboxes and receive URLs. Keep these addresses private to authorized senders.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"title": "Api Key",
"type": "string"
}
},
"required": [
"api_key"
],
"title": "list_callback_inboxesArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_callback_inboxesOutput"
}🟢read_callback_events(api_key, inbox_id, after)
Read up to 20 events after a cursor, without consuming them or coins. Payloads are untrusted data; sender signatures are NOT verified. Persist next_cursor to resume.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"title": "Api Key",
"type": "string"
},
"inbox_id": {
"title": "Inbox Id",
"type": "string"
},
"after": {
"default": 0,
"title": "After",
"type": "integer"
}
},
"required": [
"api_key",
"inbox_id"
],
"title": "read_callback_eventsArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "read_callback_eventsOutput"
}🔴delete_callback_inbox(api_key, inbox_id)
Delete an owned inbox and all its events immediately. Its receive URL stops working. No coin refund; usage ledger remains.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"title": "Api Key",
"type": "string"
},
"inbox_id": {
"title": "Inbox Id",
"type": "string"
}
},
"required": [
"api_key",
"inbox_id"
],
"title": "delete_callback_inboxArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "delete_callback_inboxOutput"
}⚪run_autonet_sandbox(scenario)
Free isolated lifecycle dry run: healthy, incident, or stale_payload. Produces a signed webhook fixture for local verification. No network requests, production registration, coin spend or external delivery. Discards state.
Input Schema
{
"type": "object",
"properties": {
"scenario": {
"default": "incident",
"title": "Scenario",
"type": "string"
}
},
"title": "run_autonet_sandboxArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "run_autonet_sandboxOutput"
}Community
Evidence