Skip to main content
Glama
Zabbix MCP Server

Zabbix MCP Server

apmspan_get

Read-only

Retrieve OpenTelemetry APM spans from Zabbix 8.0+ within a required time range, filtering by trace, span, attributes, or duration and paging results.

Instructions

Retrieve OpenTelemetry (OTel) APM spans (Zabbix 8.0+): the individual operations inside traces, with parent_spanid, span_kind, duration in nanoseconds, status, events and links. time_from and time_till are required and bound the span start. Filter by traceids (all spans of a trace), spanids, parent_spanids, attribute conditions or duration. Page with limit and offset. For a user who is not Super admin the result is limited to the data whose resource attributes match an APM filter of one of the user's groups (usergroup 'apm_filters').

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]}. Keys: duration, events, links, parent_spanid, resource_attributes, scope_name, scope_version, service_name, span_attributes, span_kind, span_name, spanid, status_code, status_message, timestamp, trace_state, traceid. Text properties cannot be filtered; use 'search' for them.
offsetNoNumber of records to skip before returning the result (paging).
outputNoProperties of the apmspan object to return. Pass 'extend' for all, 'count' for the number of matches only, or a list of property names. Default when omitted: timestamp, traceid, spanid, parent_spanid, service_name, span_name, duration, status_code. Properties: duration, events, links, parent_spanid, resource_attributes, scope_name, scope_version, service_name, span_attributes, span_kind, span_name, spanid, status_code, status_message, timestamp, trace_state, traceid.
searchNoReturn results whose string properties contain the given pattern (case-insensitive; '*' is a wildcard when searchWildcardsEnabled is true). Example: {"name": "web"}. Keys: parent_spanid, scope_name, scope_version, service_name, span_kind, span_name, spanid, status_code, status_message, trace_state, traceid.
serverNoTarget Zabbix server. Available: default. Defaults to 'default' if omitted.
spanidsNoReturn only spans with the given IDs.
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.
traceidsNoReturn only spans that belong to the given traces.
sortfieldNoSort by one or more of: timestamp, traceid, spanid, parent_spanid, trace_state, span_name, span_kind, service_name, scope_name, scope_version, duration, status_code, status_message (a list for several; pair with 'sortorder'). No other property is sortable.
sortorderNoSort order: 'ASC' or 'DESC'.
time_fromYesReturn only spans that started at or after this time (required). Unix timestamp, ISO 8601 date-time or a relative time such as now-1h or now-1d/d.
time_tillYesReturn only spans that started before this time (required). Unix timestamp, ISO 8601 date-time or a relative time such as now or now/d.
extra_paramsNoOther native apmspan.get parameters, merged into the request as-is. apmspan.get has no parameters beyond the typed ones. 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.
max_durationNoReturn only spans that lasted less than this many nanoseconds.
min_durationNoReturn only spans that lasted at least this many nanoseconds.
parent_spanidsNoReturn only spans whose parent span has one of the given IDs.
span_attributesNoSpan attributes: Attribute conditions as a list of {"key": ..., "value": ..., "operator": ...} objects; operators: 0 Contains, 1 Equals, 2 Not like, 3 Not equal, 4 Exists, 5 Does not exist. An empty list returns everything.
resource_attributesNoResource attributes: Attribute conditions as a list of {"key": ..., "value": ..., "operator": ...} objects; operators: 0 Contains, 1 Equals, 2 Not like, 3 Not equal, 4 Exists, 5 Does not exist. An empty list returns everything.
span_attributes_evaltypeNoHow the conditions in span_attributes combine: 0 = And/Or (default), 2 = Or.
resource_attributes_evaltypeNoHow the conditions in resource_attributes combine: 0 = And/Or (default), 2 = Or.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 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": [
      +        "countOutput",
      +        "excludeSearch",
      +        "searchByAny",
      +        "searchWildcardsEnabled",
      +        "startSearch"
      +      ]
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / filter / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "propertyNames": {
      +      "enum": [
      +        "duration",
      +        "events",
      +        "links",
      +        "parent_spanid",
      +        "resource_attributes",
      +        "scope_name",
      +        "scope_version",
      +        "service_name",
      +        "span_attributes",
      +        "span_kind",
      +        "span_name",
      +        "spanid",
      +        "status_code",
      +        "status_message",
      +        "timestamp",
      +        "trace_state",
      +        "traceid"
      +      ]
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / output / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "extend",
      +      "count"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "enum": [
      +        "duration",
      +        "events",
      +        "links",
      +        "parent_spanid",
      +        "resource_attributes",
      +        "scope_name",
      +        "scope_version",
      +        "service_name",
      +        "span_attributes",
      +        "span_kind",
      +        "span_name",
      +        "spanid",
      +        "status_code",
      +        "status_message",
      +        "timestamp",
      +        "trace_state",
      +        "traceid"
      +      ],
      +      "type": "string"
      +    },
      +    "minItems": 1,
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / output / description
      Previous value: -"Properties of the apmspan 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: timestamp, traceid, spanid, parent_spanid, service_name, span_name, duration, status_code. Properties: duration, events, links, parent_spanid, resource_attributes, scope_name, scope_version, service_name, span_attributes, span_kind, span_name, spanid, status_code, status_message, timestamp, trace_state, traceid."New value: +"Properties of the apmspan object to return. Pass 'extend' for all, 'count' for the number of matches only, or a list of property names. Default when omitted: timestamp, traceid, spanid, parent_spanid, service_name, span_name, duration, status_code. Properties: duration, events, links, parent_spanid, resource_attributes, scope_name, scope_version, service_name, span_attributes, span_kind, span_name, spanid, status_code, status_message, timestamp, trace_state, traceid."
    • changedInput schema / properties / search / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "propertyNames": {
      +      "enum": [
      +        "parent_spanid",
      +        "scope_name",
      +        "scope_version",
      +        "service_name",
      +        "span_kind",
      +        "span_name",
      +        "spanid",
      +        "status_code",
      +        "status_message",
      +        "trace_state",
      +        "traceid"
      +      ]
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / sortfield / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "timestamp",
      +      "traceid",
      +      "spanid",
      +      "parent_spanid",
      +      "trace_state",
      +      "span_name",
      +      "span_kind",
      +      "service_name",
      +      "scope_name",
      +      "scope_version",
      +      "duration",
      +      "status_code",
      +      "status_message"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "enum": [
      +        "timestamp",
      +        "traceid",
      +        "spanid",
      +        "parent_spanid",
      +        "trace_state",
      +        "span_name",
      +        "span_kind",
      +        "service_name",
      +        "scope_name",
      +        "scope_version",
      +        "duration",
      +        "status_code",
      +        "status_message"
      +      ],
      +      "type": "string"
      +    },
      +    "minItems": 1,
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / sortfield / description
      Previous value: -"Sort by one or more of: timestamp, traceid, spanid, parent_spanid, trace_state, span_name, span_kind, service_name, scope_name, scope_version, duration, status_code, status_message (comma-separated for several; pair with 'sortorder'). No other property is sortable."New value: +"Sort by one or more of: timestamp, traceid, spanid, parent_spanid, trace_state, span_name, span_kind, service_name, scope_name, scope_version, duration, status_code, status_message (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": "apmspan_getOutput",
      -  "type": "object"
      -}New value: +null
  2. First observedv1.41.0

TDQS

A4.3/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 safety is covered. The description adds genuinely non-obvious behavior: time_from/time_till are required and bound span start, and non-Super-admin results are restricted to data matching an APM filter of one of the user's groups (usergroup 'apm_filters'). It does not discuss result size or performance limits.

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?

A single dense paragraph that front-loads what the tool returns, then filtering, then paging, then the permission caveat. Every sentence carries information, though the long run-on structure makes it slightly harder to scan than a bulleted layout.

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?

For a 21-parameter read tool with no output schema, the description covers the essential contract: required time bounds, the main filter axes, paging, and the permission-based result restriction. It leaves the exact response shape and default output fields to the schema, which is acceptable.

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 coverage is 100%, so the baseline is 3, but the description adds real meaning: duration is in nanoseconds, time bounds apply to span start, traceids returns all spans of a trace, and paging is via limit/offset. It does not explain the attribute-condition operator semantics, which the schema already covers.

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 OpenTelemetry (OTel) APM spans') and immediately scopes it as 'the individual operations inside traces', which distinguishes it from the sibling apmtrace_get and apmlog_get. It also enumerates the returned fields (parent_spanid, span_kind, duration, status, events, links).

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?

Gives concrete selection criteria: filter by traceids to get all spans of a trace, by spanids/parent_spanids, by attribute conditions or duration, and page with limit/offset. It does not explicitly say when to prefer apmtrace_get or apmlog_get instead, so the sibling routing is only implied.

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