Skip to main content
Glama

List monitors

list_monitors
Read-onlyIdempotent

Get a paginated list of the monitors of the project, newest first, with their current status and response time. Filter them by tag.

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>"
    },
    "name": "list_monitors"
  }
}

Input Schema

NameRequiredDescriptionDefault
tagNoFilter monitors by tag. Can be specified multiple times to only return monitors having all the given tags.
pageNoPage number to show
per_pageNoNumber of resources to return per page
project_idYesID of the project to act on, see whoami

Output Schema

NameRequiredDescriptionDefault
dataNo
metaNoMeta data for pagination

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / data / items / 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": {
      +    "data": {
      +      "items": {
      +        "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"
      +      },
      +      "type": "array"
      +    },
      +    "meta": {
      +      "description": "Meta data for pagination",
      +      "properties": {
      +        "current_page": {
      +          "examples": [
      +            2
      +          ],
      +          "type": "integer"
      +        },
      +        "from": {
      +          "examples": [
      +            11
      +          ],
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "has_more_pages": {
      +          "description": "Whether a next page exists, fetched with the page argument",
      +          "type": "boolean"
      +        },
      +        "per_page": {
      +          "examples": [
      +            100
      +          ],
      +          "type": "integer"
      +        },
      +        "to": {
      +          "examples": [
      +            20
      +          ],
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
  3. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already disclose the read-only, idempotent, non-destructive and closed-world profile. The description adds meaningful behavior beyond that: pagination, newest-first ordering, and the fact that current status and response time are included in the result. It stops short of covering rate limits or auth requirements, so 4 rather than 5.

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

Conciseness5/5

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

Two tightly written sentences with no wasted words. The primary action and scope are front-loaded, and the secondary filtering capability follows naturally.

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 read-only list tool with a full output schema and safety annotations, the description is largely complete: it covers pagination, ordering, included fields and filtering. It could add a note about default page size behavior or empty results, but nothing essential for correct invocation is missing.

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%, so the schema already fully documents project_id, tag, page and per_page. The description only restates that results can be filtered by tag, adding no syntax or format meaning beyond the schema. Baseline 3 is appropriate.

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 paginated list of the monitors of the project') and adds useful scope details: newest-first ordering, current status and response time, tag filtering. It does not explicitly differentiate itself from siblings such as get_monitor, so it falls short of the 5 bar for sibling routing.

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 explicit when-to-use guidance, no mention of alternatives (e.g., get_monitor for a single monitor), and no prerequisites. Usage is only implied by the tool name and the resource scope, which is insufficient for a higher score.

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