Skip to main content
Glama
Zabbix MCP Server

Zabbix MCP Server

triggerprototype_get

Read-only

Retrieve trigger prototypes to inspect LLD-generated trigger definitions, expressions, filters, and status for hosts, templates, or discovery rules.

Instructions

Retrieve trigger prototypes. Trigger prototypes are used by LLD rules to create real triggers for each discovered entity. Their expressions reference item prototypes and use LLD macros. The expression comes in the form the update tool takes, functions written out and user macros kept ('avg(/host/key,10m)>{$MAX}'; Zabbix 5.4 and later, before that Zabbix's own expansion). extra_params expandExpression: true asks Zabbix for its own expansion instead, with every user macro replaced by its current value: for reading, never for sending back (the trigger would lose its macros); false returns the stored form with function IDs.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of results 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]}. Keys: correlation_mode, correlation_tag, description, discover, event_name (6.0+), expression, flags (7.4+), manual_close, opdata, priority, recovery_expression, recovery_mode, status, templateid, triggerid, type, url, url_name (6.4+), uuid (6.0+). Text properties cannot be filtered; use 'search' for them.
outputNoProperties of the triggerprototype object to return. Pass 'extend' for all, 'count' for the number of matches only, or a list of property names. Default when omitted: triggerid, description, priority, status. Properties: comments, correlation_mode, correlation_tag, description, discover, error (removed in 8.0), event_name (6.0+), expression, flags (7.4+), lastchange (removed in 8.0), manual_close, opdata, priority, recovery_expression, recovery_mode, state (removed in 8.0), status, templateid, triggerid, type, url, url_name (6.4+), uuid (6.0+), value (removed in 8.0).
searchNoReturn results whose string properties contain the given pattern (case-insensitive; '*' is a wildcard when searchWildcardsEnabled is true). Example: {"name": "web"}. Keys: comments, correlation_tag, description, event_name (6.0+), expression, opdata, recovery_expression, url, url_name (6.4+), uuid (6.0+).
serverNoTarget Zabbix server. Available: default. Defaults to 'default' if omitted.
hostidsNoReturn only trigger prototypes that belong to the given hosts.
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: triggerid, description, status, priority, discover (a list for several; pair with 'sortorder'). No other property is sortable.
sortorderNoSort order: 'ASC' (ascending) or 'DESC' (descending).
triggeridsNoReturn only trigger prototypes with the given IDs.
countOutputNoReturn the count of matching results instead of the actual data.
searchByAnyNoIf true, return results matching ANY search field (OR). Default is ALL fields (AND).
templateidsNoReturn only trigger prototypes that belong to the given templates.
discoveryidsNoReturn only trigger prototypes belonging to the given LLD rules.
extra_paramsNoOther native triggerprototype.get parameters, merged into the request as-is. Parameters: active, expandExpression, functions, group, groupCount, groupids, host, inherited, itemids, limitSelects, maintenance, min_severity, monitored, templated. Switches (true turns one on, false is the same as leaving it out): active, expandExpression, groupCount, monitored. 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): selectDependencies, selectDiscoveryData (7.4+), selectDiscoveryRule, selectDiscoveryRulePrototype (7.4+), selectFunctions, selectGroups (removed in 7.2), selectHostGroups (6.2+), selectHosts, selectInheritedTags (8.0+), selectItems, selectTags, selectTemplateGroups (6.2+). 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.
searchWildcardsEnabledNoIf true, enable * and ? wildcards in search patterns.

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",
      +        "preservekeys",
      +        "startSearch",
      +        "active",
      +        "expandExpression",
      +        "functions",
      +        "group",
      +        "groupCount",
      +        "groupids",
      +        "host",
      +        "inherited",
      +        "itemids",
      +        "limitSelects",
      +        "maintenance",
      +        "min_severity",
      +        "monitored",
      +        "templated",
      +        "applicationids",
      +        "selectDependencies",
      +        "selectDiscoveryData",
      +        "selectDiscoveryRule",
      +        "selectDiscoveryRulePrototype",
      +        "selectFunctions",
      +        "selectGroups",
      +        "selectHostGroups",
      +        "selectHosts",
      +        "selectInheritedTags",
      +        "selectItems",
      +        "selectTags",
      +        "selectTemplateGroups"
      +      ]
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / extra_params / description
      Previous value: -"Other native triggerprototype.get parameters, merged into the request as-is. Parameters: active, expandExpression, functions, group, groupids, host, inherited, limitSelects, maintenance, min_severity, monitored, templated. Sub-object selects (value 'extend', 'count' or a list of property names): selectDependencies, selectDiscoveryData (7.4+), selectDiscoveryRule, selectDiscoveryRulePrototype (7.4+), selectFunctions, selectGroups (removed in 7.2), selectHostGroups (6.2+), selectHosts, selectInheritedTags (8.0+), selectItems, selectTags, selectTemplateGroups (6.2+). 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 triggerprototype.get parameters, merged into the request as-is. Parameters: active, expandExpression, functions, group, groupCount, groupids, host, inherited, itemids, limitSelects, maintenance, min_severity, monitored, templated. Switches (true turns one on, false is the same as leaving it out): active, expandExpression, groupCount, monitored. 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): selectDependencies, selectDiscoveryData (7.4+), selectDiscoveryRule, selectDiscoveryRulePrototype (7.4+), selectFunctions, selectGroups (removed in 7.2), selectHostGroups (6.2+), selectHosts, selectInheritedTags (8.0+), selectItems, selectTags, selectTemplateGroups (6.2+). 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": [
      +        "correlation_mode",
      +        "correlation_tag",
      +        "description",
      +        "discover",
      +        "event_name",
      +        "expression",
      +        "flags",
      +        "manual_close",
      +        "opdata",
      +        "priority",
      +        "recovery_expression",
      +        "recovery_mode",
      +        "status",
      +        "templateid",
      +        "triggerid",
      +        "type",
      +        "url",
      +        "url_name",
      +        "uuid"
      +      ]
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / output / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "extend",
      +      "count"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "enum": [
      +        "comments",
      +        "correlation_mode",
      +        "correlation_tag",
      +        "description",
      +        "discover",
      +        "error",
      +        "event_name",
      +        "expression",
      +        "flags",
      +        "lastchange",
      +        "manual_close",
      +        "opdata",
      +        "priority",
      +        "recovery_expression",
      +        "recovery_mode",
      +        "state",
      +        "status",
      +        "templateid",
      +        "triggerid",
      +        "type",
      +        "url",
      +        "url_name",
      +        "uuid",
      +        "value"
      +      ],
      +      "type": "string"
      +    },
      +    "minItems": 1,
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / output / description
      Previous value: -"Properties of the triggerprototype 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: triggerid, description, priority, status. Properties: comments, correlation_mode, correlation_tag, description, discover, error (removed in 8.0), event_name (6.0+), expression, flags (7.4+), lastchange (removed in 8.0), manual_close, opdata, priority, recovery_expression, recovery_mode, state (removed in 8.0), status, templateid, triggerid, type, url, url_name (6.4+), uuid (6.0+), value (removed in 8.0)."New value: +"Properties of the triggerprototype object to return. Pass 'extend' for all, 'count' for the number of matches only, or a list of property names. Default when omitted: triggerid, description, priority, status. Properties: comments, correlation_mode, correlation_tag, description, discover, error (removed in 8.0), event_name (6.0+), expression, flags (7.4+), lastchange (removed in 8.0), manual_close, opdata, priority, recovery_expression, recovery_mode, state (removed in 8.0), status, templateid, triggerid, type, url, url_name (6.4+), uuid (6.0+), value (removed in 8.0)."
    • changedInput schema / properties / search / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "propertyNames": {
      +      "enum": [
      +        "comments",
      +        "correlation_tag",
      +        "description",
      +        "event_name",
      +        "expression",
      +        "opdata",
      +        "recovery_expression",
      +        "url",
      +        "url_name",
      +        "uuid"
      +      ]
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / sortfield / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "triggerid",
      +      "description",
      +      "status",
      +      "priority",
      +      "discover"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "enum": [
      +        "triggerid",
      +        "description",
      +        "status",
      +        "priority",
      +        "discover"
      +      ],
      +      "type": "string"
      +    },
      +    "minItems": 1,
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / sortfield / description
      Previous value: -"Sort by one or more of: triggerid, description, status, priority, discover (comma-separated for several; pair with 'sortorder'). No other property is sortable."New value: +"Sort by one or more of: triggerid, description, status, priority, discover (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": "triggerprototype_getOutput",
      -  "type": "object"
      -}New value: +null
  2. First observedv1.41.0

TDQS

A4/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 goes further with behavior the annotations cannot express: expression formatting differs by Zabbix version (5.4+ vs earlier), and expandExpression=true substitutes user macros with live values and must not be round-tripped because the trigger would lose its macros. Return shape and result volume are not addressed, but the method-specific semantics are well disclosed.

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?

Purpose is front-loaded in the first clause, then domain context and the expandExpression caveat. It is dense but nearly every sentence carries decision-relevant content; the version aside ("Zabbix 5.4 and later, before that Zabbix's own expansion") is awkwardly phrased and slightly bloats the opening block.

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 16 optional parameters, no output schema and no required fields, the definition covers the highest-risk semantics (expression form, expandExpression side effects, omitted-key rejection) adequately. What remains thin is the default return payload: the default field set (triggerid, description, priority, status) lives only in the schema, and nothing describes the shape of a returned prototype object.

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

Parameters5/5

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

Schema coverage is 100%, so baseline would be 3, and the description earns above that by explaining expandExpression — a switch the schema only lists by name — in operational detail (its meaning, version interaction, and the hazard of feeding the expanded form back into an update). It also notes that refused extra_params keys are rejected rather than silently ignored by Zabbix, and routes unknown parameters to zabbix_raw_api_call.

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?

Opens with a specific verb+resource ("Retrieve trigger prototypes") and adds what the resource actually is (LLD-generated triggers for discovered entities). It never distinguishes itself from nearby siblings like trigger_get, discoveryruleprototype_get or itemprototype_get, so an agent must infer the boundary, but the object type itself is unambiguous.

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

Usage Guidelines3/5

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

Usage context is implied rather than stated: it explains that trigger prototypes exist under LLD rules (and the discoveryids param confirms that path), but never says when to pick this over trigger_get or discoveryruleprototype_get. The one explicit guidance is for expandExpression — read-only use, "never for sending back" — which is genuinely directive but covers a single parameter.

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