Skip to main content
Glama

Update check

update_check
DestructiveIdempotent

Change fields of an existing check by id and return the updated check. Only the fields sent change, and they must be ones the check's kind accepts; the kind itself can't change. notification_group_ids replaces the check's groups and needs the notification_groups:assign permission. For website and TCP checks, probe_locations replaces the whole set of region ids the check runs from. Values the check can't save return validation_failed, and a plan limit returns quota_exceeded with the limit and, when available, a billing upgrade URL; in both cases nothing changes.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "id": "<id>",
      "check": "<check>"
    },
    "name": "update_check"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesCheck id (check_…).
checkYesFields to change. Omitted fields keep their values, and kind must stay the same.

Output Schema

NameRequiredDescriptionDefault
idYes
statusYes
expires_onYes
configurationYes
dashboard_idsYes
status_reasonYes
last_activity_atYes
notification_group_idsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed26 schema fields changed
    • changedOutput schema / properties / configuration / properties / cron_expression / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "maxLength": 255,
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Five-field cron schedule, such as 0 3 * * *, read in timezone. Used when schedule_type is cron."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / degraded_threshold / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "maximum": 2147483647,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "How many of the check's locations must be up for it to be healthy; null means all of them. Can't be more than the check's location count."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / dns_expected_values / anyOf
      Previous value: -[
      -  {
      -    "description": "Record values to compare with, such as IP addresses. Unused when dns_match_mode is resolves.",
      -    "items": {
      -      "maxLength": 4096,
      -      "type": "string"
      -    },
      -    "maxItems": 100,
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / dns_match_mode / anyOf
      Previous value: -[
      -  {
      -    "description": "resolves passes on any answer; exact needs the answers to equal dns_expected_values; includes needs every expected value among the answers.",
      -    "enum": [
      -      "resolves",
      -      "exact",
      -      "includes"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "resolves",
      +      "exact",
      +      "includes"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / dns_record_type / anyOf
      Previous value: -[
      -  {
      -    "description": "Record type to look up.",
      -    "enum": [
      -      "A",
      -      "AAAA",
      -      "CNAME",
      -      "MX",
      -      "TXT",
      -      "NS",
      -      "CAA"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "A",
      +      "AAAA",
      +      "CNAME",
      +      "MX",
      +      "TXT",
      +      "NS",
      +      "CAA"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / expected_status_code / anyOf
      Previous value: -[
      -  {
      -    "description": "HTTP status that counts as up, such as 200.",
      -    "maximum": 599,
      -    "minimum": 100,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / failing_threshold / anyOf
      Previous value: -[
      -  {
      -    "description": "How many of the check's locations must be up for it to avoid being down. A location count, not a number of failed runs. Can't be more than the check's location count.",
      -    "maximum": 2147483647,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / follow_redirects / anyOf
      Previous value: -[
      -  {
      -    "description": "Follow redirects and check the final response's status.",
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / grace_period_seconds / anyOf
      Previous value: -[
      -  {
      -    "description": "Seconds a heartbeat may run late before the check is marked late.",
      -    "maximum": 2147483647,
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / hostname / anyOf
      Previous value: -[
      -  {
      -    "description": "Hostname to check, without a scheme or path, such as example.com.",
      -    "maxLength": 255,
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / interval_seconds / anyOf
      Previous value: -[
      -  {
      -    "description": "Seconds between runs: how often a heartbeat is expected, or how often Pingstack runs the check. Can't be below the plan's min_interval_seconds.",
      -    "maximum": 2147483647,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / configuration / properties / kind / description
      Removed value: -"What the check monitors: ping (a heartbeat from a cron job or scheduled task), website (HTTP), dns, domain (registration expiry), ssl_certificate (certificate expiry) or tcp (an open port)."
    • changedOutput schema / properties / configuration / properties / kind / enum
      Previous value: -[
      -  "ping",
      -  "website",
      -  "dns",
      -  "domain",
      -  "ssl_certificate",
      -  "tcp"
      -]New value: +[
      +  "ping",
      +  "website",
      +  "domain",
      +  "ssl_certificate",
      +  "dns",
      +  "tcp"
      +]
    • changedOutput schema / properties / configuration / properties / port / anyOf
      Previous value: -[
      -  {
      -    "description": "TCP port that must accept a connection.",
      -    "maximum": 65535,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / probe_locations / anyOf
      Previous value: -[
      -  {
      -    "description": "Region ids the check runs from, such as us-east-1, from the account's probe_locations. Replaces the whole set, up to the plan's included_probe_locations.",
      -    "items": {
      -      "maxLength": 100,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "maxItems": 100,
      -    "minItems": 1,
      -    "type": "array",
      -    "uniqueItems": true
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / renewal_critical_days / anyOf
      Previous value: -[
      -  {
      -    "description": "Days before expiry when the check goes down. Lower than renewal_warning_days.",
      -    "maximum": 2147483647,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / renewal_warning_days / anyOf
      Previous value: -[
      -  {
      -    "description": "Days before expiry when the check becomes degraded.",
      -    "maximum": 2147483647,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / schedule_type / anyOf
      Previous value: -[
      -  {
      -    "description": "interval expects a heartbeat every interval_seconds; cron expects one on cron_expression's schedule.",
      -    "enum": [
      -      "interval",
      -      "cron"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "interval",
      +      "cron"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / timezone / anyOf
      Previous value: -[
      -  {
      -    "description": "IANA time zone for cron_expression, such as America/New_York.",
      -    "maxLength": 255,
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / configuration / properties / url
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / configuration / properties / url_has_query
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / configuration / properties / value_critical_threshold / anyOf
      Previous value: -[
      -  {
      -    "description": "Reported value that makes the check go down. Past value_warning_threshold in value_direction.",
      -    "type": [
      -      "number",
      -      "null"
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / value_direction / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          "above",
      -          "below"
      -        ],
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "For heartbeats that report a number: whether values at or above, or at or below, the thresholds are bad."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "enum": [
      +          "above",
      +          "below"
      +        ],
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / value_warning_threshold / anyOf
      Previous value: -[
      -  {
      -    "description": "Reported value that makes the check degraded. Set together with value_critical_threshold; both null turns value alerts off.",
      -    "type": [
      -      "number",
      -      "null"
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / status_reason
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "status",
      -  "last_activity_at",
      -  "expires_on",
      -  "configuration",
      -  "notification_group_ids",
      -  "dashboard_ids"
      -]New value: +[
      +  "id",
      +  "status",
      +  "status_reason",
      +  "last_activity_at",
      +  "expires_on",
      +  "configuration",
      +  "notification_group_ids",
      +  "dashboard_ids"
      +]
  2. Added

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (destructive, idempotent, not read-only), the description discloses the permission needed for a specific field, that notification_group_ids and probe_locations replace rather than merge, and the exact failure modes (validation_failed, quota_exceeded with limit and optional billing URL) with the guarantee that nothing changes on failure. This is meaningful behavior an agent cannot get from the structured fields.

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

Conciseness4/5

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

The core action is front-loaded and nearly every clause carries information (partial update, permissions, replacement semantics, error contract). The final sentence is long and packs two error codes plus a billing URL, which costs a little readability but nothing is redundant.

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

Completeness5/5

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

For a mutation tool with a nested 2-parameter schema and an output schema, the description covers the things the schema can't: partial-update behavior, cross-field constraints, authorization, and the failure contract. An agent has everything needed to call it correctly and interpret errors.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics beyond the schema: which fields are valid depends on the check's kind, kind is immutable, and the two array fields are whole-set replacements. The only minor gap is that the "kind accepts" constraint isn't spelled out field-by-field.

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

Purpose5/5

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

The description opens with a specific verb and resource ("Change fields of an existing check by id") and states the return ("return the updated check"). That cleanly separates it from create_check, delete_check, get_check, and pause_check/resume_check in the sibling list.

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 clear operating context: partial-update semantics ("Only the fields sent change"), an explicit exclusion ("the kind itself can't change"), and a permission prerequisite for notification_group_ids. It does not name alternative tools for adjacent operations such as pause/resume or re-assigning notification groups, so it stops short of full when/when-not routing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources