Skip to main content
Glama
devhelmhq

DevHelm MCP Server

Official
by devhelmhq

update_monitor

Modify an existing monitor's configuration to adjust checks, alerting, assertions, or incident policies without recreating it.

Instructions

Update an existing monitor's configuration.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyYes
monitor_idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed4 schema fields changedv1.7.0
    • changedInput schema / properties / body / properties / assertions / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "config": {
      -          "oneOf": [
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "substring": {
      -                  "description": "Substring that must appear in the response body",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "body_contains",
      -                  "default": "body_contains",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "substring"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "dns_expected_cname",
      -                  "default": "dns_expected_cname",
      -                  "type": "string"
      -                },
      -                "value": {
      -                  "description": "Expected CNAME target the resolution must include",
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "value"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "ips": {
      -                  "description": "Allowed IP addresses; at least one resolved address must match",
      -                  "items": {
      -                    "type": "string"
      -                  },
      -                  "minItems": 1,
      -                  "type": "array"
      -                },
      -                "type": {
      -                  "const": "dns_expected_ips",
      -                  "default": "dns_expected_ips",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "ips"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "max": {
      -                  "description": "Maximum number of answers allowed for that record type",
      -                  "type": "integer"
      -                },
      -                "recordType": {
      -                  "description": "DNS record type whose answer count is checked",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "dns_max_answers",
      -                  "default": "dns_max_answers",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "recordType",
      -                "max"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "min": {
      -                  "description": "Minimum number of answers required for that record type",
      -                  "type": "integer"
      -                },
      -                "recordType": {
      -                  "description": "DNS record type whose answer count is checked",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "dns_min_answers",
      -                  "default": "dns_min_answers",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "recordType",
      -                "min"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "recordType": {
      -                  "description": "DNS record type to assert on (A, AAAA, CNAME, MX, TXT)",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "substring": {
      -                  "description": "Substring that must appear in a matching record value",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "dns_record_contains",
      -                  "default": "dns_record_contains",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "recordType",
      -                "substring"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "recordType": {
      -                  "description": "DNS record type to assert on (A, AAAA, CNAME, MX, TXT)",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "dns_record_equals",
      -                  "default": "dns_record_equals",
      -                  "type": "string"
      -                },
      -                "value": {
      -                  "description": "Expected DNS record value for an exact match",
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "recordType",
      -                "value"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "dns_resolves",
      -                  "default": "dns_resolves",
      -                  "type": "string"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "maxMs": {
      -                  "description": "Maximum allowed DNS resolution time in milliseconds",
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "dns_response_time",
      -                  "default": "dns_response_time",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "maxMs"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "dns_response_time_warn",
      -                  "default": "dns_response_time_warn",
      -                  "type": "string"
      -                },
      -                "warnMs": {
      -                  "description": "DNS resolution time in milliseconds that triggers a warning only",
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "warnMs"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "maxTtl": {
      -                  "description": "Maximum TTL in seconds before a high-TTL warning is raised",
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "dns_ttl_high",
      -                  "default": "dns_ttl_high",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "maxTtl"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "minTtl": {
      -                  "description": "Minimum acceptable TTL in seconds before a warning is raised",
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "dns_ttl_low",
      -                  "default": "dns_ttl_low",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "minTtl"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "substring": {
      -                  "description": "Substring that must appear in at least one TXT record",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "dns_txt_contains",
      -                  "default": "dns_txt_contains",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "substring"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "expected": {
      -                  "description": "Expected value to compare against",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "headerName": {
      -                  "description": "HTTP header name to assert on",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "operator": {
      -                  "description": "Comparison operator (equals, contains, less_than, greater_than, etc.)",
      -                  "enum": [
      -                    "equals",
      -                    "contains",
      -                    "less_than",
      -                    "greater_than",
      -                    "matches",
      -                    "range"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "header_value",
      -                  "default": "header_value",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "headerName",
      -                "expected",
      -                "operator"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "maxDeviationPercent": {
      -                  "description": "Max percent drift from expected ping interval before warning (non-fatal)",
      -                  "maximum": 100,
      -                  "minimum": 1,
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "heartbeat_interval_drift",
      -                  "default": "heartbeat_interval_drift",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "maxDeviationPercent"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "maxSeconds": {
      -                  "description": "Maximum allowed gap in seconds between consecutive heartbeat pings",
      -                  "minimum": 1,
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "heartbeat_max_interval",
      -                  "default": "heartbeat_max_interval",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "maxSeconds"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "path": {
      -                  "description": "JSONPath expression into the heartbeat ping JSON payload",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "heartbeat_payload_contains",
      -                  "default": "heartbeat_payload_contains",
      -                  "type": "string"
      -                },
      -                "value": {
      -                  "description": "Expected value to compare against at that path",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "path",
      -                "value"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "heartbeat_received",
      -                  "default": "heartbeat_received",
      -                  "type": "string"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "maxPercent": {
      -                  "description": "Maximum allowed packet loss percentage before the check fails (0–100)",
      -                  "maximum": 100,
      -                  "minimum": 0,
      -                  "type": "number"
      -                },
      -                "type": {
      -                  "const": "icmp_packet_loss",
      -                  "default": "icmp_packet_loss",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "maxPercent"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "icmp_reachable",
      -                  "default": "icmp_reachable",
      -                  "type": "string"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "maxMs": {
      -                  "description": "Maximum average ICMP round-trip time in milliseconds",
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "icmp_response_time",
      -                  "default": "icmp_response_time",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "maxMs"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "icmp_response_time_warn",
      -                  "default": "icmp_response_time_warn",
      -                  "type": "string"
      -                },
      -                "warnMs": {
      -                  "description": "ICMP round-trip time in milliseconds that triggers a warning only",
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "warnMs"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "expected": {
      -                  "description": "Expected value to compare against",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "operator": {
      -                  "description": "Comparison operator (equals, contains, less_than, greater_than, etc.)",
      -                  "enum": [
      -                    "equals",
      -                    "contains",
      -                    "less_than",
      -                    "greater_than",
      -                    "matches",
      -                    "range"
      -                  ],
      -                  "type": "string"
      -                },
      -                "path": {
      -                  "description": "JSONPath expression to extract a value from the response body",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "json_path",
      -                  "default": "json_path",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "path",
      -                "expected",
      -                "operator"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "mcp_connects",
      -                  "default": "mcp_connects",
      -                  "type": "string"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "capability": {
      -                  "description": "Capability name the server must advertise, e.g. tools or resources",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "mcp_has_capability",
      -                  "default": "mcp_has_capability",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "capability"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "min": {
      -                  "description": "Minimum number of tools the server must expose",
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "mcp_min_tools",
      -                  "default": "mcp_min_tools",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "min"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "mcp_protocol_version",
      -                  "default": "mcp_protocol_version",
      -                  "type": "string"
      -                },
      -                "version": {
      -                  "description": "Expected MCP protocol version string from the server handshake",
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "version"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "maxMs": {
      -                  "description": "Maximum allowed MCP check duration in milliseconds",
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "mcp_response_time",
      -                  "default": "mcp_response_time",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "maxMs"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "mcp_response_time_warn",
      -                  "default": "mcp_response_time_warn",
      -                  "type": "string"
      -                },
      -                "warnMs": {
      -                  "description": "MCP check duration in milliseconds that triggers a warning only",
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "warnMs"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "toolName": {
      -                  "description": "MCP tool name that must appear in the server's tool list",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "mcp_tool_available",
      -                  "default": "mcp_tool_available",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "toolName"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "expectedCount": {
      -                  "description": "Expected tool count; warns when the live count differs",
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "mcp_tool_count_changed",
      -                  "default": "mcp_tool_count_changed",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "expectedCount"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "maxCount": {
      -                  "description": "Maximum number of HTTP redirects allowed before the check fails",
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "redirect_count",
      -                  "default": "redirect_count",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "maxCount"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "expected": {
      -                  "description": "Expected final URL after following redirects",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "operator": {
      -                  "description": "Comparison operator (equals, contains, less_than, greater_than, etc.)",
      -                  "enum": [
      -                    "equals",
      -                    "contains",
      -                    "less_than",
      -                    "greater_than",
      -                    "matches",
      -                    "range"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "redirect_target",
      -                  "default": "redirect_target",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "expected",
      -                "operator"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "pattern": {
      -                  "description": "Regular expression the response body must match",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "regex_body",
      -                  "default": "regex_body",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "pattern"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "maxBytes": {
      -                  "description": "Maximum response body size in bytes before the check fails",
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "response_size",
      -                  "default": "response_size",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "maxBytes"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "thresholdMs": {
      -                  "description": "Maximum allowed response time in milliseconds before the check fails",
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "response_time",
      -                  "default": "response_time",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "thresholdMs"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "response_time_warn",
      -                  "default": "response_time_warn",
      -                  "type": "string"
      -                },
      -                "warnMs": {
      -                  "description": "HTTP response time in milliseconds that triggers a warning only",
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "warnMs"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "minDaysRemaining": {
      -                  "description": "Minimum days before TLS certificate expiry; fails or warns below this threshold",
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "ssl_expiry",
      -                  "default": "ssl_expiry",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "minDaysRemaining"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "expected": {
      -                  "description": "Expected status code, range pattern, or wildcard such as 2xx",
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "operator": {
      -                  "description": "Comparison operator (equals, contains, less_than, greater_than, etc.)",
      -                  "enum": [
      -                    "equals",
      -                    "contains",
      -                    "less_than",
      -                    "greater_than",
      -                    "matches",
      -                    "range"
      -                  ],
      -                  "type": "string"
      -                },
      -                "type": {
      -                  "const": "status_code",
      -                  "default": "status_code",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "expected",
      -                "operator"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "tcp_connects",
      -                  "default": "tcp_connects",
      -                  "type": "string"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "maxMs": {
      -                  "description": "Maximum TCP connect time in milliseconds before the check fails",
      -                  "type": "integer"
      -                },
      -                "type": {
      -                  "const": "tcp_response_time",
      -                  "default": "tcp_response_time",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "maxMs"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "tcp_response_time_warn",
      -                  "default": "tcp_response_time_warn",
      -                  "type": "string"
      -                },
      -                "warnMs": {
      -                  "description": "TCP connect time in milliseconds that triggers a warning only",
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "warnMs"
      -              ],
      -              "type": "object"
      -            }
      -          ]
      -        },
      -        "severity": {
      -          "anyOf": [
      -            {
      -              "enum": [
      -                "fail",
      -                "warn"
      -              ],
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Outcome severity: FAIL (fails the check) or WARN (warns without failing, default: FAIL)"
      -        }
      -      },
      -      "required": [
      -        "config"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "config": {
      +          "oneOf": [
      +            {
      +              "properties": {
      +                "substring": {
      +                  "description": "Substring that must appear in the response body",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "body_contains",
      +                  "default": "body_contains",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "substring"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "type": {
      +                  "const": "dns_expected_cname",
      +                  "default": "dns_expected_cname",
      +                  "type": "string"
      +                },
      +                "value": {
      +                  "description": "Expected CNAME target the resolution must include",
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "value"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "ips": {
      +                  "description": "Allowed IP addresses; at least one resolved address must match",
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "minItems": 1,
      +                  "type": "array"
      +                },
      +                "type": {
      +                  "const": "dns_expected_ips",
      +                  "default": "dns_expected_ips",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "ips"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "max": {
      +                  "description": "Maximum number of answers allowed for that record type",
      +                  "type": "integer"
      +                },
      +                "recordType": {
      +                  "description": "DNS record type whose answer count is checked",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "dns_max_answers",
      +                  "default": "dns_max_answers",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "recordType",
      +                "max"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "min": {
      +                  "description": "Minimum number of answers required for that record type",
      +                  "type": "integer"
      +                },
      +                "recordType": {
      +                  "description": "DNS record type whose answer count is checked",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "dns_min_answers",
      +                  "default": "dns_min_answers",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "recordType",
      +                "min"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "recordType": {
      +                  "description": "DNS record type to assert on (A, AAAA, CNAME, MX, TXT)",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "substring": {
      +                  "description": "Substring that must appear in a matching record value",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "dns_record_contains",
      +                  "default": "dns_record_contains",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "recordType",
      +                "substring"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "recordType": {
      +                  "description": "DNS record type to assert on (A, AAAA, CNAME, MX, TXT)",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "dns_record_equals",
      +                  "default": "dns_record_equals",
      +                  "type": "string"
      +                },
      +                "value": {
      +                  "description": "Expected DNS record value for an exact match",
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "recordType",
      +                "value"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "type": {
      +                  "const": "dns_resolves",
      +                  "default": "dns_resolves",
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "maxMs": {
      +                  "description": "Maximum allowed DNS resolution time in milliseconds",
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "dns_response_time",
      +                  "default": "dns_response_time",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "maxMs"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "type": {
      +                  "const": "dns_response_time_warn",
      +                  "default": "dns_response_time_warn",
      +                  "type": "string"
      +                },
      +                "warnMs": {
      +                  "description": "DNS resolution time in milliseconds that triggers a warning only",
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "warnMs"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "maxTtl": {
      +                  "description": "Maximum TTL in seconds before a high-TTL warning is raised",
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "dns_ttl_high",
      +                  "default": "dns_ttl_high",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "maxTtl"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "minTtl": {
      +                  "description": "Minimum acceptable TTL in seconds before a warning is raised",
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "dns_ttl_low",
      +                  "default": "dns_ttl_low",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "minTtl"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "substring": {
      +                  "description": "Substring that must appear in at least one TXT record",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "dns_txt_contains",
      +                  "default": "dns_txt_contains",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "substring"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "expected": {
      +                  "description": "Expected value to compare against",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "headerName": {
      +                  "description": "HTTP header name to assert on",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "operator": {
      +                  "description": "Comparison operator (equals, contains, less_than, greater_than, etc.)",
      +                  "enum": [
      +                    "equals",
      +                    "contains",
      +                    "less_than",
      +                    "greater_than",
      +                    "matches",
      +                    "range"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "header_value",
      +                  "default": "header_value",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "headerName",
      +                "expected",
      +                "operator"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "maxDeviationPercent": {
      +                  "description": "Max percent drift from expected ping interval before warning (non-fatal)",
      +                  "maximum": 100,
      +                  "minimum": 1,
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "heartbeat_interval_drift",
      +                  "default": "heartbeat_interval_drift",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "maxDeviationPercent"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "maxSeconds": {
      +                  "description": "Maximum allowed gap in seconds between consecutive heartbeat pings",
      +                  "minimum": 1,
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "heartbeat_max_interval",
      +                  "default": "heartbeat_max_interval",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "maxSeconds"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "path": {
      +                  "description": "JSONPath expression into the heartbeat ping JSON payload",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "heartbeat_payload_contains",
      +                  "default": "heartbeat_payload_contains",
      +                  "type": "string"
      +                },
      +                "value": {
      +                  "description": "Expected value to compare against at that path",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "path",
      +                "value"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "type": {
      +                  "const": "heartbeat_received",
      +                  "default": "heartbeat_received",
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "maxPercent": {
      +                  "description": "Maximum allowed packet loss percentage before the check fails (0–100)",
      +                  "maximum": 100,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "type": {
      +                  "const": "icmp_packet_loss",
      +                  "default": "icmp_packet_loss",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "maxPercent"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "type": {
      +                  "const": "icmp_reachable",
      +                  "default": "icmp_reachable",
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "maxMs": {
      +                  "description": "Maximum average ICMP round-trip time in milliseconds",
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "icmp_response_time",
      +                  "default": "icmp_response_time",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "maxMs"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "type": {
      +                  "const": "icmp_response_time_warn",
      +                  "default": "icmp_response_time_warn",
      +                  "type": "string"
      +                },
      +                "warnMs": {
      +                  "description": "ICMP round-trip time in milliseconds that triggers a warning only",
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "warnMs"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "expected": {
      +                  "description": "Expected value to compare against",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "operator": {
      +                  "description": "Comparison operator (equals, contains, less_than, greater_than, etc.)",
      +                  "enum": [
      +                    "equals",
      +                    "contains",
      +                    "less_than",
      +                    "greater_than",
      +                    "matches",
      +                    "range"
      +                  ],
      +                  "type": "string"
      +                },
      +                "path": {
      +                  "description": "JSONPath expression to extract a value from the response body",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "json_path",
      +                  "default": "json_path",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "path",
      +                "expected",
      +                "operator"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "type": {
      +                  "const": "mcp_connects",
      +                  "default": "mcp_connects",
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "capability": {
      +                  "description": "Capability name the server must advertise, e.g. tools or resources",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "mcp_has_capability",
      +                  "default": "mcp_has_capability",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "capability"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "min": {
      +                  "description": "Minimum number of tools the server must expose",
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "mcp_min_tools",
      +                  "default": "mcp_min_tools",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "min"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "type": {
      +                  "const": "mcp_protocol_version",
      +                  "default": "mcp_protocol_version",
      +                  "type": "string"
      +                },
      +                "version": {
      +                  "description": "Expected MCP protocol version string from the server handshake",
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "version"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "maxMs": {
      +                  "description": "Maximum allowed MCP check duration in milliseconds",
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "mcp_response_time",
      +                  "default": "mcp_response_time",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "maxMs"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "type": {
      +                  "const": "mcp_response_time_warn",
      +                  "default": "mcp_response_time_warn",
      +                  "type": "string"
      +                },
      +                "warnMs": {
      +                  "description": "MCP check duration in milliseconds that triggers a warning only",
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "warnMs"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "toolName": {
      +                  "description": "MCP tool name that must appear in the server's tool list",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "mcp_tool_available",
      +                  "default": "mcp_tool_available",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "toolName"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "expectedCount": {
      +                  "description": "Expected tool count; warns when the live count differs",
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "mcp_tool_count_changed",
      +                  "default": "mcp_tool_count_changed",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "expectedCount"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "maxCount": {
      +                  "description": "Maximum number of HTTP redirects allowed before the check fails",
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "redirect_count",
      +                  "default": "redirect_count",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "maxCount"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "expected": {
      +                  "description": "Expected final URL after following redirects",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "operator": {
      +                  "description": "Comparison operator (equals, contains, less_than, greater_than, etc.)",
      +                  "enum": [
      +                    "equals",
      +                    "contains",
      +                    "less_than",
      +                    "greater_than",
      +                    "matches",
      +                    "range"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "redirect_target",
      +                  "default": "redirect_target",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "expected",
      +                "operator"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "pattern": {
      +                  "description": "Regular expression the response body must match",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "regex_body",
      +                  "default": "regex_body",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "pattern"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "maxBytes": {
      +                  "description": "Maximum response body size in bytes before the check fails",
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "response_size",
      +                  "default": "response_size",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "maxBytes"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "thresholdMs": {
      +                  "description": "Maximum allowed response time in milliseconds before the check fails",
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "response_time",
      +                  "default": "response_time",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "thresholdMs"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "type": {
      +                  "const": "response_time_warn",
      +                  "default": "response_time_warn",
      +                  "type": "string"
      +                },
      +                "warnMs": {
      +                  "description": "HTTP response time in milliseconds that triggers a warning only",
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "warnMs"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "minDaysRemaining": {
      +                  "description": "Minimum days before TLS certificate expiry; fails or warns below this threshold",
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "ssl_expiry",
      +                  "default": "ssl_expiry",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "minDaysRemaining"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "expected": {
      +                  "description": "Expected status code, range pattern, or wildcard such as 2xx",
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "operator": {
      +                  "description": "Comparison operator (equals, contains, less_than, greater_than, etc.)",
      +                  "enum": [
      +                    "equals",
      +                    "contains",
      +                    "less_than",
      +                    "greater_than",
      +                    "matches",
      +                    "range"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "const": "status_code",
      +                  "default": "status_code",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "expected",
      +                "operator"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "type": {
      +                  "const": "tcp_connects",
      +                  "default": "tcp_connects",
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "maxMs": {
      +                  "description": "Maximum TCP connect time in milliseconds before the check fails",
      +                  "type": "integer"
      +                },
      +                "type": {
      +                  "const": "tcp_response_time",
      +                  "default": "tcp_response_time",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "maxMs"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "properties": {
      +                "type": {
      +                  "const": "tcp_response_time_warn",
      +                  "default": "tcp_response_time_warn",
      +                  "type": "string"
      +                },
      +                "warnMs": {
      +                  "description": "TCP connect time in milliseconds that triggers a warning only",
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "warnMs"
      +              ],
      +              "type": "object"
      +            }
      +          ]
      +        },
      +        "severity": {
      +          "anyOf": [
      +            {
      +              "enum": [
      +                "fail",
      +                "warn"
      +              ],
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "Outcome severity: FAIL (fails the check) or WARN (warns without failing, default: FAIL)"
      +        }
      +      },
      +      "required": [
      +        "config"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / body / properties / auth / anyOf
      Previous value: -[
      -  {
      -    "description": "New authentication configuration (full replacement)",
      -    "oneOf": [
      -      {
      -        "additionalProperties": false,
      -        "properties": {
      -          "type": {
      -            "const": "bearer",
      -            "default": "bearer",
      -            "type": "string"
      -          },
      -          "vaultSecretId": {
      -            "anyOf": [
      -              {
      -                "format": "uuid",
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "default": null,
      -            "description": "Vault secret ID holding the bearer token value"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      {
      -        "additionalProperties": false,
      -        "properties": {
      -          "type": {
      -            "const": "basic",
      -            "default": "basic",
      -            "type": "string"
      -          },
      -          "vaultSecretId": {
      -            "anyOf": [
      -              {
      -                "format": "uuid",
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "default": null,
      -            "description": "Vault secret ID holding Basic auth username and password"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      {
      -        "additionalProperties": false,
      -        "properties": {
      -          "headerName": {
      -            "description": "Custom HTTP header name for the secret value",
      -            "minLength": 1,
      -            "pattern": "^[A-Za-z0-9\\-_]+$",
      -            "type": "string"
      -          },
      -          "type": {
      -            "const": "header",
      -            "default": "header",
      -            "type": "string"
      -          },
      -          "vaultSecretId": {
      -            "anyOf": [
      -              {
      -                "format": "uuid",
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "default": null,
      -            "description": "Vault secret ID for the header value"
      -          }
      -        },
      -        "required": [
      -          "headerName"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "additionalProperties": false,
      -        "properties": {
      -          "headerName": {
      -            "description": "HTTP header name that carries the API key",
      -            "minLength": 1,
      -            "pattern": "^[A-Za-z0-9\\-_]+$",
      -            "type": "string"
      -          },
      -          "type": {
      -            "const": "api_key",
      -            "default": "api_key",
      -            "type": "string"
      -          },
      -          "vaultSecretId": {
      -            "anyOf": [
      -              {
      -                "format": "uuid",
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "default": null,
      -            "description": "Vault secret ID for the API key value"
      -          }
      -        },
      -        "required": [
      -          "headerName"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "description": "New authentication configuration (full replacement)",
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "type": {
      +            "const": "bearer",
      +            "default": "bearer",
      +            "type": "string"
      +          },
      +          "vaultSecretId": {
      +            "anyOf": [
      +              {
      +                "format": "uuid",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "description": "Vault secret ID holding the bearer token value"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "type": {
      +            "const": "basic",
      +            "default": "basic",
      +            "type": "string"
      +          },
      +          "vaultSecretId": {
      +            "anyOf": [
      +              {
      +                "format": "uuid",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "description": "Vault secret ID holding Basic auth username and password"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "headerName": {
      +            "description": "Custom HTTP header name for the secret value",
      +            "minLength": 1,
      +            "pattern": "^[A-Za-z0-9\\-_]+$",
      +            "type": "string"
      +          },
      +          "type": {
      +            "const": "header",
      +            "default": "header",
      +            "type": "string"
      +          },
      +          "vaultSecretId": {
      +            "anyOf": [
      +              {
      +                "format": "uuid",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "description": "Vault secret ID for the header value"
      +          }
      +        },
      +        "required": [
      +          "headerName"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "headerName": {
      +            "description": "HTTP header name that carries the API key",
      +            "minLength": 1,
      +            "pattern": "^[A-Za-z0-9\\-_]+$",
      +            "type": "string"
      +          },
      +          "type": {
      +            "const": "api_key",
      +            "default": "api_key",
      +            "type": "string"
      +          },
      +          "vaultSecretId": {
      +            "anyOf": [
      +              {
      +                "format": "uuid",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "description": "Vault secret ID for the API key value"
      +          }
      +        },
      +        "required": [
      +          "headerName"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / body / properties / config / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "hostname": {
      -        "description": "Domain name to resolve",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "nameservers": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Custom nameservers to query (uses system defaults if omitted)"
      -      },
      -      "recordTypes": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "enum": [
      -                "A",
      -                "AAAA",
      -                "CNAME",
      -                "MX",
      -                "NS",
      -                "TXT",
      -                "SRV",
      -                "SOA",
      -                "CAA",
      -                "PTR"
      -              ],
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "DNS record types to query: A, AAAA, CNAME, MX, NS, TXT, SRV, SOA, CAA, PTR"
      -      },
      -      "timeoutMs": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Per-query timeout in milliseconds"
      -      },
      -      "totalTimeoutMs": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Total timeout for all queries in milliseconds"
      -      }
      -    },
      -    "required": [
      -      "hostname"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "expectedInterval": {
      -        "description": "Expected heartbeat interval in seconds",
      -        "maximum": 86400,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "gracePeriod": {
      -        "description": "Grace period in seconds before marking as down",
      -        "minimum": 1,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "expectedInterval",
      -      "gracePeriod"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "contentType": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Content-Type header value for the request body"
      -      },
      -      "customHeaders": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": {
      -              "type": "string"
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Additional HTTP headers to include in requests"
      -      },
      -      "method": {
      -        "description": "HTTP method: GET, POST, PUT, PATCH, DELETE, or HEAD",
      -        "enum": [
      -          "GET",
      -          "POST",
      -          "PUT",
      -          "PATCH",
      -          "DELETE",
      -          "HEAD"
      -        ],
      -        "type": "string"
      -      },
      -      "requestBody": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Request body content for POST/PUT/PATCH methods"
      -      },
      -      "url": {
      -        "description": "Target URL to send requests to",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "verifyTls": {
      -        "anyOf": [
      -          {
      -            "type": "boolean"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Whether to verify TLS certificates (default: true)"
      -      }
      -    },
      -    "required": [
      -      "url",
      -      "method"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "host": {
      -        "description": "Target hostname or IP address to ping",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "packetCount": {
      -        "anyOf": [
      -          {
      -            "maximum": 20,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Number of ICMP packets to send"
      -      },
      -      "timeoutMs": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Ping timeout in milliseconds"
      -      }
      -    },
      -    "required": [
      -      "host"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "args": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Command-line arguments for the MCP server process"
      -      },
      -      "command": {
      -        "description": "Command to execute to start the MCP server",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "env": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": {
      -              "type": "string"
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Environment variables to pass to the MCP server process"
      -      }
      -    },
      -    "required": [
      -      "command"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "host": {
      -        "description": "Target hostname or IP address",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "port": {
      -        "description": "TCP port to connect to",
      -        "maximum": 65535,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "timeoutMs": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Connection timeout in milliseconds"
      -      }
      -    },
      -    "required": [
      -      "host",
      -      "port"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "hostname": {
      +        "description": "Domain name to resolve",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "nameservers": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Custom nameservers to query (uses system defaults if omitted)"
      +      },
      +      "recordTypes": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "enum": [
      +                "A",
      +                "AAAA",
      +                "CNAME",
      +                "MX",
      +                "NS",
      +                "TXT",
      +                "SRV",
      +                "SOA",
      +                "CAA",
      +                "PTR"
      +              ],
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "DNS record types to query: A, AAAA, CNAME, MX, NS, TXT, SRV, SOA, CAA, PTR"
      +      },
      +      "timeoutMs": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Per-query timeout in milliseconds"
      +      },
      +      "totalTimeoutMs": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Total timeout for all queries in milliseconds"
      +      }
      +    },
      +    "required": [
      +      "hostname"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "expectedInterval": {
      +        "description": "Expected heartbeat interval in seconds",
      +        "maximum": 86400,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "gracePeriod": {
      +        "description": "Grace period in seconds before marking as down",
      +        "minimum": 1,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "expectedInterval",
      +      "gracePeriod"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "contentType": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Content-Type header value for the request body"
      +      },
      +      "customHeaders": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Additional HTTP headers to include in requests"
      +      },
      +      "method": {
      +        "description": "HTTP method: GET, POST, PUT, PATCH, DELETE, or HEAD",
      +        "enum": [
      +          "GET",
      +          "POST",
      +          "PUT",
      +          "PATCH",
      +          "DELETE",
      +          "HEAD"
      +        ],
      +        "type": "string"
      +      },
      +      "requestBody": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Request body content for POST/PUT/PATCH methods"
      +      },
      +      "url": {
      +        "description": "Target URL to send requests to",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "verifyTls": {
      +        "anyOf": [
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Whether to verify TLS certificates (default: true)"
      +      }
      +    },
      +    "required": [
      +      "url",
      +      "method"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "host": {
      +        "description": "Target hostname or IP address to ping",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "packetCount": {
      +        "anyOf": [
      +          {
      +            "maximum": 20,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Number of ICMP packets to send"
      +      },
      +      "timeoutMs": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Ping timeout in milliseconds"
      +      }
      +    },
      +    "required": [
      +      "host"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "args": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Command-line arguments for the MCP server process"
      +      },
      +      "command": {
      +        "description": "Command to execute to start the MCP server",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "env": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Environment variables to pass to the MCP server process"
      +      }
      +    },
      +    "required": [
      +      "command"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "script": {
      +        "description": "Playwright test script source code",
      +        "maxLength": 65536,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "timeoutSeconds": {
      +        "anyOf": [
      +          {
      +            "maximum": 120,
      +            "minimum": 5,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Maximum execution time in seconds (5–120)"
      +      }
      +    },
      +    "required": [
      +      "script"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "host": {
      +        "description": "Target hostname or IP address",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "port": {
      +        "description": "TCP port to connect to",
      +        "maximum": 65535,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "timeoutMs": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Connection timeout in milliseconds"
      +      }
      +    },
      +    "required": [
      +      "host",
      +      "port"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / body / properties / incidentPolicy / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "confirmation": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "maxWaitSeconds": {
      -            "description": "Maximum seconds to wait for enough regions to fail after first trigger",
      -            "type": "integer"
      -          },
      -          "minRegionsFailing": {
      -            "description": "Minimum failing regions required to confirm an incident",
      -            "type": "integer"
      -          },
      -          "type": {
      -            "const": "multi_region",
      -            "default": "multi_region",
      -            "description": "How incident confirmation is coordinated across regions",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "minRegionsFailing",
      -          "maxWaitSeconds"
      -        ],
      -        "type": "object"
      -      },
      -      "recovery": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "consecutiveSuccesses": {
      -            "description": "Consecutive passing checks required to auto-resolve the incident",
      -            "type": "integer"
      -          },
      -          "cooldownMinutes": {
      -            "description": "Minutes after resolve before a new incident may open on the same monitor",
      -            "type": "integer"
      -          },
      -          "minRegionsPassing": {
      -            "description": "Minimum regions that must be passing before recovery can complete",
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "consecutiveSuccesses",
      -          "minRegionsPassing",
      -          "cooldownMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      "triggerRules": {
      -        "description": "Array of trigger rules; at least one required",
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "aggregationType": {
      -              "anyOf": [
      -                {
      -                  "enum": [
      -                    "all_exceed",
      -                    "average",
      -                    "p95",
      -                    "max"
      -                  ],
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ],
      -              "default": null,
      -              "description": "How response times are aggregated for response-time rules"
      -            },
      -            "count": {
      -              "anyOf": [
      -                {
      -                  "type": "integer"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ],
      -              "default": null,
      -              "description": "Failure count for consecutive or windowed failure rules"
      -            },
      -            "scope": {
      -              "description": "Whether the rule applies per region or across regions",
      -              "enum": [
      -                "per_region",
      -                "any_region"
      -              ],
      -              "type": "string"
      -            },
      -            "severity": {
      -              "description": "Incident severity when this rule fires",
      -              "enum": [
      -                "down",
      -                "degraded"
      -              ],
      -              "type": "string"
      -            },
      -            "thresholdMs": {
      -              "anyOf": [
      -                {
      -                  "type": "integer"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ],
      -              "default": null,
      -              "description": "Response time threshold in milliseconds for response-time rules"
      -            },
      -            "type": {
      -              "description": "Condition that opens or escalates an incident from check results",
      -              "enum": [
      -                "consecutive_failures",
      -                "failures_in_window",
      -                "response_time"
      -              ],
      -              "type": "string"
      -            },
      -            "windowMinutes": {
      -              "anyOf": [
      -                {
      -                  "type": "integer"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ],
      -              "default": null,
      -              "description": "Window length in minutes for failures-in-window rules"
      -            }
      -          },
      -          "required": [
      -            "type",
      -            "scope",
      -            "severity"
      -          ],
      -          "type": "object"
      -        },
      -        "minItems": 1,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "triggerRules",
      -      "confirmation",
      -      "recovery"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "confirmation": {
      +        "properties": {
      +          "maxWaitSeconds": {
      +            "description": "Maximum seconds to wait for enough regions to fail after first trigger",
      +            "type": "integer"
      +          },
      +          "minRegionsFailing": {
      +            "description": "Minimum failing regions required to confirm an incident",
      +            "type": "integer"
      +          },
      +          "type": {
      +            "const": "multi_region",
      +            "default": "multi_region",
      +            "description": "How incident confirmation is coordinated across regions",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "minRegionsFailing",
      +          "maxWaitSeconds"
      +        ],
      +        "type": "object"
      +      },
      +      "recovery": {
      +        "properties": {
      +          "consecutiveSuccesses": {
      +            "description": "Consecutive passing checks required to auto-resolve the incident",
      +            "type": "integer"
      +          },
      +          "cooldownMinutes": {
      +            "description": "Minutes after resolve before a new incident may open on the same monitor",
      +            "type": "integer"
      +          },
      +          "minRegionsPassing": {
      +            "description": "Minimum regions that must be passing before recovery can complete",
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "consecutiveSuccesses",
      +          "minRegionsPassing",
      +          "cooldownMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      "triggerRules": {
      +        "description": "Array of trigger rules; at least one required",
      +        "items": {
      +          "properties": {
      +            "aggregationType": {
      +              "anyOf": [
      +                {
      +                  "enum": [
      +                    "all_exceed",
      +                    "average",
      +                    "p95",
      +                    "max"
      +                  ],
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null,
      +              "description": "How response times are aggregated for response-time rules"
      +            },
      +            "count": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null,
      +              "description": "Failure count for consecutive or windowed failure rules"
      +            },
      +            "scope": {
      +              "description": "Whether the rule applies per region or across regions",
      +              "enum": [
      +                "per_region",
      +                "any_region"
      +              ],
      +              "type": "string"
      +            },
      +            "severity": {
      +              "description": "Incident severity when this rule fires",
      +              "enum": [
      +                "down",
      +                "degraded"
      +              ],
      +              "type": "string"
      +            },
      +            "thresholdMs": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null,
      +              "description": "Response time threshold in milliseconds for response-time rules"
      +            },
      +            "type": {
      +              "description": "Condition that opens or escalates an incident from check results",
      +              "enum": [
      +                "consecutive_failures",
      +                "failures_in_window",
      +                "response_time"
      +              ],
      +              "type": "string"
      +            },
      +            "windowMinutes": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null,
      +              "description": "Window length in minutes for failures-in-window rules"
      +            }
      +          },
      +          "required": [
      +            "type",
      +            "scope",
      +            "severity"
      +          ],
      +          "type": "object"
      +        },
      +        "minItems": 1,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "triggerRules",
      +      "confirmation",
      +      "recovery"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. First observedv1.0.2

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure, but it reveals nothing beyond the verb 'update,' which the tool name already conveys. It does not state that this is a partial update where null preserves current values, that config/assertions are replaced wholesale, that clearAuth/clearEnvironmentId unset fields, or what side effects occur. Not misleading, but essentially silent on behavior.

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

Conciseness3/5

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

The single sentence is succinct and front-loaded with no filler, earning credit for economy. But for a tool with a massive nested schema and zero annotations, the brevity reads as under-specification rather than disciplined conciseness — there was room to add high-value context (e.g., partial-update semantics) without bloat.

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

Completeness2/5

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

This is a high-complexity tool — seven config variants, roughly 40 assertion types, incident policy, auth replacement — with no annotations. The output schema exists and nested field descriptions cover much of the parameter surface, but the description itself provides no high-level framing of update semantics (partial vs. replacement, how clearAuth/clearEnvironmentId interact, config variant selection). A single clause is not adequate context for an operation this complex.

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?

The description adds no parameter meaning: it doesn't clarify that monitor_id identifies the target or that body carries the configuration payload. However, the input schema is richly self-documenting for nested fields — nearly every body property has a description, including the critical 'null preserves current' semantics — so an agent can understand the parameters from the schema. The top-level required params (monitor_id, body) lack descriptions, and the tool description does not compensate, which keeps this at baseline.

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 gives a specific verb ('Update') and resource ('monitor') and narrows the scope to 'configuration,' which separates it from create_monitor, delete_monitor, and test_monitor. 'Existing' also correctly implies the monitor must already be present. It doesn't explicitly name sibling alternatives, and 'configuration' is broad enough that pause/resume could arguably overlap, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance. With a sibling list containing create_monitor, delete_monitor, pause_monitor, resume_monitor, and test_monitor, the description offers no routing hint beyond the faint implication that 'existing' means the monitor is already created. No alternatives or exclusions are mentioned.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/devhelmhq/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server