Check updown.io uptime checks, downtimes, response metrics and status pages, and create checks.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Add an alert recipient: an email address, phone number (sms), webhook URL, Slack-compatible incoming-webhook URL, or Microsoft Teams webhook URL. Returns the new (or already-existing) recipient with its id. By default it is selected on ALL existing checks; pass selected=false to add it unattached. Slack/Telegram/Zapier/Statuspage integrations must be set up in the web UI. Requires the read/write API key. updown: POST /api/recipients.
Recipient type.
The email address, phone number or URL.
Optional friendly label (webhooks only at the moment).
true (default) = selected on all existing checks; false = not selected on any check.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Add an alert recipient: an email address, phone number (sms), webhook URL, Slack-compatible incoming-webhook URL, or Microsoft Teams webhook URL. Returns the new (or already-existing) recipient with its id. By default it is selected on ALL existing checks; pass selected=false to add it unattached. Slack/Telegram/Zapier/Statuspage integrations must be set up in the web UI. Requires the read/write API key. updown: POST /api/recipients.
| Argument | Type | Description |
|---|---|---|
| name | string | Optional friendly label (webhooks only at the moment). |
| type* | string | Recipient type. |
| value* | string | The email address, phone number or URL. |
| selected | boolean | true (default) = selected on all existing checks; false = not selected on any check. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type",
"value"
],
"properties": {
"name": {
"type": "string",
"description": "Optional friendly label (webhooks only at the moment)."
},
"type": {
"enum": [
"email",
"sms",
"webhook",
"slack_compatible",
"msteams"
],
"type": "string",
"description": "Recipient type."
},
"value": {
"type": "string",
"minLength": 1,
"description": "The email address, phone number or URL."
},
"selected": {
"type": "boolean",
"description": "true (default) = selected on all existing checks; false = not selected on any check."
}
}
}Add a new monitoring check. The type (http, https, tcp, tcps, icmp) is inferred from the URL scheme; pass type 'pulse' (and no URL) for a cron/heartbeat check. Each check consumes updown credits while enabled. Requires the read/write API key. updown: POST /api/checks.
| Argument | Type | Description |
|---|---|---|
| url | string | The URL to monitor, e.g. https://example.com, tcp://host:port, icmp://host. Omit for pulse checks. |
| type | string | Check type; inferred from the URL by default — mainly useful for 'pulse'. |
| alias | string | Human-readable name for the check. |
| period | integer | Interval in seconds. Regular checks: 15, 30, 60, 120, 300, 600, 1800 or 3600 (default 60). Pulse checks: anywhere from 15 s to 1 month. |
| apdex_t | number | APDEX threshold in seconds: 0.125, 0.25, 0.5, 1.0, 2.0, 4.0 or 8.0 (default 0.5). |
| enabled | boolean | Whether the check runs. false pauses it (reversible). |
| http_body | string | HTTP body sent with the request. |
| http_verb | string | HTTP verb for the request (default GET/HEAD). |
Create a status page showing the given checks, in order. Returns its token and URL. Requires the read/write API key. updown: POST /api/status_pages.
| Argument | Type | Description |
|---|---|---|
| name | string | Name of the status page. |
| checks* | array | Check tokens to show, in display order, e.g. ['dmbe', 'ngg8']. |
| access_key | string | Access key for protected pages (defaults to a random 30-byte string). |
| visibility | string | Page visibility (default public). |
| description | string | Text displayed below the name (supports newlines and links). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"checks"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the status page."
},
"checks": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"minLength": 1,
"description": "The check's unique token, e.g. ngg8 (from updown_list_checks)."
},
"minItems": 1,
"description": "Check tokens to show, in display order, e.g. ['dmbe', 'ngg8']."
},
"access_key": {
"type": "string",
"description": "Access key for protected pages (defaults to a random 30-byte string)."
},
"visibility": {
"enum": [
"public",
"protected",
"private"
],
"type": "string",
"description": "Page visibility (default public)."
},
"description": {
"type": "string",
"description": "Text displayed below the name (supports newlines and links)."
}
}
}One-call health overview across every check: which are DOWN (since when, error), which have an invalid SSL certificate, which certificates or domains expire within N days, and which checks are paused or muted. Built from GET /api/checks.
| Argument | Type | Description |
|---|---|---|
| ssl_days | integer | Flag SSL certificates expiring within this many days (default 14). |
| domain_days | integer | Flag domains expiring within this many days (default 30). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ssl_days": {
"type": "integer",
"maximum": 365,
"minimum": 0,
"description": "Flag SSL certificates expiring within this many days (default 14)."
},
"domain_days": {
"type": "integer",
"maximum": 3650,
"minimum": 0,
"description": "Flag domains expiring within this many days (default 30)."
}
}
}Fetch a single check by token, optionally with the last hour of performance metrics and/or the detailed results of the last 5 requests. updown: GET /api/checks/:token.
| Argument | Type | Description |
|---|---|---|
| token* | string | The check's unique token, e.g. ngg8 (from updown_list_checks). |
| metrics | boolean | Include performance metrics for the last hour. |
| results | boolean | Include detailed results of the last 5 requests (can be large). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"minLength": 1,
"description": "The check's unique token, e.g. ngg8 (from updown_list_checks)."
},
"metrics": {
"type": "boolean",
"description": "Include performance metrics for the last hour."
},
"results": {
"type": "boolean",
"description": "Include detailed results of the last 5 requests (can be large)."
}
}
}Get aggregated metrics for one check over a time range: uptime, apdex, timings (redirect/namelookup/connection/handshake/response/total, ms) and request counts by response time. Optionally group by 'time' or by 'host' (monitoring location). Data is hourly (daily after 2 days, monthly after 40 days); the range must span at least one hour. Uptime is not returned when grouping. updown: GET /api/checks/:token/metrics.
| Argument | Type | Description |
|---|---|---|
| to | string | End time, same formats. Default: now. |
| from | string | Start time (ISO8601, RFC2822 or YYYY-MM-DD; UTC if no zone). Default: 1 month ago. |
| group | string | Group results by 'time' or by 'host' (location). |
| token* | string | The check's unique token, e.g. ngg8 (from updown_list_checks). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"token"
],
"properties": {
"to": {
"type": "string",
"description": "End time, same formats. Default: now."
},
"from": {
"type": "string",
"description": "Start time (ISO8601, RFC2822 or YYYY-MM-DD; UTC if no zone). Default: 1 month ago."
},
"group": {
"enum": [
"time",
"host"
],
"type": "string",
"description": "Group results by 'time' or by 'host' (location)."
},
"token": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"minLength": 1,
"description": "The check's unique token, e.g. ngg8 (from updown_list_checks)."
}
}
}List all monitoring checks on the account with their status (down, uptime, last_status, error), period, SSL certificate and domain-expiry info. Optionally filter client-side by status or a text match on URL/alias. updown: GET /api/checks.
| Argument | Type | Description |
|---|---|---|
| search | string | Case-insensitive substring to match against the check URL or alias. |
| status | string | Only checks in this state (default all). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"search": {
"type": "string",
"description": "Case-insensitive substring to match against the check URL or alias."
},
"status": {
"enum": [
"all",
"down",
"up",
"disabled"
],
"type": "string",
"description": "Only checks in this state (default all)."
}
}
}List the downtimes of one check, newest first, 100 per page: error, started_at, ended_at, duration (seconds) and a details URL. updown: GET /api/checks/:token/downtimes.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page to fetch (100 per page, default 1). |
| token* | string | The check's unique token, e.g. ngg8 (from updown_list_checks). |
| results | boolean | Include detailed results (last 5 requests before the downtime and recovery). Can be large. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"token"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page to fetch (100 per page, default 1)."
},
"token": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"minLength": 1,
"description": "The check's unique token, e.g. ngg8 (from updown_list_checks)."
},
"results": {
"type": "boolean",
"description": "Include detailed results (last 5 requests before the downtime and recovery). Can be large."
}
}
}List updown.io's server IP addresses — e.g. to allowlist the monitors in a firewall. Choose all, ipv4 or ipv6. Public — no API key needed. updown: GET /api/nodes/ips, /api/nodes/ipv4, /api/nodes/ipv6.
| Argument | Type | Description |
|---|---|---|
| family | string | Address family (default all). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"family": {
"enum": [
"all",
"ipv4",
"ipv6"
],
"type": "string",
"description": "Address family (default all)."
}
}
}List updown.io's monitoring/webhook servers keyed by location code (lan, mia, tor, rbx, fra, cap, hel, sin, tok, syd) with IPv4, IPv6, city, country and coordinates. Public — no API key needed. updown: GET /api/nodes.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the alert recipients/channels on the account (email, sms, slack, telegram, webhook, zapier, ...). The `id` (e.g. email:3719031852) is what check `recipients` take. updown: GET /api/recipients.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the account's status pages: token, public URL, name, description, visibility (public/protected/private) and the ordered check tokens shown. updown: GET /api/status_pages.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Change a check's settings — URL, period, alias, string match, recipients, headers, locations — or pause/resume it (enabled) or mute its alerts (mute_until). Only the fields you pass are changed. Caution: URLs returned by a read-only key hide basic-auth credentials; re-sending such a URL erases them. Requires the read/write API key. updown: PUT /api/checks/:token.
| Argument | Type | Description |
|---|---|---|
| url | string | New URL to monitor (not for pulse checks). |
| alias | string | Human-readable name for the check. |
| token* | string | The check's unique token, e.g. ngg8 (from updown_list_checks). |
| period | integer | Interval in seconds. Regular checks: 15, 30, 60, 120, 300, 600, 1800 or 3600 (default 60). Pulse checks: anywhere from 15 s to 1 month. |
| apdex_t | number | APDEX threshold in seconds: 0.125, 0.25, 0.5, 1.0, 2.0, 4.0 or 8.0 (default 0.5). |
| enabled | boolean | Whether the check runs. false pauses it (reversible). |
| http_body | string | HTTP body sent with the request. |
| http_verb |
Change a status page's checks (replaces the list, order respected), name, description, visibility or access key. Only the fields you pass are changed. Requires the read/write API key. updown: PUT /api/status_pages/:token.
| Argument | Type | Description |
|---|---|---|
| name | string | Name of the status page. |
| token* | string | The status page's unique token, e.g. 3ji4k (from updown_list_status_pages). |
| checks | array | New ordered list of check tokens to show (replaces the current list). |
| access_key | string | Access key for protected pages (defaults to a random 30-byte string). |
| visibility | string | Page visibility (default public). |
| description | string | Text displayed below the name (supports newlines and links). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"token"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the status page."
},
"token": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"minLength": 1,
"description": "The status page's unique token, e.g. 3ji4k (from updown_list_status_pages)."
},
"checks": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"minLength": 1,
"description": "The check's unique token, e.g. ngg8 (from updown_list_checks)."
},
"description": "New ordered list of check tokens to show (replaces the current list)."
},
"access_key": {
"type": "string",
"description": "Access key for protected pages (defaults to a random 30-byte string)."
},
"visibility": {
"enum": [
"public",
"protected",
"private"
],
"type": "string",
"description": "Page visibility (default public)."
},
"description": {
"type": "string",
"description": "Text displayed below the name (supports newlines and links)."
}
}
}| published | boolean | Whether the check's public status page is visible (default false). |
| mute_until | string | Mute notifications until a time (ISO8601, e.g. 2026-10-01T08:00:00Z), or 'recovery', or 'forever'. |
| recipients | array | Alert recipient ids to select, e.g. ['email:12345', 'sms:67890'] (from updown_list_recipients). |
| string_match | string | Text that must appear in the response. For TCP/TCPS checks, '<closed>' inverts the check (alert if the port is open). |
| custom_headers | object | HTTP headers updown sends with each request, e.g. { "X-Api-Key": "..." }. |
| disabled_locations | array | Monitoring locations to disable: lan, mia, tor, rbx, fra, cap, hel, sin, tok, syd. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"url": {
"type": "string",
"description": "The URL to monitor, e.g. https://example.com, tcp://host:port, icmp://host. Omit for pulse checks."
},
"type": {
"enum": [
"https",
"http",
"icmp",
"pulse",
"tcp",
"tcps"
],
"type": "string",
"description": "Check type; inferred from the URL by default — mainly useful for 'pulse'."
},
"alias": {
"type": "string",
"description": "Human-readable name for the check."
},
"period": {
"type": "integer",
"maximum": 2678400,
"minimum": 15,
"description": "Interval in seconds. Regular checks: 15, 30, 60, 120, 300, 600, 1800 or 3600 (default 60). Pulse checks: anywhere from 15 s to 1 month."
},
"apdex_t": {
"type": "number",
"description": "APDEX threshold in seconds: 0.125, 0.25, 0.5, 1.0, 2.0, 4.0 or 8.0 (default 0.5)."
},
"enabled": {
"type": "boolean",
"description": "Whether the check runs. false pauses it (reversible)."
},
"http_body": {
"type": "string",
"description": "HTTP body sent with the request."
},
"http_verb": {
"enum": [
"GET/HEAD",
"POST",
"PUT",
"PATCH",
"DELETE",
"OPTIONS"
],
"type": "string",
"description": "HTTP verb for the request (default GET/HEAD)."
},
"published": {
"type": "boolean",
"description": "Whether the check's public status page is visible (default false)."
},
"mute_until": {
"type": "string",
"description": "Mute notifications until a time (ISO8601, e.g. 2026-10-01T08:00:00Z), or 'recovery', or 'forever'."
},
"recipients": {
"type": "array",
"items": {
"type": "string"
},
"description": "Alert recipient ids to select, e.g. ['email:12345', 'sms:67890'] (from updown_list_recipients)."
},
"string_match": {
"type": "string",
"description": "Text that must appear in the response. For TCP/TCPS checks, '<closed>' inverts the check (alert if the port is open)."
},
"custom_headers": {
"type": "object",
"description": "HTTP headers updown sends with each request, e.g. { \"X-Api-Key\": \"...\" }.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"disabled_locations": {
"type": "array",
"items": {
"enum": [
"lan",
"mia",
"tor",
"rbx",
"fra",
"cap",
"hel",
"sin",
"tok",
"syd"
],
"type": "string"
},
"description": "Monitoring locations to disable: lan, mia, tor, rbx, fra, cap, hel, sin, tok, syd."
}
}
}| string |
| HTTP verb for the request (default GET/HEAD). |
| published | boolean | Whether the check's public status page is visible (default false). |
| mute_until | string | Mute notifications until a time (ISO8601, e.g. 2026-10-01T08:00:00Z), or 'recovery', or 'forever'. |
| recipients | array | Alert recipient ids to select, e.g. ['email:12345', 'sms:67890'] (from updown_list_recipients). |
| string_match | string | Text that must appear in the response. For TCP/TCPS checks, '<closed>' inverts the check (alert if the port is open). |
| custom_headers | object | HTTP headers updown sends with each request, e.g. { "X-Api-Key": "..." }. |
| disabled_locations | array | Monitoring locations to disable: lan, mia, tor, rbx, fra, cap, hel, sin, tok, syd. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"token"
],
"properties": {
"url": {
"type": "string",
"description": "New URL to monitor (not for pulse checks)."
},
"alias": {
"type": "string",
"description": "Human-readable name for the check."
},
"token": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"minLength": 1,
"description": "The check's unique token, e.g. ngg8 (from updown_list_checks)."
},
"period": {
"type": "integer",
"maximum": 2678400,
"minimum": 15,
"description": "Interval in seconds. Regular checks: 15, 30, 60, 120, 300, 600, 1800 or 3600 (default 60). Pulse checks: anywhere from 15 s to 1 month."
},
"apdex_t": {
"type": "number",
"description": "APDEX threshold in seconds: 0.125, 0.25, 0.5, 1.0, 2.0, 4.0 or 8.0 (default 0.5)."
},
"enabled": {
"type": "boolean",
"description": "Whether the check runs. false pauses it (reversible)."
},
"http_body": {
"type": "string",
"description": "HTTP body sent with the request."
},
"http_verb": {
"enum": [
"GET/HEAD",
"POST",
"PUT",
"PATCH",
"DELETE",
"OPTIONS"
],
"type": "string",
"description": "HTTP verb for the request (default GET/HEAD)."
},
"published": {
"type": "boolean",
"description": "Whether the check's public status page is visible (default false)."
},
"mute_until": {
"type": "string",
"description": "Mute notifications until a time (ISO8601, e.g. 2026-10-01T08:00:00Z), or 'recovery', or 'forever'."
},
"recipients": {
"type": "array",
"items": {
"type": "string"
},
"description": "Alert recipient ids to select, e.g. ['email:12345', 'sms:67890'] (from updown_list_recipients)."
},
"string_match": {
"type": "string",
"description": "Text that must appear in the response. For TCP/TCPS checks, '<closed>' inverts the check (alert if the port is open)."
},
"custom_headers": {
"type": "object",
"description": "HTTP headers updown sends with each request, e.g. { \"X-Api-Key\": \"...\" }.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"disabled_locations": {
"type": "array",
"items": {
"enum": [
"lan",
"mia",
"tor",
"rbx",
"fra",
"cap",
"hel",
"sin",
"tok",
"syd"
],
"type": "string"
},
"description": "Monitoring locations to disable: lan, mia, tor, rbx, fra, cap, hel, sin, tok, syd."
}
}
}