Skip to main content
Glama

Get a monitor

get_monitor
Read-onlyIdempotent

Get a monitor by ID, with its current status, response time, request settings and check regions.

Tool call template

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

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "project_id": "<project_id>",
      "monitor_id": "<monitor_id>"
    },
    "name": "get_monitor"
  }
}

Input Schema

NameRequiredDescriptionDefault
monitor_idYesID of the monitor to show
project_idYesID of the project to act on, see whoami

Output Schema

NameRequiredDescriptionDefault
idNoMonitor ID
nameNoMonitor name
tagsNoResource tags, made of lowercase letters, numbers, `.`, `_`, `:` and `-`. An organization can have up to 200 tags.
pausedNoWhether the monitor is currently paused
statusNoMonitor current status
regionsNoList of regions where monitoring checks are performed
requestNoMonitoring request, depends of the chosen protocol
timeoutNoMonitoring timeout in milliseconds
intervalNoMonitoring interval in seconds
protocolNoMonitoring protocol
created_atNoDate of creation for the entity
project_idNoParent project ID
updated_atNoDate of last update for the entity
display_nameNoPublic name of the monitor on status pages, defaults to the monitor name
response_timeNo75th percentile (P75) response time of successful checks over the last 7 days, in milliseconds
last_checked_atNoDate of the last performed check with a 30s accuracy
region_thresholdNoNumber of regions that must fail before an incident is confirmed, cannot exceed the number of selected regions
success_assertionsNoRequired for the HTTP protocol, with at least one assertion, and ignored for the TCP and ICMP protocols. A check is successful when all its assertions are true.
incident_confirmationsNoNumber of uninterrupted failed checks required to create an incident
recovery_confirmationsNoNumber of uninterrupted successful checks required to resolve an incident

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / request / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "body": {
      -        "description": "HTTP request body for POST, PUT and PATCH requests",
      -        "examples": [
      -          "Hello, World!"
      -        ],
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "follow_redirects": {
      -        "default": true,
      -        "description": "Follow redirects",
      -        "examples": [
      -          true
      -        ],
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "headers": {
      -        "description": "Additional HTTP headers to add to the request",
      -        "items": {
      -          "properties": {
      -            "name": {
      -              "description": "Header name, the User-Agent, Signature, Signature-Input and Signature-Agent headers are not allowed",
      -              "examples": [
      -                "X-Phare-Says"
      -              ],
      -              "type": "string"
      -            },
      -            "value": {
      -              "description": "Header value",
      -              "examples": [
      -                "Hello world!"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "type": [
      -          "array",
      -          "null"
      -        ]
      -      },
      -      "method": {
      -        "description": "HTTP request method",
      -        "enum": [
      -          "HEAD",
      -          "GET",
      -          "POST",
      -          "PUT",
      -          "PATCH",
      -          "OPTIONS"
      -        ],
      -        "type": "string"
      -      },
      -      "tls_skip_verify": {
      -        "default": false,
      -        "description": "Skip SSL verification",
      -        "examples": [
      -          false
      -        ],
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "url": {
      -        "description": "HTTP request url",
      -        "examples": [
      -          "https://docs.phare.io/introduction"
      -        ],
      -        "type": "string"
      -      },
      -      "user_agent_secret": {
      -        "description": "A secret value to be used in the User-Agent header for authenticating the request",
      -        "examples": [
      -          "definitely-not-a-bot"
      -        ],
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "title": "HTTP protocol",
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "connection": {
      -        "description": "Connection type for TCP protocol",
      -        "enum": [
      -          "plain",
      -          "tls"
      -        ],
      -        "type": "string"
      -      },
      -      "host": {
      -        "description": "TCP request hostname or IP address",
      -        "examples": [
      -          "8.8.8.8"
      -        ],
      -        "type": "string"
      -      },
      -      "port": {
      -        "description": "TCP request port, between 1 and 65535",
      -        "examples": [
      -          "80"
      -        ],
      -        "type": "string"
      -      },
      -      "tls_skip_verify": {
      -        "default": false,
      -        "description": "Skip TLS verification",
      -        "examples": [
      -          false
      -        ],
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      }
      -    },
      -    "title": "TCP protocol",
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "host": {
      -        "description": "ICMP request hostname or IP address",
      -        "examples": [
      -          "8.8.8.8"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "title": "ICMP protocol",
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "body": {
      +        "description": "HTTP request body for POST, PUT and PATCH requests",
      +        "examples": [
      +          "Hello, World!"
      +        ],
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "follow_redirects": {
      +        "default": true,
      +        "description": "Follow redirects",
      +        "examples": [
      +          true
      +        ],
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "headers": {
      +        "description": "Additional HTTP headers to add to the request",
      +        "items": {
      +          "properties": {
      +            "name": {
      +              "description": "Header name, unique per request, the User-Agent, Signature, Signature-Input and Signature-Agent headers are not allowed",
      +              "examples": [
      +                "X-Phare-Says"
      +              ],
      +              "type": "string"
      +            },
      +            "secret": {
      +              "description": "Whether the header value is a secret, encrypted and never returned. False for a new header, an update without it keeps the current flag of the header with the same name.",
      +              "examples": [
      +                false
      +              ],
      +              "type": "boolean"
      +            },
      +            "value": {
      +              "description": "Header value, always required on create. A secret header value is never returned, so on update it is only optional for a secret header that is already set: without it, the header keeps its current value, matched by name.",
      +              "examples": [
      +                "Hello world!"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": [
      +          "array",
      +          "null"
      +        ]
      +      },
      +      "method": {
      +        "description": "HTTP request method",
      +        "enum": [
      +          "HEAD",
      +          "GET",
      +          "POST",
      +          "PUT",
      +          "PATCH",
      +          "OPTIONS"
      +        ],
      +        "type": "string"
      +      },
      +      "tls_skip_verify": {
      +        "default": false,
      +        "description": "Skip SSL verification",
      +        "examples": [
      +          false
      +        ],
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "url": {
      +        "description": "HTTP request url",
      +        "examples": [
      +          "https://docs.phare.io/introduction"
      +        ],
      +        "type": "string"
      +      },
      +      "user_agent_secret_enabled": {
      +        "description": "Whether a user agent secret is set",
      +        "examples": [
      +          true
      +        ],
      +        "readOnly": true,
      +        "type": "boolean"
      +      }
      +    },
      +    "title": "HTTP protocol",
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "connection": {
      +        "description": "Connection type for TCP protocol",
      +        "enum": [
      +          "plain",
      +          "tls"
      +        ],
      +        "type": "string"
      +      },
      +      "host": {
      +        "description": "TCP request hostname or IP address",
      +        "examples": [
      +          "8.8.8.8"
      +        ],
      +        "type": "string"
      +      },
      +      "port": {
      +        "description": "TCP request port, between 1 and 65535",
      +        "examples": [
      +          "80"
      +        ],
      +        "type": "string"
      +      },
      +      "tls_skip_verify": {
      +        "default": false,
      +        "description": "Skip TLS verification",
      +        "examples": [
      +          false
      +        ],
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      }
      +    },
      +    "title": "TCP protocol",
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "host": {
      +        "description": "ICMP request hostname or IP address",
      +        "examples": [
      +          "8.8.8.8"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "title": "ICMP protocol",
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "created_at": {
      +      "description": "Date of creation for the entity",
      +      "format": "date-time",
      +      "type": "string"
      +    },
      +    "display_name": {
      +      "default": null,
      +      "description": "Public name of the monitor on status pages, defaults to the monitor name",
      +      "examples": [
      +        "Website"
      +      ],
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "id": {
      +      "description": "Monitor ID",
      +      "examples": [
      +        1
      +      ],
      +      "type": "integer"
      +    },
      +    "incident_confirmations": {
      +      "default": 3,
      +      "description": "Number of uninterrupted failed checks required to create an incident",
      +      "enum": [
      +        1,
      +        2,
      +        3,
      +        4,
      +        5
      +      ],
      +      "examples": [
      +        1
      +      ],
      +      "type": "integer"
      +    },
      +    "interval": {
      +      "default": 60,
      +      "description": "Monitoring interval in seconds",
      +      "enum": [
      +        30,
      +        60,
      +        120,
      +        180,
      +        300,
      +        600,
      +        900,
      +        1800,
      +        3600
      +      ],
      +      "examples": [
      +        60
      +      ],
      +      "type": "integer"
      +    },
      +    "last_checked_at": {
      +      "description": "Date of the last performed check with a 30s accuracy",
      +      "format": "date-time",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "name": {
      +      "description": "Monitor name",
      +      "examples": [
      +        "Website"
      +      ],
      +      "type": "string"
      +    },
      +    "paused": {
      +      "description": "Whether the monitor is currently paused",
      +      "examples": [
      +        true
      +      ],
      +      "type": "boolean"
      +    },
      +    "project_id": {
      +      "description": "Parent project ID",
      +      "examples": [
      +        1
      +      ],
      +      "type": "integer"
      +    },
      +    "protocol": {
      +      "description": "Monitoring protocol",
      +      "enum": [
      +        "http",
      +        "tcp",
      +        "icmp"
      +      ],
      +      "type": "string"
      +    },
      +    "recovery_confirmations": {
      +      "default": 3,
      +      "description": "Number of uninterrupted successful checks required to resolve an incident",
      +      "enum": [
      +        1,
      +        2,
      +        3,
      +        4,
      +        5
      +      ],
      +      "examples": [
      +        1
      +      ],
      +      "type": "integer"
      +    },
      +    "region_threshold": {
      +      "default": 1,
      +      "description": "Number of regions that must fail before an incident is confirmed, cannot exceed the number of selected regions",
      +      "examples": [
      +        1
      +      ],
      +      "type": "integer"
      +    },
      +    "regions": {
      +      "description": "List of regions where monitoring checks are performed",
      +      "items": {
      +        "enum": [
      +          "as-jpn-hnd",
      +          "as-sgp-sin",
      +          "as-tha-bkk",
      +          "eu-deu-fra",
      +          "eu-fra-cdg",
      +          "eu-gbr-lhr",
      +          "eu-swe-arn",
      +          "ng-nld-ams",
      +          "na-mex-mex",
      +          "na-usa-iad",
      +          "na-usa-sea",
      +          "oc-aus-syd",
      +          "sa-bra-gru"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "request": {
      +      "anyOf": [
      +        {
      +          "properties": {
      +            "body": {
      +              "description": "HTTP request body for POST, PUT and PATCH requests",
      +              "examples": [
      +                "Hello, World!"
      +              ],
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "follow_redirects": {
      +              "default": true,
      +              "description": "Follow redirects",
      +              "examples": [
      +                true
      +              ],
      +              "type": [
      +                "boolean",
      +                "null"
      +              ]
      +            },
      +            "headers": {
      +              "description": "Additional HTTP headers to add to the request",
      +              "items": {
      +                "properties": {
      +                  "name": {
      +                    "description": "Header name, the User-Agent, Signature, Signature-Input and Signature-Agent headers are not allowed",
      +                    "examples": [
      +                      "X-Phare-Says"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "value": {
      +                    "description": "Header value",
      +                    "examples": [
      +                      "Hello world!"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "type": [
      +                "array",
      +                "null"
      +              ]
      +            },
      +            "method": {
      +              "description": "HTTP request method",
      +              "enum": [
      +                "HEAD",
      +                "GET",
      +                "POST",
      +                "PUT",
      +                "PATCH",
      +                "OPTIONS"
      +              ],
      +              "type": "string"
      +            },
      +            "tls_skip_verify": {
      +              "default": false,
      +              "description": "Skip SSL verification",
      +              "examples": [
      +                false
      +              ],
      +              "type": [
      +                "boolean",
      +                "null"
      +              ]
      +            },
      +            "url": {
      +              "description": "HTTP request url",
      +              "examples": [
      +                "https://docs.phare.io/introduction"
      +              ],
      +              "type": "string"
      +            },
      +            "user_agent_secret": {
      +              "description": "A secret value to be used in the User-Agent header for authenticating the request",
      +              "examples": [
      +                "definitely-not-a-bot"
      +              ],
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "title": "HTTP protocol",
      +          "type": "object"
      +        },
      +        {
      +          "properties": {
      +            "connection": {
      +              "description": "Connection type for TCP protocol",
      +              "enum": [
      +                "plain",
      +                "tls"
      +              ],
      +              "type": "string"
      +            },
      +            "host": {
      +              "description": "TCP request hostname or IP address",
      +              "examples": [
      +                "8.8.8.8"
      +              ],
      +              "type": "string"
      +            },
      +            "port": {
      +              "description": "TCP request port, between 1 and 65535",
      +              "examples": [
      +                "80"
      +              ],
      +              "type": "string"
      +            },
      +            "tls_skip_verify": {
      +              "default": false,
      +              "description": "Skip TLS verification",
      +              "examples": [
      +                false
      +              ],
      +              "type": [
      +                "boolean",
      +                "null"
      +              ]
      +            }
      +          },
      +          "title": "TCP protocol",
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "host": {
      +              "description": "ICMP request hostname or IP address",
      +              "examples": [
      +                "8.8.8.8"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "title": "ICMP protocol",
      +          "type": "object"
      +        }
      +      ],
      +      "description": "Monitoring request, depends of the chosen protocol",
      +      "type": "object"
      +    },
      +    "response_time": {
      +      "description": "75th percentile (P75) response time of successful checks over the last 7 days, in milliseconds",
      +      "examples": [
      +        123
      +      ],
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "description": "Monitor current status",
      +      "enum": [
      +        "fetching",
      +        "online",
      +        "offline",
      +        "partial",
      +        "paused"
      +      ],
      +      "type": "string"
      +    },
      +    "success_assertions": {
      +      "description": "Required for the HTTP protocol, with at least one assertion, and ignored for the TCP and ICMP protocols. A check is successful when all its assertions are true.",
      +      "items": {
      +        "anyOf": [
      +          {
      +            "properties": {
      +              "operator": {
      +                "description": "Operator to use for the assertion",
      +                "enum": [
      +                  "in",
      +                  "not_in"
      +                ],
      +                "examples": [
      +                  "in"
      +                ],
      +                "type": "string"
      +              },
      +              "type": {
      +                "description": "Type of assertion, only one status code assertion is allowed",
      +                "enum": [
      +                  "status_code"
      +                ],
      +                "type": "string"
      +              },
      +              "value": {
      +                "description": "A comma-separated list of status code values, you can use x as a wildcard for any digit.",
      +                "examples": [
      +                  "2xx,30x,418"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "title": "Status code assertion",
      +            "type": "object"
      +          },
      +          {
      +            "properties": {
      +              "operator": {
      +                "description": "Operator to use for the assertion",
      +                "enum": [
      +                  "equals",
      +                  "not_equals"
      +                ],
      +                "examples": [
      +                  "equals"
      +                ],
      +                "type": "string"
      +              },
      +              "selector": {
      +                "description": "The name of the header to assert",
      +                "examples": [
      +                  "Content-Type"
      +                ],
      +                "type": "string"
      +              },
      +              "type": {
      +                "description": "Type of assertion",
      +                "enum": [
      +                  "response_header"
      +                ],
      +                "type": "string"
      +              },
      +              "value": {
      +                "description": "The value of the header to assert",
      +                "examples": [
      +                  "application/json"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "title": "Response header assertion",
      +            "type": "object"
      +          },
      +          {
      +            "properties": {
      +              "operator": {
      +                "description": "Operator to use for the assertion",
      +                "enum": [
      +                  "contains",
      +                  "not_contains"
      +                ],
      +                "examples": [
      +                  "contains"
      +                ],
      +                "type": "string"
      +              },
      +              "type": {
      +                "description": "Type of assertion, not available for HEAD and OPTIONS requests",
      +                "enum": [
      +                  "response_body"
      +                ],
      +                "type": "string"
      +              },
      +              "value": {
      +                "description": "A word or sentence to check in the response body",
      +                "examples": [
      +                  "Hello, World!"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "title": "Response body assertion",
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "type": "array"
      +    },
      +    "tags": {
      +      "description": "Resource tags, made of lowercase letters, numbers, `.`, `_`, `:` and `-`. An organization can have up to 200 tags.",
      +      "items": {
      +        "examples": [
      +          "environment:production"
      +        ],
      +        "type": "string"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "timeout": {
      +      "default": 20000,
      +      "description": "Monitoring timeout in milliseconds",
      +      "enum": [
      +        1000,
      +        2000,
      +        3000,
      +        4000,
      +        5000,
      +        6000,
      +        7000,
      +        8000,
      +        9000,
      +        10000,
      +        15000,
      +        20000,
      +        25000,
      +        30000
      +      ],
      +      "examples": [
      +        20000
      +      ],
      +      "type": "integer"
      +    },
      +    "updated_at": {
      +      "description": "Date of last update for the entity",
      +      "format": "date-time",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  3. First observed

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds only that a single entity is returned with its current status and settings, which is modest added value beyond the annotations and the output schema.

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

Conciseness4/5

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

A single front-loaded sentence that identifies the lookup key first and then the returned fields, with no filler. It could be tightened slightly, but every clause carries information.

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

Completeness4/5

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

For a two-parameter read-only getter with an output schema and rich annotations, the description covers what is retrieved and how it is keyed. The only substantive omission is routing guidance against the other read tools in this large sibling set.

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

Parameters3/5

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

Schema description coverage is 100%: monitor_id and project_id are both documented inline, including the 'see whoami' pointer for project_id. The description's phrase 'by ID' adds nothing beyond that, so the baseline of 3 applies.

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 and resource ('Get a monitor by ID') and enumerates the payload it surfaces (current status, response time, request settings, check regions). That is enough to distinguish it from create_monitor/update_monitor/delete_monitor, though it never explicitly contrasts itself with the closest read sibling, get_monitor_report.

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 and no named alternative. An agent must infer from context that this fetches a single monitor configuration while get_monitor_report covers reporting, and nothing states prerequisites such as needing a valid project_id/monitor_id pair.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources