Skip to main content
Glama

Create monitors

create_monitors

Create several monitors at once, with one confirmation covering the batch where the client can show a prompt. Every check is run once first and all the results are shown together, so a misconfigured endpoint is visible before anything is saved. An item that fails validation or its trial run is reported in the results and the rest are still created. Prefer this over repeated create_monitor calls whenever the user names more than one thing to watch: it costs them one prompt instead of many. Same per-monitor fields and same limits as create_monitor. Not read-only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
monitorsYesThe monitors to create. Each is validated and probed before the single confirmation covering the batch.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
createdYes
resultsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / $defs / CreateMonitorArgs / properties / recovery_period_secs
      Added value: +{
      +  "description": "Seconds a recovered monitor must stay healthy before its incident\ncloses; a failure confirmed inside the window keeps the incident open,\nso a flapping service reads as one outage. 0 to 1800; 0 closes on the\nconfirming checks alone. Defaults to 180 on an HTTP, TCP, ping, DNS or\nflow monitor and 0 on the rest. Not for a manual monitor.",
      +  "format": "uint32",
      +  "minimum": 0,
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
  2. Changed1 schema field changed
    • changedInput schema / $defs / NewCheck / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "description": "An HTTP(S) endpoint.",
      -    "properties": {
      -      "body": {
      -        "description": "Request body, sent as given. `{{ key }}` references are resolved at\nprobe time, so a body may carry a secret by reference.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "expected_body_contains": {
      -        "description": "Text the response body must contain for the check to pass.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "expected_status": {
      -        "description": "A single code like `200`, a range like `200-299`, or a list like\n`200,201,204`. Defaults to `200-299`.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "follow_redirects": {
      -        "description": "Defaults to true, following at most 5 hops.",
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "headers": {
      -        "additionalProperties": {
      -          "type": "string"
      -        },
      -        "description": "Request headers. A header that carries a credential\n(`authorization`, `x-api-key`, `api-key`, `cookie`,\n`proxy-authorization`) must reference an org variable rather than\nspell the secret out: `Bearer {{ my_key }}`. Use `list_variables`\nto find the key, and never paste the credential itself — this tool\nrefuses it, and a pasted one would live on in the chat log.",
      -        "type": [
      -          "object",
      -          "null"
      -        ]
      -      },
      -      "method": {
      -        "description": "`get` (default), `head`, `post`, `put`, `patch`, `delete`, `options`.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "timeout_ms": {
      -        "description": "Defaults to 10000. A redirect counts as a pass only with\n`follow_redirects`.",
      -        "format": "uint64",
      -        "minimum": 0,
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "type": {
      -        "const": "http",
      -        "type": "string"
      -      },
      -      "url": {
      -        "type": "string"
      -      },
      -      "verify_tls": {
      -        "description": "Defaults to true. False accepts an invalid certificate, which a\n`tls_cert` monitor is the better way to watch.",
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "url"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "A TCP port accepting connections.",
      -    "properties": {
      -      "host": {
      -        "type": "string"
      -      },
      -      "port": {
      -        "format": "uint16",
      -        "maximum": 65535,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "timeout_ms": {
      -        "format": "uint64",
      -        "minimum": 0,
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "type": {
      -        "const": "tcp",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "host",
      -      "port"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "ICMP reachability.",
      -    "properties": {
      -      "host": {
      -        "type": "string"
      -      },
      -      "timeout_ms": {
      -        "format": "uint64",
      -        "minimum": 0,
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "type": {
      -        "const": "ping",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "host"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "A DNS record resolving, optionally to an expected value.",
      -    "properties": {
      -      "domain": {
      -        "type": "string"
      -      },
      -      "expected_contains": {
      -        "description": "Text the answer must contain.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "record_type": {
      -        "description": "`a` (default), `aaaa`, `cname`, `mx`, `ns`, `txt`, `soa`, `ptr`,\n`caa`, `srv`.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "resolver": {
      -        "description": "Resolver to ask. Defaults to the agent's own.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "timeout_ms": {
      -        "format": "uint64",
      -        "minimum": 0,
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "type": {
      -        "const": "dns",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "domain"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "A TLS certificate's remaining validity.",
      -    "properties": {
      -      "critical_days": {
      -        "description": "Days of remaining validity that fail it. Default 7.",
      -        "format": "uint32",
      -        "minimum": 0,
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "host": {
      -        "type": "string"
      -      },
      -      "port": {
      -        "description": "Defaults to 443.",
      -        "format": "uint16",
      -        "maximum": 65535,
      -        "minimum": 0,
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "timeout_ms": {
      -        "format": "uint64",
      -        "minimum": 0,
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "type": {
      -        "const": "tls_cert",
      -        "type": "string"
      -      },
      -      "warn_days": {
      -        "description": "Days of remaining validity that degrade the check. Default 30.",
      -        "format": "uint32",
      -        "minimum": 0,
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "host"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "A domain registration's remaining validity.",
      -    "properties": {
      -      "critical_days": {
      -        "description": "Default 7.",
      -        "format": "uint32",
      -        "minimum": 0,
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "domain": {
      -        "type": "string"
      -      },
      -      "timeout_ms": {
      -        "format": "uint64",
      -        "minimum": 0,
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "type": {
      -        "const": "domain_expiry",
      -        "type": "string"
      -      },
      -      "warn_days": {
      -        "description": "Default 30.",
      -        "format": "uint32",
      -        "minimum": 0,
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "domain"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "An inbound ping from a job that is expected to report in. Nothing is\nprobed; the monitor fails when the ping does not arrive. The ping URL\nand its token are shown in the app, never here.",
      -    "properties": {
      -      "grace_secs": {
      -        "description": "Lateness tolerated before the monitor fails.",
      -        "format": "uint64",
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "max_runtime_secs": {
      -        "description": "Fail a run that starts and does not finish within this.",
      -        "format": "uint64",
      -        "minimum": 0,
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "period_secs": {
      -        "description": "How often the job is expected to report.",
      -        "format": "uint64",
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "type": {
      -        "const": "heartbeat",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "period_secs",
      -      "grace_secs"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "An HTTP(S) endpoint.",
      +    "properties": {
      +      "body": {
      +        "description": "Request body, sent as given. `{{ key }}` references are resolved at\nprobe time, so a body may carry a secret by reference.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "expected_body_contains": {
      +        "description": "Text the response body must contain for the check to pass.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "expected_status": {
      +        "description": "A single code like `200`, a range like `200-299`, or a list like\n`200,201,204`. Defaults to `200-299`.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "follow_redirects": {
      +        "description": "Defaults to true, following at most 5 hops.",
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "headers": {
      +        "additionalProperties": {
      +          "type": "string"
      +        },
      +        "description": "Request headers. A header that carries a credential\n(`authorization`, `x-api-key`, `api-key`, `cookie`,\n`proxy-authorization`) must reference an org variable rather than\nspell the secret out: `Bearer {{ my_key }}`. Use `list_variables`\nto find the key, and never paste the credential itself — this tool\nrefuses it, and a pasted one would live on in the chat log.",
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "method": {
      +        "description": "`get` (default), `head`, `post`, `put`, `patch`, `delete`, `options`.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "timeout_ms": {
      +        "description": "Defaults to 10000. A redirect counts as a pass only with\n`follow_redirects`.",
      +        "format": "uint64",
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "type": {
      +        "const": "http",
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": "string"
      +      },
      +      "verify_tls": {
      +        "description": "Defaults to true. False accepts an invalid certificate, which a\n`tls_cert` monitor is the better way to watch.",
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "A TCP port accepting connections.",
      +    "properties": {
      +      "host": {
      +        "type": "string"
      +      },
      +      "port": {
      +        "format": "uint16",
      +        "maximum": 65535,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "timeout_ms": {
      +        "format": "uint64",
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "type": {
      +        "const": "tcp",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "host",
      +      "port"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "ICMP reachability.",
      +    "properties": {
      +      "host": {
      +        "type": "string"
      +      },
      +      "timeout_ms": {
      +        "format": "uint64",
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "type": {
      +        "const": "ping",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "host"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "A DNS record resolving, optionally to an expected value.",
      +    "properties": {
      +      "domain": {
      +        "type": "string"
      +      },
      +      "expected_contains": {
      +        "description": "Text the answer must contain.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "record_type": {
      +        "description": "`a` (default), `aaaa`, `cname`, `mx`, `ns`, `txt`, `soa`, `ptr`,\n`caa`, `srv`.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "resolver": {
      +        "description": "Resolver to ask. Defaults to the agent's own.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "timeout_ms": {
      +        "format": "uint64",
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "type": {
      +        "const": "dns",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "domain"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "A TLS certificate's remaining validity.",
      +    "properties": {
      +      "critical_days": {
      +        "description": "Days of remaining validity that fail it. Default 7.",
      +        "format": "uint32",
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "host": {
      +        "type": "string"
      +      },
      +      "port": {
      +        "description": "Defaults to 443.",
      +        "format": "uint16",
      +        "maximum": 65535,
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "timeout_ms": {
      +        "format": "uint64",
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "type": {
      +        "const": "tls_cert",
      +        "type": "string"
      +      },
      +      "warn_days": {
      +        "description": "Days of remaining validity that degrade the check. Default 30.",
      +        "format": "uint32",
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "host"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "A domain registration's remaining validity.",
      +    "properties": {
      +      "critical_days": {
      +        "description": "Default 7.",
      +        "format": "uint32",
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "domain": {
      +        "type": "string"
      +      },
      +      "timeout_ms": {
      +        "format": "uint64",
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "type": {
      +        "const": "domain_expiry",
      +        "type": "string"
      +      },
      +      "warn_days": {
      +        "description": "Default 30.",
      +        "format": "uint32",
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "domain"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "An inbound ping from a job that is expected to report in. Nothing is\nprobed; the monitor fails when the ping does not arrive. The ping URL\nand its token are shown in the app, never here.",
      +    "properties": {
      +      "grace_secs": {
      +        "description": "Lateness tolerated before the monitor fails.",
      +        "format": "uint64",
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "max_runtime_secs": {
      +        "description": "Fail a run that starts and does not finish within this.",
      +        "format": "uint64",
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "period_secs": {
      +        "description": "How often the job is expected to report.",
      +        "format": "uint64",
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "type": {
      +        "const": "heartbeat",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "period_secs",
      +      "grace_secs"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "A service no probe can judge, such as a SIP trunk or a partner's back\noffice. Nothing is checked: it starts up, and `set_monitor_state` moves\nit, opening and closing incidents like any other monitor.",
      +    "properties": {
      +      "type": {
      +        "const": "manual",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.