Skip to main content
Glama
DavidFuchs

mcp-uptime-kuma

by DavidFuchs

Update Monitor

updateMonitor

Update an existing Uptime Kuma monitor's configuration by ID. Only supplied fields change; all other settings stay intact.

Instructions

Updates an existing monitor configuration. You must include the monitorID. Only the fields you provide will be changed (the server merges your changes with the existing config). Use getMonitor first to get the current config.

Input Schema

NameRequiredDescriptionDefault
urlNoURL to monitor
bodyNoHTTP request body
nameNoDisplay name
portNoPort number
tagsNoTags to assign
activeNoWhether the monitor is active
methodNoHTTP method
parentNoParent group monitor ID — re-parents this monitor into that group. Pass null to move it to the top level.
headersNoHTTP headers as JSON string
keywordNoKeyword to search for
timeoutNoRequest timeout in SECONDS. Avoid 0 — Uptime Kuma's runtime fallback for a stored 0 yields a ~13 hour timeout, so the monitor can never report DOWN against a black-holed endpoint.
hostnameNoHostname
intervalNoCheck interval in seconds
jsonPathNoJSONata expression for json-query monitors. Must resolve to a primitive.
parentIDNoAlias for parent. Prefer parent.
ignoreTlsNoIgnore TLS/SSL errors
json_pathNoAlias for jsonPath (the database column name). Prefer jsonPath.
monitorIDYesThe ID of the monitor to update
parent_idNoAlias for parent. Prefer parent.
pushTokenNoPush token — the secret in the ping URL. Changing it invalidates the existing URL and any sender still using it stops beating.
maxretriesNoMax retries before marking as down
push_tokenNoAlias for pushToken (the database column name). Prefer pushToken.
upsideDownNoInvert status
descriptionNoFree-text description shown on the monitor page
docker_hostNoDocker host ID (required for docker type). Use listDockerHosts to find available IDs.
maxredirectsNoMax HTTP redirects
databaseQueryNoQuery for database monitors. SQL for mysql, postgres and sqlserver; a JSON command object for mongodb.
expectedValueNoThreshold the json-query result is compared against, stored as a string.
invertKeywordNoInvert keyword match
retryIntervalNoRetry interval in seconds
database_queryNoAlias for databaseQuery (the database column name). Prefer databaseQuery.
expected_valueNoAlias for expectedValue. Prefer expectedValue.
radiusPasswordNoThe column databasePassword is stored in; also the RADIUS password. Prefer databasePassword for mysql.
resendIntervalNoResend notification every N checks while down (0 = disabled)
databasePasswordNoPassword for mysql monitors, stored by Uptime Kuma as radiusPassword. Sending "***" back keeps the stored value.
dns_resolve_typeNoDNS record type to query (for dns type)
docker_containerNoDocker container name (required for docker type)
jsonPathOperatorNoComparison operator for json-query monitors.
dns_resolve_serverNoDNS server to use for resolution (for dns type)
json_path_operatorNoAlias for jsonPathOperator. Prefer jsonPathOperator.
notificationIDListNoNotification ID map
accepted_statuscodesNoAccepted HTTP status codes
databaseConnectionStringNoConnection string for mysql, postgres, mongodb, redis and sqlserver monitors. A credential: read tools return "***", and sending "***" back keeps the stored value.
database_connection_stringNoAlias for databaseConnectionString (the database column name). Prefer databaseConnectionString.

Output Schema

NameRequiredDescriptionDefault
okYes
msgNo
monitorIDNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.12.1
    • addedInput schema / properties / databaseConnectionString
      Added value: +{
      +  "description": "Connection string for mysql, postgres, mongodb, redis and sqlserver monitors. A credential: read tools return \"***\", and sending \"***\" back keeps the stored value.",
      +  "type": "string"
      +}
    • addedInput schema / properties / databasePassword
      Added value: +{
      +  "description": "Password for mysql monitors, stored by Uptime Kuma as radiusPassword. Sending \"***\" back keeps the stored value.",
      +  "type": "string"
      +}
    • addedInput schema / properties / databaseQuery
      Added value: +{
      +  "description": "Query for database monitors. SQL for mysql, postgres and sqlserver; a JSON command object for mongodb.",
      +  "type": "string"
      +}
    • addedInput schema / properties / database_connection_string
      Added value: +{
      +  "description": "Alias for databaseConnectionString (the database column name). Prefer databaseConnectionString.",
      +  "type": "string"
      +}
    • addedInput schema / properties / database_query
      Added value: +{
      +  "description": "Alias for databaseQuery (the database column name). Prefer databaseQuery.",
      +  "type": "string"
      +}
    • addedInput schema / properties / radiusPassword
      Added value: +{
      +  "description": "The column databasePassword is stored in; also the RADIUS password. Prefer databasePassword for mysql.",
      +  "type": "string"
      +}
  2. Changed4 schema fields changedv0.11.9
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / properties / timeout / anyOf
      Added value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / timeout / type
      Removed value: -[
      -  "number",
      -  "null"
      -]
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  3. First observedv0.0.0-dev

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers the key non-obvious behavior: this is a partial-update/merge operation where unprovided fields are preserved, not overwritten. It does not disclose permission needs, reversibility, or that writing '***' preserves stored secrets — though the schema covers the latter — so a small gap remains for a 44-parameter mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: identity requirement first, then merge behavior, then the recommended follow-up call. No repetition of schema fields, no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a rich 44-parameter schema with full descriptions and an output schema, the description covers what an agent most needs to avoid a destructive mistake: the ID is required and updates merge rather than replace. It could do slightly more about type-specific fields and alias preferences, which is the main remaining risk area.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds the merge semantics ('only the fields you provide will be changed') and the monitorID requirement, which are real value, but it does not address the large alias set (parent/parentID/parent_id, pushToken/push_token, jsonPath/json_path) or type-specific required fields that dominate this schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource pair ('Updates an existing monitor configuration') and immediately narrows scope to existing monitors via the required monitorID. It doesn't explicitly contrast with createMonitor, but 'existing' does enough to separate the two in practice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit prerequisite workflow: 'Use getMonitor first to get the current config,' naming the sibling to call. Missing is any when-not guidance (e.g. use pauseMonitor to toggle active state, or createMonitor for new monitors), so it stops short of a full routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.