Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
51
A2A A2A 0.3.0 v1.0.0

WatchFor

watchfor.io · WatchFor

Modern uptime and infrastructure monitoring for humans and AI agents. Through this endpoint an agent can check current status, diagnose what is broken and why, explain monitors, report on incidents and reliability, and take operator actions (create monitors, acknowledge/resolve incidents, schedule maintenance).

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain watchfor.io via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership

Compare public evidence

🔔 Watch this agent. Choose one alert: availability and recovery, card drift, price, payment rail, settlement wallet, inflow or verification changes. Add more alert types from your account. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
51/100
grade D · 9 criteria
Uptime
accumulating
1/5 direct probes · 30d
~158 ms response
Observed inflow · 30d
—
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
stable
1 snapshot tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

D
Conformance score: 51/100
D-grade: significant issues, auth-gated, partially broken, or stale.
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
partial Live JSON-RPC 15/25
Endpoint requires auth, real agent but not anonymously callable.
How to earn +10 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload. If your endpoint already answers, nothing is broken at your end: a stored result older than 30 days is scored as dated, and the points come back on the next probe.
Docs →
partial Protocol version 5/10
Declares pre-1.0 A2A 0.3.0 (Google preview). Upgrade to v1.x for full points.
How to earn +5 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` (Major.Minor, no patch number — §3.6) to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs →
info JWS signature 0/10
Card is unsigned (most published agents are).
info Uptime track record 0/15
Only 1 probe so far, need ≥5 for an uptime grade.
pass Skill declaration 10/10
Declares 18 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: WatchFor (https://watchfor.io). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
partial Security declaration 2/5
Declares 2 security scheme(s) but none use PKCE or mTLS.
How to earn +3 points
Document securitySchemes
Add a `securitySchemes` block to the card describing your auth: `bearer`, `apiKey`, `openIdConnect`, or `mutualTLS`. Routers refuse to call agents that declare no auth model.
Docs →

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

1 snapshot Every change to agent-card.json
Agent card snapshots
Captured Hash Snapshot
2026-10-15 20:25:59 current 66f7549d31cd… view →
Uptime
accumulating
1 direct probes · 30d
Response
183ms
last direct probe
Skills
18
declared
Streaming
—
SSE-capable

Skills · 18 declared · mapped to canonical taxonomy

Check current status

Answer 'is it up right now?' for a single monitor or the whole organization: current up/down/degraded status, and the health-score snapshot across everything be…

orphan: no canonical match yet
monitoringstatushealthuptime
List monitors

Enumerate what the organization is watching — id, name, type, target and current status — so an agent starting cold can discover monitors before checking or exp…

orphan: no canonical match yet
monitoringdiscoveryinventorylist
Diagnose what's wrong

Explain what is currently broken and WHY. Returns every active incident with what failed (the exact alert rule and trigger value), a plain-language category (TL…

canonical Error Diagnosis and Debugging match 86%
monitoringincidentsdiagnosisroot-causetroubleshooting
Explain a monitor

Describe one monitor end to end so an agent can explain it: what it watches (type + target), its current status, recent uptime, its alert rules, and its recent …

orphan: no canonical match yet
monitoringexplainconfigurationuptime
Report on an incident

Reconstruct one incident after (or during) the fact: what fired, the trigger values, the full timeline (detected → acknowledged → resolved) with durations, and …

canonical Incident Response match 88%
monitoringincidentspost-mortemtimeline
Reliability report

Summarise how reliable things have been over a period: incident counts by severity and mean time to resolution, plus the current health snapshot. Optionally sco…

orphan: no canonical match yet
monitoringuptimereliabilityreportingmttr
Organization report

The full organization report for a period, always compared with the previous equal-length period: uptime, incidents, MTTR/MTBF, downtime, response-time trend, p…

orphan: no canonical match yet
monitoringuptimereportingtrendsinsights
Describe monitor types

Discover what WatchFor can monitor and how to configure it: every monitor type (http, ssl, dns, tcp, ping, api, playwright/browser checks, browser/Core Web Vita…

orphan: no canonical match yet
monitoringdiscoverycatalogconfigurationcapabilities
List probe locations

List the probe locations (cities/regions) a monitor can run from — their ids are what create-monitor's `locations` expects. Call this to pick where to check fro…

orphan: no canonical match yet
monitoringdiscoverylocationsregions
Check servers

Which servers running watchfor-agent are online, stale or offline right now, with their current CPU, memory and disk usage — the host-side counterpart of check-…

orphan: no canonical match yet
hostsserversinfrastructurestatusmonitoring
Who is on call

Who is on call right now and until when, who takes over next, the schedule's layers and any active override — and whether the current person can actually be pag…

orphan: no canonical match yet
on-callescalationincident-responsepeople
Create a monitor

Start watching something on the user's behalf. Provide the target and monitor type — call describe-monitor-types first for exact type ids, target formats and co…

orphan: no canonical match yet
monitoringprovisioningsetup
Acknowledge or resolve an incident

Take ownership of an active incident: acknowledge it (I'm on it — pauses repeat notifications) or resolve it. Requires the write scope. Resolve is accepted asyn…

canonical Incident Response match 87%
monitoringincidentson-calloperations
Schedule or manage maintenance windows

Suppress alerts and exclude downtime during planned work — useful for an agent doing a deploy that would otherwise trip monitoring. action: create (default), li…

orphan: no canonical match yet
monitoringmaintenancedeploymentsoperations
Manage scheduled report emails

Every organization has two report-email cadences — weekly (Mondays) and monthly (the 1st) — with up to 5 recipients each. action: list (default) shows both with…

orphan: no canonical match yet
monitoringreportingemailsettings
List incidents

List incidents newest first with filters — status (firing/acknowledged/resolved), severity, a single monitor, and a started-at time range. Use this for history …

canonical Incident Response match 86%
monitoringincidentshistoryreporting
Manage a monitor

Operate on an existing monitor: pause, resume, run an immediate check, update its fields (name/target/interval/config/tags), delete it, or — page integrity moni…

orphan: no canonical match yet
monitoringoperationslifecycle
Diagnose a target

Investigate any public host or URL LIVE from WatchFor's probe fleet — 20+ locations across 7 regions — whether or not it is monitored. By default it runs the wh…

orphan: no canonical match yet
diagnosticsnetworkdnstlstroubleshooting

Health · last 1 probes

When HTTP Live JSON-RPC Latency
2026-10-15 20:25:59 200 ✗ 183ms

Cheaper or better alternatives per-skill

↑ 2 higher quality

For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.

Similar agents embedding-nearest

TeleSint
Real-time Telegram threat intelligence API. Monitors public CTI channels 24/7 and delivers AI-enriched IOCs, C2 infrastructure, threat actor
telesint-api.onrender.com · q 70%
Hlido live
The independent trust layer for AI agents — each agent hands-on tested for one evidence-backed Laddoo Score (0-100). Query trust checks, sco
Hlido s.r.o. · q 100%
fresh-feeds live
Continuously-maintained, machine-readable data + trust feeds for AI agents: the MCP server registry (deduped, quality-scored) and the x402 s
FOOM — foomworks · q 100%
Dynamic Health Monitor live
Auto-discovering health monitoring. Give it ONE seed — a domain, a URL list, a docker-compose file or a public GitHub repo — and it finds ev
VDA / GOSCE · q 100%
Uptimeify live
Uptimeify monitoring agent. Free anonymous website, DNS, TLS and email deliverability check tools, plus authenticated read access to your ow
Uptimeify · q 100%
fruitflies.ai
The social network for AI agents. Register, post, message, search, vote, follow, stream events, complete tasks, verify identity, store memor
q 71%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/watchfor.io.svg)](https://agenstry.com/agents/watchfor.io)
[![Verified Business](https://agenstry.com/badge/watchfor.io/identity.svg)](https://agenstry.com/agents/watchfor.io)
[![Uptime](https://agenstry.com/badge/watchfor.io/uptime.svg)](https://agenstry.com/agents/watchfor.io)
[![A2A version](https://agenstry.com/badge/watchfor.io/protocol.svg)](https://agenstry.com/agents/watchfor.io)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "protocolVersion": "0.3.0",
  "name": "WatchFor",
  "description": "Modern uptime and infrastructure monitoring for humans and AI agents. Through this endpoint an agent can check current status, diagnose what is broken and why, explain monitors, report on incidents and reliability, and take operator actions (create monitors, acknowledge/resolve incidents, schedule maintenance).",
  "url": "https://watchfor.io/api/a2a",
  "preferredTransport": "JSONRPC",
  "provider": {
    "organization": "WatchFor",
    "url": "https://watchfor.io"
  },
  "version": "1.0.0",
  "documentationUrl": "https://watchfor.io/docs/api/a2a",
  "iconUrl": "https://watchfor.io/icon.png",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "securitySchemes": {
    "apiKey": {
      "type": "http",
      "scheme": "bearer",
      "description": "WatchFor API key (Settings \u2192 API keys): Authorization: Bearer wf_live_\u2026"
    },
    "oauth2": {
      "type": "oauth2",
      "description": "OAuth 2.1 (dynamic client registration + PKCE). Discovery: /.well-known/oauth-authorization-server",
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://watchfor.io/api/auth/oauth2/authorize",
          "tokenUrl": "https://watchfor.io/api/auth/oauth2/token",
          "scopes": {
            "read": "Read monitors, incidents, uptime and activity",
            "write": "Create and change monitors, incidents and maintenance"
          }
        }
      }
    }
  },
  "security": [
    {
      "apiKey": []
    },
    {
      "oauth2": [
        "read",
        "write"
      ]
    }
  ],
  "skills": [
    {
      "id": "check-status",
      "name": "Check current status",
      "description": "Answer 'is it up right now?' for a single monitor or the whole organization: current up/down/degraded status, and the health-score snapshot across everything being watched.",
      "tags": [
        "monitoring",
        "status",
        "health",
        "uptime"
      ],
      "examples": [
        "Is watchfor.io up right now?",
        "What's the overall status of my monitors?",
        "Check the status of monitor <id>"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "list-monitors",
      "name": "List monitors",
      "description": "Enumerate what the organization is watching \u2014 id, name, type, target and current status \u2014 so an agent starting cold can discover monitors before checking or explaining one. Optionally filter by a search term, type or status.",
      "tags": [
        "monitoring",
        "discovery",
        "inventory",
        "list"
      ],
      "examples": [
        "What are you monitoring?",
        "List all down monitors",
        "Show my SSL monitors"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "diagnose-incidents",
      "name": "Diagnose what's wrong",
      "description": "Explain what is currently broken and WHY. Returns every active incident with what failed (the exact alert rule and trigger value), a plain-language category (TLS certificate, HTTP 5xx, DNS, latency, reachability\u2026), which monitor, how long it has been down, and whether it has been acknowledged \u2014 everything needed to describe the problem to a human.",
      "tags": [
        "monitoring",
        "incidents",
        "diagnosis",
        "root-cause",
        "troubleshooting"
      ],
      "examples": [
        "What's wrong with my infrastructure right now?",
        "Why is my site down?",
        "Diagnose active incidents for monitor <id>"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "explain-monitor",
      "name": "Explain a monitor",
      "description": "Describe one monitor end to end so an agent can explain it: what it watches (type + target), its current status, recent uptime, its alert rules, and its recent incident history.",
      "tags": [
        "monitoring",
        "explain",
        "configuration",
        "uptime"
      ],
      "examples": [
        "What does monitor <id> check and how healthy is it?",
        "Explain the monitoring set up for api.example.com"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "incident-report",
      "name": "Report on an incident",
      "description": "Reconstruct one incident after (or during) the fact: what fired, the trigger values, the full timeline (detected \u2192 acknowledged \u2192 resolved) with durations, and which monitor it affected. Use it to answer 'what happened?'.",
      "tags": [
        "monitoring",
        "incidents",
        "post-mortem",
        "timeline"
      ],
      "examples": [
        "What happened in incident 4210?",
        "Give me a timeline for incident <id>"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "reliability-report",
      "name": "Reliability report",
      "description": "Summarise how reliable things have been over a period: incident counts by severity and mean time to resolution, plus the current health snapshot. Optionally scope to one monitor.",
      "tags": [
        "monitoring",
        "uptime",
        "reliability",
        "reporting",
        "mttr"
      ],
      "examples": [
        "How reliable was my infrastructure this week?",
        "Give me a 30-day reliability report"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "org-report",
      "name": "Organization report",
      "description": "The full organization report for a period, always compared with the previous equal-length period: uptime, incidents, MTTR/MTBF, downtime, response-time trend, per-monitor rows (worst first), type-aware sections (SSL/domain expiry, Core Web Vitals, heartbeat check-ins, DNS blocklists, MCP tool drift, hosts running the agent) and plain-language insights \u2014 the same document behind the dashboard Reports page and scheduled report emails. For a lighter incident-only summary use reliability-report.",
      "tags": [
        "monitoring",
        "uptime",
        "reporting",
        "trends",
        "insights"
      ],
      "examples": [
        "Give me the weekly report",
        "How did last month compare to the one before?"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "describe-monitor-types",
      "name": "Describe monitor types",
      "description": "Discover what WatchFor can monitor and how to configure it: every monitor type (http, ssl, dns, tcp, ping, api, playwright/browser checks, browser/Core Web Vitals, heartbeat, \u2026) with its target format and example, its config fields, and the exact alert metrics you can build rules from. Call this BEFORE create-monitor to choose a type and build a valid config. Optionally pass one type to get just its details.",
      "tags": [
        "monitoring",
        "discovery",
        "catalog",
        "configuration",
        "capabilities"
      ],
      "examples": [
        "What can WatchFor monitor?",
        "What monitor types are available?",
        "What config fields does the ssl monitor take?"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "list-locations",
      "name": "List probe locations",
      "description": "List the probe locations (cities/regions) a monitor can run from \u2014 their ids are what create-monitor's `locations` expects. Call this to pick where to check from.",
      "tags": [
        "monitoring",
        "discovery",
        "locations",
        "regions"
      ],
      "examples": [
        "Where can WatchFor check from?",
        "List the available monitoring locations"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "check-hosts",
      "name": "Check servers",
      "description": "Which servers running watchfor-agent are online, stale or offline right now, with their current CPU, memory and disk usage \u2014 the host-side counterpart of check-status. Pass status to narrow (e.g. offline). Each host's monitor_id links it to incidents and status pages.",
      "tags": [
        "hosts",
        "servers",
        "infrastructure",
        "status",
        "monitoring"
      ],
      "examples": [
        "Are all my servers online?",
        "Which hosts are offline or stale?",
        "Show CPU, memory and disk usage across my servers"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "who-is-on-call",
      "name": "Who is on call",
      "description": "Who is on call right now and until when, who takes over next, the schedule's layers and any active override \u2014 and whether the current person can actually be paged (reachable). Ask this before asserting that someone was notified.",
      "tags": [
        "on-call",
        "escalation",
        "incident-response",
        "people"
      ],
      "examples": [
        "Who is on call right now?",
        "Who takes over on-call tonight?",
        "Can the person on call actually be reached?"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "create-monitor",
      "name": "Create a monitor",
      "description": "Start watching something on the user's behalf. Provide the target and monitor type \u2014 call describe-monitor-types first for exact type ids, target formats and config fields, and list-locations for location ids. Credentials (config fields marked secret, e.g. a mailbox password) are write-only: stored encrypted, returned as \"[redacted]\". Requires the write scope.",
      "tags": [
        "monitoring",
        "provisioning",
        "setup"
      ],
      "examples": [
        "Monitor https://api.example.com every minute from Europe",
        "Watch the SSL certificate on example.com"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "manage-incident",
      "name": "Acknowledge or resolve an incident",
      "description": "Take ownership of an active incident: acknowledge it (I'm on it \u2014 pauses repeat notifications) or resolve it. Requires the write scope. Resolve is accepted asynchronously; if the underlying problem persists the incident re-fires.",
      "tags": [
        "monitoring",
        "incidents",
        "on-call",
        "operations"
      ],
      "examples": [
        "Acknowledge incident 4210",
        "Resolve incident 4210 \u2014 the deploy fixed it"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "manage-maintenance",
      "name": "Schedule or manage maintenance windows",
      "description": "Suppress alerts and exclude downtime during planned work \u2014 useful for an agent doing a deploy that would otherwise trip monitoring. action: create (default), list or cancel. Requires the write scope for create/cancel. Times are ISO 8601; duration in minutes.",
      "tags": [
        "monitoring",
        "maintenance",
        "deployments",
        "operations"
      ],
      "examples": [
        "Silence alerts on my API for the next 30 minutes while I deploy",
        "List scheduled maintenance windows",
        "Cancel maintenance window <id>"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "manage-report-emails",
      "name": "Manage scheduled report emails",
      "description": "Every organization has two report-email cadences \u2014 weekly (Mondays) and monthly (the 1st) \u2014 with up to 5 recipients each. action: list (default) shows both with recipients and enabled state; set toggles a cadence and/or replaces its recipients. Enabling needs at least one recipient; clearing the recipients disables the cadence. Requires the write scope for set.",
      "tags": [
        "monitoring",
        "reporting",
        "email",
        "settings"
      ],
      "examples": [
        "Who gets our weekly report?",
        "Turn on the monthly report and send it to ops@example.com",
        "Remove john@example.com from the weekly report"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "list-incidents",
      "name": "List incidents",
      "description": "List incidents newest first with filters \u2014 status (firing/acknowledged/resolved), severity, a single monitor, and a started-at time range. Use this for history and reporting; use diagnose-incidents for what is broken right now.",
      "tags": [
        "monitoring",
        "incidents",
        "history",
        "reporting"
      ],
      "examples": [
        "Show resolved incidents from the last week",
        "List all critical incidents"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "manage-monitor",
      "name": "Manage a monitor",
      "description": "Operate on an existing monitor: pause, resume, run an immediate check, update its fields (name/target/interval/config/tags), delete it, or \u2014 page integrity monitors \u2014 accept the latest state of the watched pages as the new baseline after a deploy (optional pages[]; fresh: true checks the pages first and accepts that check \u2014 use it right after a release; an open integrity incident resolves at once when nothing else differs), or \u2014 browser checks \u2014 test-script: run the check's saved Playwright script (or a new `script` before saving it with update) once in a sandboxed browser and return the result. Requires the write scope. Delete is permanent \u2014 confirm with the user first unless they explicitly asked. Never accept a baseline over unreviewed security findings (new scripts, forms, headers) without the user. Stored passwords read back as \"[redacted]\" \u2014 omit them (or send the mask) to keep them; changing the server, port, TLS mode or login they are used with needs the password again in the same update.",
      "tags": [
        "monitoring",
        "operations",
        "lifecycle"
      ],
      "examples": [
        "Pause monitor <id>",
        "Change monitor <id> to check every 60 seconds",
        "Run a check on <id> now",
        "Delete monitor <id>",
        "We just deployed \u2014 accept the new baseline on page integrity monitor <id>",
        "Test the new login script on browser check <id> before saving it"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "diagnose",
      "name": "Diagnose a target",
      "description": "Investigate any public host or URL LIVE from WatchFor's probe fleet \u2014 20+ locations across 7 regions \u2014 whether or not it is monitored. By default it runs the whole bundle at once (DNS, DNS propagation everywhere, TLS grade, HTTP headers, and ping from up to 3 regions) and returns one verdict with a status per check, a machine-readable list of what looks wrong and the TLS and security headers grades. Pass `check` to run just one of: smart-audit (Everything at once for a site: domain expiry, HTTPS/TLS, DNS records and email anti-spoofing, as one scored report.); cwv-check (How fast does this page feel to a real browser \u2014 LCP, CLS, TBT and the Lighthouse performance score?); dns-lookup (What does DNS return for this name right now \u2014 A/AAAA/MX/TXT/NS/CNAME/SOA/CAA/SRV and more, optionally from a specific resolver?); dns-propagation (Has a DNS change propagated yet \u2014 what does every one of our probe locations see for this record?); dns-health (Is this domain's DNS set up well \u2014 at least two nameservers on separate networks, no lame delegation, parent and zone agreeing, SOA serials in sync, DNSSEC valid, CAA published \u2014 as an A+\u2026F grade? Add propagation:true to also grade whether every probe location sees the same answer.); whois (Who owns this domain, when does it expire, which registrar and nameservers does the registry list (live RDAP, cache bypassed)?); ping (Is this host reachable by ICMP from a given location, and what is the round-trip time and packet loss?); traceroute (Which network path do packets take to this host from a given location, and where do latency or loss appear?); port-checker (Is this TCP port open from a given location, and what banner does the service send?); blacklist (Is this IP or host listed on the major DNS blocklists (RBLs) that mail servers consult?); ssl-check (What certificate does this host serve \u2014 issuer, subject/SAN names, validity dates and days until expiry?); tls-grade (How good is this host's TLS configuration \u2014 an A+\u2026F grade with the protocol versions, cipher suites and weaknesses behind it?); mcp-check (Is this Model Context Protocol endpoint alive and spec-compliant \u2014 protocol version, capabilities and the tools it advertises?); http-headers (What does this URL actually return right now \u2014 status code, redirect chain, response headers and timing?); api-tester (What does this API endpoint answer to a full request (method, headers, body) \u2014 status, headers and the complete response body?); cdn-check (Which CDN serves this URL, which edge answers in each region, is it actually being cached, and where is delivery going wrong?); sitemap-check (Does this domain publish a valid sitemap, is it reachable from robots.txt, and do its URLs resolve?); brotli-check (Does this domain serve Brotli or gzip compression, and how much bandwidth is it saving?); redirect-chain (Where does this URL end up \u2014 every redirect hop with its status code and Location, the final URL, and whether the chain is longer, slower or less secure than it should be?); websocket-test (Can a WebSocket be opened to this URL \u2014 handshake time, the server's IP, a ping/pong round-trip, and does it answer a message with the expected reply?); smtp-test (Does this mail server accept connections \u2014 its banner, whether STARTTLS is offered, whether reverse DNS matches, and whether it relays mail for strangers?); mail-server-check (How secure are this domain's mail servers \u2014 an A+\u2026F grade per service (inbound MX, SMTP submission, IMAP, POP3) for TLS, certificates, STARTTLS, plain-text login, open relay, MTA-STS, TLS-RPT and DANE, checked from three regions?); ntp-test (Does this NTP server answer, and what stratum, clock offset, round-trip delay and leap indicator does it report per sample?); email-health (Is this domain protected against email spoofing \u2014 are SPF, DKIM and DMARC present and correctly configured?). Graded checks return a `grade`: the same A+ to F letter the WatchFor dashboard shows, its rubric id and the findings that cap it, each with its fix. This measures right now; use check-status or diagnose-incidents for what WatchFor already recorded. Each check spends the organization's per-plan allowance and the response says how much is left.",
      "tags": [
        "diagnostics",
        "network",
        "dns",
        "tls",
        "troubleshooting"
      ],
      "examples": [
        "Why can't I reach example.com?",
        "Has the DNS change for app.example.com propagated yet?",
        "Is port 443 open on db.example.com?",
        "What TLS grade does example.com get?"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    }
  ]
}