UptyBots

Uptime monitoring: create and manage HTTP, API, SSL, ping, port and domain checks

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
99%
Qualität der Benennung
100%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~4,654Tokens (Tool-Definitionen)
~2.5 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (3.64% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "monitoring": {
      "command": "npx",
      "args": [
        "uptybots-mcp-server"
      ]
    }
  }
}

Ausführbare Pakete

npmuptybots-mcp-server1.3.1stdio

Remote-Endpunkte

https://mcp.uptybots.com/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (15)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢list_monitors(type, status, page)

List the monitors on the account, newest first, 30 per page. Each entry carries the id needed by every other tool, plus name, url, type, current status, check frequency and the uptime percentage over the last 24 hours. Start here when the request names a monitor by name rather than by id, and when asked what is broken - filtering by status "down" answers that in one call. Returns an empty list rather than an error when nothing matches.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "PING",
        "HTTP",
        "API",
        "SSL",
        "DOMAIN",
        "PORT"
      ],
      "description": "Return only monitors of this type. Omit for all types."
    },
    "status": {
      "type": "string",
      "enum": [
        "up",
        "down",
        "paused",
        "pending"
      ],
      "description": "Return only monitors in this state. \"pending\" means created but not yet checked; \"paused\" means checking is switched off, so it is neither up nor down."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number, 1-based. Defaults to 1."
    }
  },
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The rows on this page."
    },
    "totalItems": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Total across all pages, not just this one."
    }
  },
  "required": [
    "items"
  ]
}
🟢get_monitor(id)

Read one monitor in full: its configuration, current status, and the type-specific detail the list view omits - expected status codes for HTTP, port and protocol for PORT, certificate or registration expiry date for SSL and DOMAIN. Use it after list_monitors when the answer depends on how the check is configured, for instance whether a timeout is too tight or which port is actually being watched.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": 1,
      "description": "Monitor id, as returned by list_monitors."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Monitor id, used by every other tool."
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "PING",
        "HTTP",
        "API",
        "SSL",
        "DOMAIN",
        "PORT"
      ]
    },
    "statusSummary": {
      "type": "string",
      "description": "Current state, for example GOOD or ERROR."
    },
    "frequency": {
      "type": "integer",
      "description": "Check interval in minutes."
    },
    "isActive": {
      "type": "boolean",
      "description": "False while the monitor is paused."
    }
  },
  "required": [
    "id"
  ]
}
🟡create_http_monitor(name, url, frequency, requestTimeout, isActive)

Watch a web page or endpoint over HTTP/HTTPS and treat an unexpected status code, a timeout or a connection failure as downtime. This is the right type for anything a browser would open. Choose create_api_monitor instead when the response body matters as well as the status code. Checks run from probes in several countries. Call list_monitors first so you do not create a duplicate of an existing url.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 50,
      "description": "Label shown in the dashboard and in alerts, up to 50 characters. Something recognisable months later beats the bare hostname."
    },
    "url": {
      "type": "string",
      "description": "Full URL including scheme, for example https://example.com/health. A bare hostname is not accepted here - use create_ping_monitor for that."
    },
    "frequency": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1440,
      "description": "Check frequency in minutes (1-1440, default 5)"
    },
    "requestTimeout": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "description": "Request timeout in seconds (1-60, default 30)"
    },
    "isActive": {
      "type": "boolean",
      "description": "Start monitoring immediately (default true)"
    }
  },
  "required": [
    "name",
    "url"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Monitor id, used by every other tool."
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "PING",
        "HTTP",
        "API",
        "SSL",
        "DOMAIN",
        "PORT"
      ]
    },
    "statusSummary": {
      "type": "string",
      "description": "Current state, for example GOOD or ERROR."
    },
    "frequency": {
      "type": "integer",
      "description": "Check interval in minutes."
    },
    "isActive": {
      "type": "boolean",
      "description": "False while the monitor is paused."
    }
  },
  "required": [
    "id"
  ]
}
🟡create_api_monitor(name, url, frequency, requestTimeout, isActive)

Watch a JSON or REST endpoint where the response itself matters, not only that the host answered. Use it for health endpoints, webhooks and any API whose failure would be invisible to a plain page check. For an ordinary web page, create_http_monitor is lighter and enough.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 50,
      "description": "Label shown in the dashboard and in alerts, up to 50 characters. Something recognisable months later beats the bare hostname."
    },
    "url": {
      "type": "string",
      "description": "Full endpoint URL including scheme, for example https://api.example.com/v1/status."
    },
    "frequency": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1440,
      "description": "Check frequency in minutes (1-1440, default 5)"
    },
    "requestTimeout": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "description": "Request timeout in seconds (1-60, default 30)"
    },
    "isActive": {
      "type": "boolean",
      "description": "Start monitoring immediately (default true)"
    }
  },
  "required": [
    "name",
    "url"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Monitor id, used by every other tool."
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "PING",
        "HTTP",
        "API",
        "SSL",
        "DOMAIN",
        "PORT"
      ]
    },
    "statusSummary": {
      "type": "string",
      "description": "Current state, for example GOOD or ERROR."
    },
    "frequency": {
      "type": "integer",
      "description": "Check interval in minutes."
    },
    "isActive": {
      "type": "boolean",
      "description": "False while the monitor is paused."
    }
  },
  "required": [
    "id"
  ]
}
🟡create_ping_monitor(name, url, frequency, isActive)

Watch a host with ICMP ping: it answers whether the machine is reachable at all, and reports round-trip time and packet loss. Use it for servers, routers and anything with no web service on top. It says nothing about whether a site or service on that host is working - a box can ping perfectly while its web server is down. Some hosting providers block ICMP, in which case the monitor will read as down.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 50,
      "description": "Label shown in the dashboard and in alerts, up to 50 characters. Something recognisable months later beats the bare hostname."
    },
    "url": {
      "type": "string",
      "description": "Hostname or IP address, with no scheme and no port, for example example.com or 1.2.3.4."
    },
    "frequency": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1440,
      "description": "Check frequency in minutes (1-1440, default 5)"
    },
    "isActive": {
      "type": "boolean",
      "description": "Start monitoring immediately (default true)"
    }
  },
  "required": [
    "name",
    "url"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Monitor id, used by every other tool."
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "PING",
        "HTTP",
        "API",
        "SSL",
        "DOMAIN",
        "PORT"
      ]
    },
    "statusSummary": {
      "type": "string",
      "description": "Current state, for example GOOD or ERROR."
    },
    "frequency": {
      "type": "integer",
      "description": "Check interval in minutes."
    },
    "isActive": {
      "type": "boolean",
      "description": "False while the monitor is paused."
    }
  },
  "required": [
    "id"
  ]
}
🟡create_port_monitor(name, url, protocol, frequency, isActive)

Watch one TCP or UDP port on a host and report it up only when the service behind it actually answers. This is the type for game servers, databases, mail and anything else that speaks its own protocol rather than HTTP - Minecraft, Rust, CS2, FiveM, Postgres, Redis, SMTP. The port must be given as part of the url. Set protocol to UDP for game servers; most of them do not answer on TCP at all.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 50,
      "description": "Label shown in the dashboard and in alerts, up to 50 characters. Something recognisable months later beats the bare hostname."
    },
    "url": {
      "type": "string",
      "description": "Host and port separated by a colon, for example example.com:443 or 1.2.3.4:25565. The port is required; without it the monitor cannot be created."
    },
    "protocol": {
      "type": "string",
      "enum": [
        "TCP",
        "UDP"
      ],
      "description": "TCP is the default and fits most services. Use UDP for game servers and anything else that does not answer on TCP; on UDP the port counts as up only when the server actually replies."
    },
    "frequency": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1440,
      "description": "Check frequency in minutes (1-1440, default 5)"
    },
    "isActive": {
      "type": "boolean",
      "description": "Start monitoring immediately (default true)"
    }
  },
  "required": [
    "name",
    "url"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Monitor id, used by every other tool."
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "PING",
        "HTTP",
        "API",
        "SSL",
        "DOMAIN",
        "PORT"
      ]
    },
    "statusSummary": {
      "type": "string",
      "description": "Current state, for example GOOD or ERROR."
    },
    "frequency": {
      "type": "integer",
      "description": "Check interval in minutes."
    },
    "isActive": {
      "type": "boolean",
      "description": "False while the monitor is paused."
    }
  },
  "required": [
    "id"
  ]
}
🟡create_ssl_monitor(name, url, isActive)

Watch a TLS certificate: whether it is valid, who issued it, and how many days remain before it expires. This is about the certificate, not about the site being reachable - pair it with create_http_monitor when you want both. Note that such a monitor carries two independent states, one for reachability and one for expiry, so a certificate can be days from expiring while the check still reads up.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 50,
      "description": "Label shown in the dashboard and in alerts, up to 50 characters. Something recognisable months later beats the bare hostname."
    },
    "url": {
      "type": "string",
      "description": "Domain whose certificate to inspect, for example example.com. No scheme, no path."
    },
    "isActive": {
      "type": "boolean",
      "description": "Start monitoring immediately (default true)"
    }
  },
  "required": [
    "name",
    "url"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Monitor id, used by every other tool."
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "PING",
        "HTTP",
        "API",
        "SSL",
        "DOMAIN",
        "PORT"
      ]
    },
    "statusSummary": {
      "type": "string",
      "description": "Current state, for example GOOD or ERROR."
    },
    "frequency": {
      "type": "integer",
      "description": "Check interval in minutes."
    },
    "isActive": {
      "type": "boolean",
      "description": "False while the monitor is paused."
    }
  },
  "required": [
    "id"
  ]
}
🟡create_domain_monitor(name, url, isActive)

Watch a domain registration and report how long is left before it lapses, read from WHOIS. This catches the failure no uptime check can see: everything works perfectly right up to the day the domain expires. Distinct from create_ssl_monitor, which watches the certificate rather than the registration; the two expire on different dates and both are worth watching.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 50,
      "description": "Label shown in the dashboard and in alerts, up to 50 characters. Something recognisable months later beats the bare hostname."
    },
    "url": {
      "type": "string",
      "description": "Registrable domain, for example example.com. Use the registered domain rather than a subdomain: a subdomain has no registration date of its own."
    },
    "isActive": {
      "type": "boolean",
      "description": "Start monitoring immediately (default true)"
    }
  },
  "required": [
    "name",
    "url"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Monitor id, used by every other tool."
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "PING",
        "HTTP",
        "API",
        "SSL",
        "DOMAIN",
        "PORT"
      ]
    },
    "statusSummary": {
      "type": "string",
      "description": "Current state, for example GOOD or ERROR."
    },
    "frequency": {
      "type": "integer",
      "description": "Check interval in minutes."
    },
    "isActive": {
      "type": "boolean",
      "description": "False while the monitor is paused."
    }
  },
  "required": [
    "id"
  ]
}
⚪pause_monitor(id)

Stop checking a monitor without deleting it. History and configuration survive, and resume_monitor puts it back to work. Use this around planned maintenance so the downtime does not land in the uptime figures or fire alerts. A paused monitor reports neither up nor down, so it is easy to forget one is off.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": 1,
      "description": "Monitor id to pause, as returned by list_monitors."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Monitor id, used by every other tool."
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "PING",
        "HTTP",
        "API",
        "SSL",
        "DOMAIN",
        "PORT"
      ]
    },
    "statusSummary": {
      "type": "string",
      "description": "Current state, for example GOOD or ERROR."
    },
    "frequency": {
      "type": "integer",
      "description": "Check interval in minutes."
    },
    "isActive": {
      "type": "boolean",
      "description": "False while the monitor is paused."
    }
  },
  "required": [
    "id"
  ]
}
🟢resume_monitor(id)

Start checking a paused monitor again, with the configuration it had before. The first check runs immediately rather than after the usual interval, so the current state is known within moments. Safe to call on a monitor that is already running.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": 1,
      "description": "Monitor id to resume, as returned by list_monitors."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Monitor id, used by every other tool."
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "PING",
        "HTTP",
        "API",
        "SSL",
        "DOMAIN",
        "PORT"
      ]
    },
    "statusSummary": {
      "type": "string",
      "description": "Current state, for example GOOD or ERROR."
    },
    "frequency": {
      "type": "integer",
      "description": "Check interval in minutes."
    },
    "isActive": {
      "type": "boolean",
      "description": "False while the monitor is paused."
    }
  },
  "required": [
    "id"
  ]
}
🔴delete_monitor(id)

Permanently delete a monitor together with its entire check history, incidents and statistics. This cannot be undone and there is no trash to restore from. Confirm with the user before calling it, and prefer pause_monitor whenever the intent is only to stop the checking for a while.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": 1,
      "description": "Monitor id to delete, as returned by list_monitors. Deletion is irreversible."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "success"
  ]
}
🟢get_incidents(monitorId, page)

Read the downtime history of one monitor: when each outage began, when it ended, how long it lasted and what the failure actually was - HTTP status, error text, and which probe saw it. This is the tool for "what happened" and "how often does this break". For the shape of response times around an outage, follow up with get_stats_hourly.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "monitorId": {
      "type": "integer",
      "minimum": 1,
      "description": "Monitor id, as returned by list_monitors."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number, 1-based. Defaults to 1."
    }
  },
  "required": [
    "monitorId"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The rows on this page."
    },
    "totalItems": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Total across all pages, not just this one."
    }
  },
  "required": [
    "items"
  ]
}
🟢get_stats_hourly(monitorId, dateFrom, dateTo, page)

Response time and uptime for one monitor broken down by hour, with min, max, average and p95 per bucket. Use it to see the shape of a problem: whether a service degrades before it fails, whether outages cluster at a particular time of day, or how long a single incident really lasted. Best over hours or days; for weeks and months use get_stats_daily instead, which returns far fewer rows.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "monitorId": {
      "type": "integer",
      "minimum": 1,
      "description": "Monitor id, as returned by list_monitors."
    },
    "dateFrom": {
      "type": "string",
      "description": "First day to include, as YYYY-MM-DD. Defaults to the start of available history."
    },
    "dateTo": {
      "type": "string",
      "description": "Last day to include, as YYYY-MM-DD. Defaults to today."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number, 1-based. Defaults to 1."
    }
  },
  "required": [
    "monitorId"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The rows on this page."
    },
    "totalItems": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Total across all pages, not just this one."
    }
  },
  "required": [
    "items"
  ]
}
🟢get_stats_daily(monitorId, dateFrom, dateTo, page)

Response time and uptime for one monitor aggregated per day, with min, max, average and p95. This is the tool for reports and trends over weeks or months, and for comparing one monitor against another over the same window. When a single day looks wrong, zoom into it with get_stats_hourly.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "monitorId": {
      "type": "integer",
      "minimum": 1,
      "description": "Monitor id, as returned by list_monitors."
    },
    "dateFrom": {
      "type": "string",
      "description": "First day to include, as YYYY-MM-DD. Defaults to the start of available history."
    },
    "dateTo": {
      "type": "string",
      "description": "Last day to include, as YYYY-MM-DD. Defaults to today."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number, 1-based. Defaults to 1."
    }
  },
  "required": [
    "monitorId"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The rows on this page."
    },
    "totalItems": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Total across all pages, not just this one."
    }
  },
  "required": [
    "items"
  ]
}
🟢get_notifications(channel, status, page)

Read the alerts this account has sent, across email, Telegram, webhook and the web interface, with the delivery outcome of each. Use it to answer "was I actually told about this outage" and to find a channel that is silently failing - a monitor can be detecting downtime correctly while its webhook has been rejecting every delivery. Covers the whole account, not one monitor.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "channel": {
      "type": "string",
      "enum": [
        "email",
        "telegram",
        "webhook",
        "web"
      ],
      "description": "Return only alerts sent through this channel. Omit for all channels."
    },
    "status": {
      "type": "string",
      "description": "Return only alerts with this delivery status."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number, 1-based. Defaults to 1."
    }
  },
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The rows on this page."
    },
    "totalItems": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Total across all pages, not just this one."
    }
  },
  "required": [
    "items"
  ]
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet15 Tools
verifiziertVersion nicht aufgezeichnet15 Tools