Skip to main content
Glama
zscaler

zscaler-mcp-server

Official
by zscaler

zdx_list_alerts

Read-only

List ongoing ZDX alerts.

Instructions

List ongoing ZDX alerts.

Read-only. Returns one triage row per ongoing alert (id, rule, severity, type, start time, impacted-device count). Filter by location/department/geo and the since HOURS window (max 336h). Use a returned alert id with zdx_get_alert or zdx_list_alert_affected_devices.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoOptional JMESPath expression applied to the results after the API call, for client-side filtering and projection. Examples: "[?enabled==`true`]", "[*].{name: name, id: id}", "length(@)". Omit to get the full records. IMPORTANT: field names are the keys of the returned records, which are usually snake_case (`custom_category`) even where the Zscaler API documents camelCase (`customCategory`) — guessing the spelling yields an empty list that looks like a real answer. If you have not already seen a record from this tool, call it once without `query` and read the keys off the response.
sinceNo
geo_idNo
offsetNo
location_idNo
department_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changedv0.15.3
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / department_id / title
      Added value: +"Department Id"
    • addedInput schema / properties / geo_id / title
      Added value: +"Geo Id"
    • addedInput schema / properties / limit / title
      Added value: +"Limit"
    • addedInput schema / properties / location_id / title
      Added value: +"Location Id"
    • addedInput schema / properties / offset / title
      Added value: +"Offset"
    • changedInput schema / properties / query / description
      Previous value: -"Optional JMESPath expression applied to the results after the API call, for client-side filtering and projection. Field names are exactly what the Zscaler API returns. Examples: \"[?enabled==`true`]\", \"[*].{name: name, id: id}\", \"length(@)\". Omit to get the full records."New value: +"Optional JMESPath expression applied to the results after the API call, for client-side filtering and projection. Examples: \"[?enabled==`true`]\", \"[*].{name: name, id: id}\", \"length(@)\". Omit to get the full records. IMPORTANT: field names are the keys of the returned records, which are usually snake_case (`custom_category`) even where the Zscaler API documents camelCase (`customCategory`) — guessing the spelling yields an empty list that looks like a real answer. If you have not already seen a record from this tool, call it once without `query` and read the keys off the response."
    • addedInput schema / properties / query / title
      Added value: +"Query"
    • addedInput schema / properties / since / title
      Added value: +"Since"
    • addedInput schema / title
      Added value: +"zdx_list_alertsArguments"
  2. Changed18 schema fields changedv0.14.0
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / department_id / description
      Removed value: -"Filter by department ID(s)."
    • removedInput schema / properties / department_id / title
      Removed value: -"Department Id"
    • removedInput schema / properties / geo_id / description
      Removed value: -"Filter by geolocation ID(s)."
    • removedInput schema / properties / geo_id / title
      Removed value: -"Geo Id"
    • removedInput schema / properties / limit / description
      Removed value: -"Number of items to return per request (minimum 1)."
    • removedInput schema / properties / limit / title
      Removed value: -"Limit"
    • removedInput schema / properties / location_id / description
      Removed value: -"Filter by location ID(s)."
    • removedInput schema / properties / location_id / title
      Removed value: -"Location Id"
    • removedInput schema / properties / offset / description
      Removed value: -"The next_offset value from the last request for pagination."
    • removedInput schema / properties / offset / title
      Removed value: -"Offset"
    • changedInput schema / properties / query / description
      Previous value: -"JMESPath expression for client-side filtering/projection of results."New value: +"Optional JMESPath expression applied to the results after the API call, for client-side filtering and projection. Field names are exactly what the Zscaler API returns. Examples: \"[?enabled==`true`]\", \"[*].{name: name, id: id}\", \"length(@)\". Omit to get the full records."
    • removedInput schema / properties / query / title
      Removed value: -"Query"
    • removedInput schema / properties / service
      Removed value: -{
      -  "default": "zdx",
      -  "description": "The service to use.",
      -  "title": "Service",
      -  "type": "string"
      -}
    • removedInput schema / properties / since / description
      Removed value: -"Number of hours to look back (default 2h). Cannot exceed 14 days."
    • removedInput schema / properties / since / title
      Removed value: -"Since"
    • removedInput schema / title
      Removed value: -"zdx_list_alertsArguments"
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "items": {
      -        "additionalProperties": true,
      -        "type": "object"
      -      },
      -      "title": "Result",
      -      "type": "array"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "title": "zdx_list_alertsOutput",
      -  "type": "object"
      -}New value: +null
  3. First observedv0.12.7

TDQS

A4.4/5.0
Behavior4/5

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

It explicitly states read-only, matching the annotation, and describes the return structure. It also warns about the query parameter's field naming convention (snake_case vs camelCase) and provides example JMESPath expressions, which goes beyond the annotation. No side effects are expected; the description is honest about behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, starting with the primary action and then detailing output, filters, and follow-up use. It avoids redundancy and focuses on essential information, with the query parameter details placed in the schema rather than cluttering the description.

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 there is no output schema, the description adequately lists the return fields (id, rule, severity, type, start time, impacted-device count) and mentions related tools for follow-up. It implies pagination via limit/offset but does not elaborate on error handling or edge cases, which are minor omissions for a list operation.

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?

The description adds meaning to several parameters: it explains that `since` is in hours with a max of 336, and that filters are by location, department, and geo (corresponding to location_id, department_id, geo_id). The schema itself only describes `query` in detail, so this compensates for the sparse schema. However, limit and offset are not explicitly explained beyond their names.

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?

The description clearly states the tool lists ongoing ZDX alerts and specifies the output format (triage rows with id, rule, severity, etc.). It also distinguishes itself by noting the returned alert id can be used with zdx_get_alert or zdx_list_alert_affected_devices, indicating its role in a workflow.

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 description implies this is for ongoing alerts, contrasting with historical alerts, but does not explicitly mention alternatives like zdx_list_historical_alerts. It gives guidance on filtering by location/department/geo and the since window, and advises using returned ids with related tools, which is helpful but could be more explicit about when to choose this over other list tools.

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

Deploy Server

Other Tools