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 / 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"
- }
-]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"
+ }
+]