Skip to main content
Glama
Zabbix MCP Server

Zabbix MCP Server

hostdashboard_get

Read-only

Retrieve the dashboards a host inherits from linked templates, returning host, template, dashboard, and display details. Provide host IDs to list each host-template dashboard record.

Instructions

Retrieve the dashboards a host has through its linked templates (Zabbix 7.0+): one record per host and template dashboard with hostid, dashboardid, name, display_period, auto_start and the templateid it comes from. 'hostids' is required. Use selectPages in extra_params for the pages and widgets as resolved for that host. For the template dashboards themselves use templatedashboard_get, for global dashboards dashboard_get. Not documented in the API reference.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of records to return.
filterNoReturn only results whose properties exactly match the given values (a single value or a list of values per key). Example: {"status": 0} or {"status": [0, 1]}. Only these keys are accepted: dashboardid, name, display_period, auto_start, templateid. Text properties cannot be filtered; use 'search' for them.
outputNoProperties of the hostdashboard object to return. Pass 'extend' for all, 'count' for the number of matches only, or a list of property names. Default when omitted: hostid, dashboardid, name, templateid. Properties: auto_start, dashboardid, display_period, hostid, name, templateid.
searchNoReturn results whose string properties contain the given pattern (case-insensitive; '*' is a wildcard when searchWildcardsEnabled is true). Example: {"name": "web"}. Only these keys are accepted: name.
serverNoTarget Zabbix server. Available: default. Defaults to 'default' if omitted.
hostidsYesReturn the dashboards of these hosts (required).
raw_jsonNoStrips the security disclaimer preamble from the response so it is pure JSON. Default: false. Requires the bearer token to have 'allow_raw_json' explicitly enabled by an operator in the admin portal - tokens without that policy receive a PolicyError instead. WARNING: setting true bypasses the prompt-injection mitigation marker that wraps untrusted Zabbix data (host names, item descriptions, problem text). LLM clients (Claude, GPT, Cursor, ...) should leave this false; only programmatic non-LLM consumers (Python scripts, n8n workflows that json.loads the result) should set true.
sortfieldNoSort by one or more of: hostid, dashboardid, name (a list for several; pair with 'sortorder'). No other property is sortable.
sortorderNoSort order: 'ASC' or 'DESC'.
countOutputNoReturn the count instead of the records.
dashboardidsNoReturn only the given template dashboards.
extra_paramsNoOther native hostdashboard.get parameters, merged into the request as-is. Parameters: groupCount. Switches (true turns one on, false is the same as leaving it out): groupCount. groupCount goes with output='count': the count is then split by the ID filters the method groups by (hostids, groupids ...), one row per ID with 'rowscount'; a single row without such a filter. Sub-object selects (value 'extend', 'count' or a list of property names): selectPages. Any other key is refused here, because Zabbix would silently ignore it. For a parameter you are sure exists on your release but is not listed, use zabbix_raw_api_call.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changedv1.42.2
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / extra_params / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "propertyNames": {
      +      "enum": [
      +        "editable",
      +        "excludeSearch",
      +        "searchByAny",
      +        "searchWildcardsEnabled",
      +        "startSearch",
      +        "groupCount",
      +        "selectPages"
      +      ]
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / extra_params / description
      Previous value: -"Other native hostdashboard.get parameters, merged into the request as-is. Parameters: groupCount. Sub-object selects (value 'extend', 'count' or a list of property names): selectPages. Any other key is refused here, because Zabbix would silently ignore it. For a parameter you are sure exists on your release but is not listed, use zabbix_raw_api_call."New value: +"Other native hostdashboard.get parameters, merged into the request as-is. Parameters: groupCount. Switches (true turns one on, false is the same as leaving it out): groupCount. groupCount goes with output='count': the count is then split by the ID filters the method groups by (hostids, groupids ...), one row per ID with 'rowscount'; a single row without such a filter. Sub-object selects (value 'extend', 'count' or a list of property names): selectPages. Any other key is refused here, because Zabbix would silently ignore it. For a parameter you are sure exists on your release but is not listed, use zabbix_raw_api_call."
    • changedInput schema / properties / filter / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "propertyNames": {
      +      "enum": [
      +        "dashboardid",
      +        "name",
      +        "display_period",
      +        "auto_start",
      +        "templateid"
      +      ]
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / output / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "extend",
      +      "count"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "enum": [
      +        "auto_start",
      +        "dashboardid",
      +        "display_period",
      +        "hostid",
      +        "name",
      +        "templateid"
      +      ],
      +      "type": "string"
      +    },
      +    "minItems": 1,
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / output / description
      Previous value: -"Properties of the hostdashboard object to return. Pass 'extend' for all, 'count' for the number of matches only, or a comma-separated list of property names. Default when omitted: hostid, dashboardid, name, templateid. Properties: auto_start, dashboardid, display_period, hostid, name, templateid."New value: +"Properties of the hostdashboard object to return. Pass 'extend' for all, 'count' for the number of matches only, or a list of property names. Default when omitted: hostid, dashboardid, name, templateid. Properties: auto_start, dashboardid, display_period, hostid, name, templateid."
    • changedInput schema / properties / search / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "propertyNames": {
      +      "enum": [
      +        "name"
      +      ]
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / sortfield / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "hostid",
      +      "dashboardid",
      +      "name"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "enum": [
      +        "hostid",
      +        "dashboardid",
      +        "name"
      +      ],
      +      "type": "string"
      +    },
      +    "minItems": 1,
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / sortfield / description
      Previous value: -"Sort by one or more of: hostid, dashboardid, name (comma-separated for several; pair with 'sortorder'). No other property is sortable."New value: +"Sort by one or more of: hostid, dashboardid, name (a list for several; pair with 'sortorder'). No other property is sortable."
    • changedInput schema / properties / sortorder / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "ASC",
      +      "DESC"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "enum": [
      +        "ASC",
      +        "DESC"
      +      ],
      +      "type": "string"
      +    },
      +    "minItems": 1,
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "title": "Result",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "title": "hostdashboard_getOutput",
      -  "type": "object"
      -}New value: +null
  2. First observedv1.41.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds context the annotations cannot: the Zabbix 7.0+ version floor, the cardinality model (one record per host-template-dashboard pair), the provenance field templateid, and the notable caveat 'Not documented in the API reference', which warns the agent that schema/API assumptions may not hold.

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?

Four sentences, front-loaded with purpose and result shape, then requirement, then sibling routing. The enumerated return fields are dense but necessary given there is no output schema; nothing is padded.

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?

With 12 parameters, no output schema, and 100% schema coverage, the description closes the two real gaps: it enumerates the default returned fields and states which sibling covers the adjacent resource. The one omission is pagination/limit behavior, which the schema covers generically.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description still adds value by explaining that selectPages belongs in extra_params and yields pages/widgets 'as resolved for that host' — a distinction the extra_params schema text muddles (it enumerates only groupCount in its prose while allowing selectPages in the enum).

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 ('Retrieve the dashboards a host has through its linked templates') and immediately bounds the result shape ('one record per host and template dashboard'). It names the two sibling tools it is not (templatedashboard_get, dashboard_get) and their respective scopes, so an agent can route without opening any schema.

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?

Explicit routing rules are given: template dashboards themselves go to templatedashboard_get, global dashboards go to dashboard_get. It also states the hard requirement ('hostids' is required) and points to selectPages in extra_params when per-host page/widget resolution is needed.

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