Skip to main content
Glama

Get check

get_check
Read-onlyIdempotent

Read one check by id: its current status, status_reason (why it isn't up, from its open incident, or null), last activity, expiry date for domain and SSL checks, configuration for its kind, probe locations for website and TCP checks, notification group ids and dashboard ids. A website check's url leaves out any query string and credentials; url_has_query says whether it has one. This is the check's current state and settings only: run history, incidents and heartbeat ping URLs aren't included. An id that doesn't exist or belongs to another account returns not_found.

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": {
      "id": "<id>"
    },
    "name": "get_check"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesCheck id (check_…).

Output Schema

NameRequiredDescriptionDefault
idYes
statusYes
expires_onYes
configurationYes
dashboard_idsYes
status_reasonYes
last_activity_atYes
notification_group_idsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed26 schema fields changed
    • changedOutput schema / properties / configuration / properties / cron_expression / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "maxLength": 255,
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Five-field cron schedule, such as 0 3 * * *, read in timezone. Used when schedule_type is cron."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / degraded_threshold / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "maximum": 2147483647,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "How many of the check's locations must be up for it to be healthy; null means all of them. Can't be more than the check's location count."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / dns_expected_values / anyOf
      Previous value: -[
      -  {
      -    "description": "Record values to compare with, such as IP addresses. Unused when dns_match_mode is resolves.",
      -    "items": {
      -      "maxLength": 4096,
      -      "type": "string"
      -    },
      -    "maxItems": 100,
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / dns_match_mode / anyOf
      Previous value: -[
      -  {
      -    "description": "resolves passes on any answer; exact needs the answers to equal dns_expected_values; includes needs every expected value among the answers.",
      -    "enum": [
      -      "resolves",
      -      "exact",
      -      "includes"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "resolves",
      +      "exact",
      +      "includes"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / dns_record_type / anyOf
      Previous value: -[
      -  {
      -    "description": "Record type to look up.",
      -    "enum": [
      -      "A",
      -      "AAAA",
      -      "CNAME",
      -      "MX",
      -      "TXT",
      -      "NS",
      -      "CAA"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "A",
      +      "AAAA",
      +      "CNAME",
      +      "MX",
      +      "TXT",
      +      "NS",
      +      "CAA"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / expected_status_code / anyOf
      Previous value: -[
      -  {
      -    "description": "HTTP status that counts as up, such as 200.",
      -    "maximum": 599,
      -    "minimum": 100,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / failing_threshold / anyOf
      Previous value: -[
      -  {
      -    "description": "How many of the check's locations must be up for it to avoid being down. A location count, not a number of failed runs. Can't be more than the check's location count.",
      -    "maximum": 2147483647,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / follow_redirects / anyOf
      Previous value: -[
      -  {
      -    "description": "Follow redirects and check the final response's status.",
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / grace_period_seconds / anyOf
      Previous value: -[
      -  {
      -    "description": "Seconds a heartbeat may run late before the check is marked late.",
      -    "maximum": 2147483647,
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / hostname / anyOf
      Previous value: -[
      -  {
      -    "description": "Hostname to check, without a scheme or path, such as example.com.",
      -    "maxLength": 255,
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / interval_seconds / anyOf
      Previous value: -[
      -  {
      -    "description": "Seconds between runs: how often a heartbeat is expected, or how often Pingstack runs the check. Can't be below the plan's min_interval_seconds.",
      -    "maximum": 2147483647,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / configuration / properties / kind / description
      Removed value: -"What the check monitors: ping (a heartbeat from a cron job or scheduled task), website (HTTP), dns, domain (registration expiry), ssl_certificate (certificate expiry) or tcp (an open port)."
    • changedOutput schema / properties / configuration / properties / kind / enum
      Previous value: -[
      -  "ping",
      -  "website",
      -  "dns",
      -  "domain",
      -  "ssl_certificate",
      -  "tcp"
      -]New value: +[
      +  "ping",
      +  "website",
      +  "domain",
      +  "ssl_certificate",
      +  "dns",
      +  "tcp"
      +]
    • changedOutput schema / properties / configuration / properties / port / anyOf
      Previous value: -[
      -  {
      -    "description": "TCP port that must accept a connection.",
      -    "maximum": 65535,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / probe_locations / anyOf
      Previous value: -[
      -  {
      -    "description": "Region ids the check runs from, such as us-east-1, from the account's probe_locations. Replaces the whole set, up to the plan's included_probe_locations.",
      -    "items": {
      -      "maxLength": 100,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "maxItems": 100,
      -    "minItems": 1,
      -    "type": "array",
      -    "uniqueItems": true
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / renewal_critical_days / anyOf
      Previous value: -[
      -  {
      -    "description": "Days before expiry when the check goes down. Lower than renewal_warning_days.",
      -    "maximum": 2147483647,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / renewal_warning_days / anyOf
      Previous value: -[
      -  {
      -    "description": "Days before expiry when the check becomes degraded.",
      -    "maximum": 2147483647,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / schedule_type / anyOf
      Previous value: -[
      -  {
      -    "description": "interval expects a heartbeat every interval_seconds; cron expects one on cron_expression's schedule.",
      -    "enum": [
      -      "interval",
      -      "cron"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "interval",
      +      "cron"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / timezone / anyOf
      Previous value: -[
      -  {
      -    "description": "IANA time zone for cron_expression, such as America/New_York.",
      -    "maxLength": 255,
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / configuration / properties / url
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / configuration / properties / url_has_query
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / configuration / properties / value_critical_threshold / anyOf
      Previous value: -[
      -  {
      -    "description": "Reported value that makes the check go down. Past value_warning_threshold in value_direction.",
      -    "type": [
      -      "number",
      -      "null"
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / value_direction / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          "above",
      -          "below"
      -        ],
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "For heartbeats that report a number: whether values at or above, or at or below, the thresholds are bad."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "enum": [
      +          "above",
      +          "below"
      +        ],
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / configuration / properties / value_warning_threshold / anyOf
      Previous value: -[
      -  {
      -    "description": "Reported value that makes the check degraded. Set together with value_critical_threshold; both null turns value alerts off.",
      -    "type": [
      -      "number",
      -      "null"
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / status_reason
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "status",
      -  "last_activity_at",
      -  "expires_on",
      -  "configuration",
      -  "notification_group_ids",
      -  "dashboard_ids"
      -]New value: +[
      +  "id",
      +  "status",
      +  "status_reason",
      +  "last_activity_at",
      +  "expires_on",
      +  "configuration",
      +  "notification_group_ids",
      +  "dashboard_ids"
      +]
  2. Added

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description still adds real behavior: the not_found outcome for a nonexistent id or one owned by another account, and the security-motivated redaction of query strings and credentials from website URLs with url_has_query as the flag. The only omission is any statement about rate limits or eventual consistency, which is minor for a read.

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 return payload is front-loaded in the first sentence, followed by the URL redaction caveat, the scope exclusion, and the error case in a logical order. It is dense but each sentence carries distinct information; the field enumeration is long but functional.

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?

For a one-parameter read tool with an output schema, the description covers purpose, return field set, redaction behavior and the failure mode. Nothing an agent needs in order to call it correctly or interpret an empty result 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?

There is a single `id` parameter at 100% schema coverage, where the schema already documents the check_… format, so the description owes nothing further. It adds no format, validation or ownership nuance beyond what the schema states, which is the expected baseline here.

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?

Opens with a specific verb and resource ("Read one check by id") and then enumerates exactly which fields constitute that state (status, status_reason, expiry, config, probe locations, notification groups, dashboard ids). It also explicitly scopes out what siblings cover — run history, incidents, heartbeat ping URLs — so an agent can distinguish it from get_check_history, get_incident and get_check_ping_urls without opening a schema.

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

Usage Guidelines4/5

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

The sentence "This is the check's current state and settings only: run history, incidents and heartbeat ping URLs aren't included" tells the agent precisely when this tool is the wrong choice, which is strong negative guidance. It stops short of naming the replacement tools, so the routing decision still requires the sibling list.

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