Skip to main content
Glama

Get a monitor

get_monitor
Read-onlyIdempotent

Fetch a monitor's full configuration and current state by UUID, including status, intervals, regions, and SSL details, before updating it because a submitted config replaces the stored one.

Instructions

Read one monitor's full configuration and current state. It has type, target, interval_seconds, timeout_seconds, regions, config, status, is_active, confirmation_threshold, notification_cooldown_seconds, channel_ids (empty means every verified, active channel is alerted), tags, badge_enabled, last_checked_at, next_run_at, and for SSL monitors ssl_expires_at and ssl_cert_info. Use it before update_monitor, since a config you send replaces the stored one whole. Not for finding a monitor (list_monitors), its uptime (get_uptime_summary) or why it fails (list_check_results).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
monitor_idYesThe monitor's uuid from list_monitors. An id that is not a monitor of this organization, or a deleted one, is a 404.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
nameYes
tagsNo
typeYesKnown values: HTTP, PING, SSL, TCP, DNS.
configYes
statusYesKnown values: PENDING, UP, DEGRADED, DOWN, PAUSED.
targetYes
regionsYes
user_idYes
is_activeYes
created_atYes
updated_atYes
channel_idsNo
next_run_atYes
badge_enabledNo
ssl_cert_infoNo
ssl_expires_atYes
last_checked_atYes
region_statusesYesPer-region latest status, sorted by region name. Built from ``region_snapshots``; ``job_id`` is dropped (internal dedup key) and malformed/partial snapshot rows are skipped rather than failing the read.
timeout_secondsYes
interval_secondsYes
confirmation_thresholdYes
notification_cooldown_secondsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.6.1
    • addedInput schema / properties / monitor_id / description
      Added value: +"The monitor's uuid from list_monitors. An id that is not a monitor of this organization, or a deleted one, is a 404."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "badge_enabled": {
      +      "type": "boolean"
      +    },
      +    "channel_ids": {
      +      "items": {
      +        "format": "uuid",
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "config": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "confirmation_threshold": {
      +      "type": "integer"
      +    },
      +    "created_at": {
      +      "type": "string"
      +    },
      +    "id": {
      +      "format": "uuid",
      +      "type": "string"
      +    },
      +    "interval_seconds": {
      +      "type": "integer"
      +    },
      +    "is_active": {
      +      "type": "boolean"
      +    },
      +    "last_checked_at": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "next_run_at": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "notification_cooldown_seconds": {
      +      "type": "integer"
      +    },
      +    "region_statuses": {
      +      "description": "Per-region latest status, sorted by region name.\n\nBuilt from ``region_snapshots``; ``job_id`` is dropped (internal\ndedup key) and malformed/partial snapshot rows are skipped rather\nthan failing the read.",
      +      "items": {
      +        "properties": {
      +          "checked_at": {
      +            "type": "string"
      +          },
      +          "display_name": {
      +            "type": "string"
      +          },
      +          "region": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "description": "Known values: UP, DEGRADED, DOWN, ERROR.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "region",
      +          "status",
      +          "checked_at",
      +          "display_name"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "regions": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "ssl_cert_info": {
      +      "anyOf": [
      +        {
      +          "properties": {
      +            "issuer": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "not_after": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "not_before": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "subject": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "valid": {
      +              "anyOf": [
      +                {
      +                  "type": "boolean"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "ssl_expires_at": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "status": {
      +      "description": "Known values: PENDING, UP, DEGRADED, DOWN, PAUSED.",
      +      "type": "string"
      +    },
      +    "tags": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "target": {
      +      "type": "string"
      +    },
      +    "timeout_seconds": {
      +      "type": "integer"
      +    },
      +    "type": {
      +      "description": "Known values: HTTP, PING, SSL, TCP, DNS.",
      +      "type": "string"
      +    },
      +    "updated_at": {
      +      "type": "string"
      +    },
      +    "user_id": {
      +      "format": "uuid",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "user_id",
      +    "name",
      +    "type",
      +    "target",
      +    "interval_seconds",
      +    "timeout_seconds",
      +    "regions",
      +    "config",
      +    "status",
      +    "last_checked_at",
      +    "next_run_at",
      +    "confirmation_threshold",
      +    "notification_cooldown_seconds",
      +    "ssl_expires_at",
      +    "is_active",
      +    "created_at",
      +    "updated_at",
      +    "region_statuses"
      +  ],
      +  "type": "object"
      +}
  2. First observedv0.5.4

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive, but the description adds important operational context beyond those hints. It explains the whole-config replacement behavior of update_monitor, clarifies that an empty channel_ids means all verified active channels are alerted, and notes SSL-specific fields.

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?

The description is front-loaded with the core purpose, followed by usage guidance and exclusions in a logical order. The long field list is relevant to understanding what a full configuration includes, though it is somewhat redundant because an output schema exists.

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

Completeness5/5

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

Given the tool's simplicity, the detailed schema, annotations, and presence of an output schema, the description is complete enough for correct invocation. It covers purpose, pre-update usage, field semantics, and sibling routing without needing to explain return formatting.

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%, and the monitor_id parameter is already documented as a UUID from list_monitors with 404 semantics for unknown or deleted monitors. The description does not add meaning beyond the schema for this single parameter, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: read one monitor's full configuration and current state. It enumerates the key fields returned and explicitly distinguishes the tool from list_monitors, get_uptime_summary, and list_check_results, so an agent can identify its role without ambiguity.

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

Usage Guidelines5/5

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

It states a concrete usage condition: call it before update_monitor because update configs replace the stored configuration wholesale. It also names when not to use it and routes the agent to the correct alternatives for listing, uptime, and failure investigation.

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