Skip to main content
Glama

Get dashboard

get_dashboard
Read-onlyIdempotent

Read one dashboard by id, Overview included: its name, display settings, whether it's public and editable, its sections (listed as groups, in display order, up to 100) and its checks. Checks come 20 per page in display order, each with its full details, its position and the id of its section, and next_cursor is null on the last page. This is the way to see what a dashboard holds; a list of dashboards gives only names and links. An id that doesn't exist or belongs to another account returns not_found. public_url and public_wallboard_url are unauthenticated sharing links, set only for already-public dashboards; otherwise both are null. domain_url and domain_wallboard_url are set when the public dashboard is also served on its own verified subdomain or custom domain. Does not add domains.

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_dashboard"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesDashboard id (dash_…).
limitNoChecks per page, 1 to 100. Defaults to 20.
cursorNonext_cursor from the previous page of checks. Omit for the first page.

Output Schema

NameRequiredDescriptionDefault
idYes
nameYes
checksYes
groupsYes
publicYes
defaultYes
editableYes
settingsYes
domain_urlYes
public_urlYes
groups_truncatedYes
domain_wallboard_urlYes
public_wallboard_urlYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed28 schema fields changed
    • changedOutput schema / properties / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / properties / configuration / properties / url
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / checks / properties / items / items / properties / configuration / properties / url_has_query
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / 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 / checks / properties / items / items / properties / status_reason
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / checks / properties / items / items / required
      Previous value: -[
      -  "id",
      -  "status",
      -  "last_activity_at",
      -  "expires_on",
      -  "configuration",
      -  "notification_group_ids",
      -  "dashboard_ids",
      -  "position",
      -  "group_id"
      -]New value: +[
      +  "id",
      +  "status",
      +  "status_reason",
      +  "last_activity_at",
      +  "expires_on",
      +  "configuration",
      +  "notification_group_ids",
      +  "dashboard_ids",
      +  "position",
      +  "group_id"
      +]
    • addedOutput schema / properties / groups / items / properties / position
      Added value: +{
      +  "type": "integer"
      +}
    • changedOutput schema / properties / groups / items / required
      Previous value: -[
      -  "id",
      -  "name"
      -]New value: +[
      +  "id",
      +  "name",
      +  "position"
      +]
  2. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's value is in the extra context it supplies: not_found for missing or cross-account ids, section cap of 100, pagination termination via null next_cursor, and conditional nullability of public/domain URLs. The only friction is "Checks come 20 per page" versus a limit parameter that allows up to 100, which reads as if 20 is fixed rather than the default.

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?

Front-loaded with the core action in the first clause and the sibling differentiation early, with no filler sentences. It is dense with return-field detail and ends on a clipped fragment ("Does not add domains.") whose meaning is not self-evident out of context.

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?

Given an output schema exists, the description need not enumerate return fields, yet it still covers error behavior, pagination semantics, and sharing-link nullability, which is more than adequate. The one gap is the unresolved interaction between the stated 20-per-page behavior and the limit parameter's 1–100 range.

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 coverage is 100% and all three parameters are documented in-schema, so the schema does the heavy lifting and the baseline is 3. The description adds a little meaning around the id (nonexistent or other-account ids return not_found) and the cursor (next_cursor on the last page is null), but adds nothing about limit beyond restating the default page size.

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?

States a specific verb and resource ("Read one dashboard by id") and enumerates exactly what is returned: name, display settings, public/editable flags, ordered sections, and checks. It is immediately distinguishable from list_dashboards, which the description explicitly characterizes as returning "only names and links."

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?

Explicitly routes the agent: "This is the way to see what a dashboard holds; a list of dashboards gives only names and links," naming the alternative and the condition that selects it. It also implies the read-only inspection case versus the mutation siblings (update_dashboard, publish_dashboard) by describing this as a pure read.

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