Skip to main content
Glama
mhajder

Zabbix MCP Server

by mhajder

Zabbix MCP Server

Let AI agents query and manage Zabbix monitoring through the Model Context Protocol

PyPI Python License

Pre-commit Checks Docker MCP Registry

Installation · Tools · Configuration · Security

Zabbix MCP Server is a Python-based Model Context Protocol (MCP) server designed to provide advanced, programmable access to Zabbix monitoring data and management features. It exposes a modern API for querying, automating, and integrating Zabbix resources such as hosts, templates, triggers, items, problems, events, users, proxies, maintenance periods, and more. The server supports both read and write operations, robust security features, and is suitable for integration with AI assistants, automation tools, dashboards, and custom monitoring workflows.

✨ Features

Core Features

  • Query Zabbix hosts, templates, items, triggers, and host groups with flexible filtering

  • Retrieve problems, events, and alerts with severity filtering

  • Access history and trend data for monitored items

  • Monitor trigger states and problem severity

  • Manage maintenance periods and scheduled downtimes

  • Retrieve user macros and configuration data

  • Get SLA and service information

Management Operations

  • Create, update, and delete hosts, templates, and host groups (if enabled)

  • Manage triggers, items, and discovery rules

  • Configure maintenance periods and user macros

  • Execute scripts on monitored hosts

  • Acknowledge events and close problems

  • Create and manage users and proxies

  • Support for bulk operations on hosts and templates

Advanced Capabilities

  • Rate limiting and API security features

  • Read-only mode to restrict all write operations for safe monitoring

  • Optional tool-search transform for large tool catalogs

  • Bearer token authentication for HTTP transport

  • Comprehensive logging and audit trails

  • SSL/TLS support and configurable timeouts

  • Multiple transport options (STDIO, SSE, HTTP)

  • Optional Sentry integration for error tracking

Related MCP server: mcp-zabbix

🚀 Installation

Prerequisites

  • Python 3.11 to 3.15

  • Access to a Zabbix server. Versions 6.0 to 7.4 are supported - that is the range the zabbix-utils client accepts, and it refuses to connect outside it unless ZABBIX_SKIP_VERSION_CHECK=true is set

  • Valid Zabbix API token or user credentials with appropriate permissions

Quick Install from PyPI

The easiest way to get started is to install from PyPI:

# Using UV (recommended)
uvx zabbix-mcp

# Or using pip
pip install zabbix-mcp

Remember to configure the environment variables for your Zabbix instance before running the server:

# Create environment configuration
export ZABBIX_URL=https://zabbix.example.com/api_jsonrpc.php
export ZABBIX_TOKEN=your-zabbix-api-token

Install from Source

  1. Clone the repository:

git clone https://github.com/mhajder/zabbix-mcp.git
cd zabbix-mcp
  1. Install dependencies:

# Using UV (recommended)
uv sync

# Or using pip
pip install -e .
  1. Configure environment variables:

cp .env.example .env
# Edit .env with your Zabbix URL and credentials
  1. Run the server:

# Using UV (recommended)
uv run zabbix-mcp

# Or using the installed command directly
zabbix-mcp

Using Docker

A Docker image is available on GitHub Packages for easy deployment. It runs the HTTP Streamable transport on port 8000 (/mcp).

docker pull ghcr.io/mhajder/zabbix-mcp:latest

Open WebUI

Open WebUI 0.6.31 and later connect to the image directly; the separate MCPO image (ghcr.io/mhajder/zabbix-mcpo) is no longer published. In Open WebUI, go to Admin Settings > Integrations > External Tool Servers, add a connection of type MCP (Streamable HTTP) with the URL http://<host>:8000/mcp, and set Bearer authentication to your MCP_HTTP_BEARER_TOKEN.

Development Setup

For development with additional tools:

# Clone and install with development dependencies
git clone https://github.com/mhajder/zabbix-mcp.git
cd zabbix-mcp
uv sync --group dev

# Run tests
uv run pytest

# Run with coverage
uv run pytest --cov=src/

# Run linting and formatting
uv run ruff check .
uv run ruff format .

# Run type checking
uv run ty check .

# Setup prek hooks
uv run prek install

🔧 Configuration

Environment Variables

# Zabbix Connection Details
ZABBIX_URL=https://zabbix.example.com/api_jsonrpc.php

# Authentication - use EITHER token OR user/password
# API Token (preferred over user/password)
ZABBIX_TOKEN=your-api-token
# OR Username/Password (for older versions)
# ZABBIX_USER=Admin
# ZABBIX_PASSWORD=zabbix

# SSL Configuration
ZABBIX_VERIFY_SSL=true
ZABBIX_TIMEOUT=30
ZABBIX_SKIP_VERSION_CHECK=false

# Read-Only Mode
# Set READ_ONLY_MODE true to disable all write operations (create, update, delete)
READ_ONLY_MODE=false

# Disabled Tags
# Comma-separated list of tags to disable tools for (empty by default)
# Example: DISABLED_TAGS=host,user,maintenance
DISABLED_TAGS=

# Logging Configuration
LOG_LEVEL=INFO

# Rate Limiting
# Set RATE_LIMIT_ENABLED true to enable rate limiting
RATE_LIMIT_ENABLED=false
RATE_LIMIT_MAX_REQUESTS=60
RATE_LIMIT_WINDOW_MINUTES=1

# Tool Search Transform (Optional)
# Set TOOL_SEARCH_ENABLED true to replace full tool listing with search tools
TOOL_SEARCH_ENABLED=false
# Search strategy: bm25 (natural language) or regex (pattern matching)
TOOL_SEARCH_STRATEGY=bm25
# Maximum number of matching tools returned by search_tools
TOOL_SEARCH_MAX_RESULTS=5

# Sentry Error Tracking (Optional)
# Set SENTRY_DSN to enable error tracking and performance monitoring
# SENTRY_DSN=https://your-key@o12345.ingest.us.sentry.io/6789
# Optional Sentry configuration
# SENTRY_TRACES_SAMPLE_RATE=1.0
# SENTRY_SEND_DEFAULT_PII=false
# SENTRY_ENVIRONMENT=production
# SENTRY_RELEASE=1.2.3
# SENTRY_PROFILE_SESSION_SAMPLE_RATE=1.0
# SENTRY_PROFILE_LIFECYCLE=trace
# SENTRY_ENABLE_LOGS=true

# MCP Transport Configuration
# Transport type: 'stdio' (default), 'sse' (Server-Sent Events), or 'http' (HTTP Streamable)
# 'streamable-http' is accepted as an alias for 'http'. Any other value stops
# the server at startup.
MCP_TRANSPORT=stdio

# HTTP Transport Settings (used when MCP_TRANSPORT=sse or MCP_TRANSPORT=http)
# Host to bind the HTTP server (default: 127.0.0.1)
# MCP_HTTP_HOST=127.0.0.1
# Port to bind the HTTP server (default: 8000)
# MCP_HTTP_PORT=8000
# Optional bearer token for authentication (leave empty for no auth)
# MCP_HTTP_BEARER_TOKEN=

🧰 Available Tools

API Information

  • api_version: Get Zabbix API version information

Host Management

  • host_get: List hosts with optional filtering by groups, templates, proxies, and search criteria

  • host_create: Create a new host with interfaces and template linking

  • host_update: Update host properties (name, status, description)

  • host_delete: Delete hosts by ID

Host Group Management

  • hostgroup_get: List host groups with optional filtering

  • hostgroup_create: Create a new host group

  • hostgroup_update: Update an existing host group's properties (name)

  • hostgroup_delete: Delete host groups

Template Management

  • template_get: List templates with optional filtering

  • template_create: Create a new template

  • template_update: Update template properties (name, description)

  • template_delete: Delete templates

Item Management

  • item_get: List items with optional filtering by hosts, groups, templates

  • item_create: Create a new item on a host

  • item_update: Update item properties (name, delay, units, description, status)

  • item_delete: Delete items

Trigger Management

  • trigger_get: List triggers with severity and state filtering

  • trigger_create: Create a new trigger with expression

  • trigger_update: Update trigger properties (description, expression, priority, status, comments)

  • trigger_delete: Delete triggers

Problem & Event Management

  • problem_get: Get current problems with severity and time filtering

  • event_get: Get events with time range filtering

  • event_acknowledge: Acknowledge events with optional messages

  • history_get: Get historical data for items

  • trend_get: Get trend data for items

User Management

  • user_get: List users with optional filtering

  • user_create: Create a new user

  • user_update: Update user properties (name, surname, password, type)

  • user_delete: Delete users

Proxy Management

  • proxy_get: List proxies with optional filtering

  • proxy_create: Create a new proxy

  • proxy_update: Update proxy properties (name, operating mode, description)

  • proxy_delete: Delete proxies

Maintenance Management

  • maintenance_get: List maintenance periods

  • maintenance_create: Create a new maintenance period

  • maintenance_update: Update maintenance period properties (name, times, description)

  • maintenance_delete: Delete maintenance periods

Action & Media

  • action_get: List actions (triggers, autoregistration, etc.)

  • mediatype_get: List media types

Graph & Discovery

  • graph_get: List graphs with optional filtering

  • discoveryrule_get: List LLD discovery rules

  • drule_get: List network discovery rules

  • itemprototype_get: Get item prototypes from discovery rules

SLA & Services

  • sla_get: List SLAs

  • service_get: List services

Scripts

  • script_get: List scripts

  • script_execute: Execute a script on a host

User Macros

  • usermacro_get: List user macros (host and global)

  • usermacro_create: Create a host macro

  • usermacro_delete: Delete host macros

Configuration Management

  • configuration_export: Export Zabbix configurations to JSON or XML

  • configuration_import: Import Zabbix configurations from JSON or XML

🔒 Security & Safety Features

Read-Only Mode

The server supports a read-only mode that disables all write operations for safe monitoring:

READ_ONLY_MODE=true

Tag-Based Tool Filtering

You can disable specific categories of tools by setting disabled tags:

DISABLED_TAGS=alert,bills

Tool Search for Large Toolsets

FastMCP tool search can reduce prompt size for servers with many tools. When enabled, list_tools returns two synthetic tools:

  • search_tools: Finds matching tools and returns their full schemas

  • call_tool: Executes any discovered tool by name

Enable it with:

TOOL_SEARCH_ENABLED=true
TOOL_SEARCH_STRATEGY=bm25      # bm25 or regex
TOOL_SEARCH_MAX_RESULTS=8      # optional, default is 5

bm25 supports natural language queries, while regex uses a regex pattern input for deterministic matching.

Tool search respects existing visibility controls (read-only mode and disabled tags).

Rate Limiting

The server supports rate limiting to control API usage and prevent abuse. If enabled, requests are limited per client using a sliding window algorithm.

Enable rate limiting by setting the following environment variables in your .env file:

RATE_LIMIT_ENABLED=true
RATE_LIMIT_MAX_REQUESTS=60    # Maximum requests allowed per window (default: 60)
RATE_LIMIT_WINDOW_MINUTES=1   # Window size in minutes

If RATE_LIMIT_ENABLED is set to true, the server will apply rate limiting middleware. Adjust RATE_LIMIT_MAX_REQUESTS and RATE_LIMIT_WINDOW_MINUTES as needed for your environment.

Sentry Error Tracking & Monitoring (Optional)

The server optionally supports Sentry for error tracking, performance monitoring, and debugging. Sentry integration is completely optional and only initialized if configured.

Installation

To enable Sentry monitoring, install the optional dependency:

# Using UV (recommended)
uv sync --extra sentry

Configuration

Enable Sentry by setting the SENTRY_DSN environment variable in your .env file:

# Required: Sentry DSN for your project
SENTRY_DSN=https://your-key@o12345.ingest.us.sentry.io/6789

# Optional: Performance monitoring sample rate (0.0-1.0, default: 1.0)
SENTRY_TRACES_SAMPLE_RATE=1.0

# Optional: Include personally identifiable information (default: false).
# When true, tool inputs and outputs are sent to Sentry.
SENTRY_SEND_DEFAULT_PII=false

# Optional: Environment name (e.g., "production", "staging")
SENTRY_ENVIRONMENT=production

# Optional: Release version (auto-detected from package if not set)
SENTRY_RELEASE=1.2.3

# Optional: Profiling - continuous profiling sample rate (0.0-1.0, default: 1.0)
SENTRY_PROFILE_SESSION_SAMPLE_RATE=1.0

# Optional: Profiling - lifecycle mode for profiling (default: "trace")
# Options: "all", "continuation", "trace"
SENTRY_PROFILE_LIFECYCLE=trace

# Optional: Enable log capture as breadcrumbs and events (default: true)
SENTRY_ENABLE_LOGS=true

Features

When enabled, Sentry automatically captures:

  • Exceptions & Errors: All unhandled exceptions with full context

  • Performance Metrics: Request/response times and traces

  • MCP Integration: Detailed MCP server activity and interactions

  • Logs & Breadcrumbs: Application logs and event trails for debugging

  • Context Data: Environment, client info, and request parameters

Getting a Sentry DSN

  1. Create a free account at sentry.io

  2. Create a new Python project

  3. Copy your DSN from the project settings

  4. Set it in your .env file

Disabling Sentry

Sentry is completely optional. If you don't set SENTRY_DSN, the server will run normally without any Sentry integration, and no monitoring data will be collected.

SSL/TLS Configuration

The server supports SSL certificate verification and custom timeout settings:

ZABBIX_VERIFY_SSL=true    # Enable SSL certificate verification
ZABBIX_TIMEOUT=30         # Connection timeout in seconds

Transport Configuration

The server supports multiple transport mechanisms for the MCP protocol:

STDIO Transport (Default)

The default transport uses standard input/output for communication. This is ideal for local usage and integration with tools that communicate via stdin/stdout:

MCP_TRANSPORT=stdio

HTTP SSE Transport (Server-Sent Events)

For network-based deployments, you can use HTTP with Server-Sent Events. This allows the MCP server to be accessed over HTTP with real-time streaming:

MCP_TRANSPORT=sse
MCP_HTTP_HOST=127.0.0.1        # Localhost
MCP_HTTP_PORT=8000           # Port to listen on
MCP_HTTP_BEARER_TOKEN=your-secret-token  # Optional authentication token

When using SSE transport with a bearer token, clients must include the token in their requests:

curl -H "Authorization: Bearer your-secret-token" http://localhost:8000/sse

HTTP Streamable Transport

The HTTP Streamable transport provides HTTP-based communication with request/response streaming. This is ideal for web integrations and tools that need HTTP endpoints:

MCP_TRANSPORT=http
MCP_HTTP_HOST=127.0.0.1        # Localhost
MCP_HTTP_PORT=8000           # Port to listen on
MCP_HTTP_BEARER_TOKEN=your-secret-token  # Optional authentication token

When using streamable transport with a bearer token:

curl -H "Authorization: Bearer your-secret-token" \
     -H "Accept: application/json, text/event-stream" \
     -H "Content-Type: application/json" \
     -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
     http://localhost:8000/mcp

Note: The HTTP transport requires proper JSON-RPC formatting with jsonrpc and id fields. The server may also require session initialization for some operations.

Health Endpoint

Both HTTP transports (sse and http) serve GET /health, which answers 200 ok when the server is handling requests. It needs no bearer token and does not contact Zabbix, so a Zabbix outage does not mark the MCP server unhealthy. The Docker image's HEALTHCHECK uses it:

curl http://localhost:8000/health

For more information on FastMCP transports, see the FastMCP documentation.

🤝 Contributing

Contributions are welcome. See CONTRIBUTING.md for the dev setup, checks and commit message format, and use the issue templates for bugs and feature requests.

Found a security problem? Please report it privately as described in SECURITY.md.

📜 License

MIT License - see LICENSE for details.

Available Tools

53 tools
action_getAction GetB
Read-onlyIdempotent

Get actions from Zabbix.

Actions define automated responses to problems/triggers. They specify what happens when problems occur - sending notifications, executing remote commands, etc.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'name': 'notify'}.
hostidsNoList of host IDs to get actions for. An empty list matches none.
groupidsNoList of host group IDs to get actions for. An empty list matches none.
actionidsNoList of action IDs to get. Omit to return all actions; an empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.actionid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
count_outputNoIf true, returns only the count of matched objects as an integer.
filter_paramsNoAdditional filter parameters for advanced filtering.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description contributes useful domain semantics about what actions represent, but says nothing about auth requirements, paging behavior, or what the returned objects contain beyond the schema.

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?

Three short sentences with the core operation front-loaded; the second paragraph is domain explanation rather than padding, though it could be trimmed slightly.

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 a full output schema, rich annotations, and 91% schema coverage, the description only needs to frame the resource, which it does. It is adequate for correct invocation, with only usage routing left implicit.

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 description coverage is 91%, so the schema already documents nearly every parameter including limit, offset, search and the id filters. The description adds no parameter guidance, so the baseline 3 applies.

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?

It states a specific verb and resource ('Get actions from Zabbix') and adds a concise definition of what an action is (automated responses to problems/triggers). The resource is unambiguous and no sibling shares it, though there is no explicit differentiation text.

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

Usage Guidelines2/5

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

It explains what actions are but not when to call this tool versus alternatives, nor when to filter by hostids/groupids/actionids versus using search. The agent must infer usage entirely from the schema.

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

api_versionApi VersionA
Read-onlyIdempotent

Get Zabbix API version information.

This tool retrieves the current version of the Zabbix API you are connecting to. This is useful for understanding API capabilities and ensuring compatibility with specific features that may be version-dependent.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already declare this as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds useful behavioral context by explaining that the result reflects the connected Zabbix API version and matters for version-dependent feature compatibility.

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?

The definition is short and front-loaded with the core action. The second sentence partly restates the first by explaining that it retrieves the current API version, but the compatibility rationale still earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with an output schema and annotations covering safety traits, the description supplies the needed operational context. An agent can understand what the tool returns conceptually and why to call it without needing more detail.

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 tool has zero parameters, so there are no parameter semantics to explain, which meets the baseline of 4. The description appropriately does not invent parameter details for a no-argument call.

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 states a specific verb and resource: retrieving the current Zabbix API version. It clearly distinguishes this metadata/version-check tool from the many CRUD sibling tools such as host_get, item_get, and user_get.

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?

It gives clear usage context: understanding API capabilities and checking compatibility with version-dependent features. It does not explicitly state when not to use it or name alternatives, but no sibling tool provides the same version-information function.

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

configuration_exportConfiguration ExportA
Read-onlyIdempotent

Export Zabbix configurations.

Exports monitored hosts, templates, and their complete configurations to JSON, XML, or YAML format. Useful for backup, migration, disaster recovery, or sharing configurations.

When you export templates or hosts, the export includes:

  • All associated items (metrics/data sources)

  • All triggers and their dependencies

  • Discovery rules and prototypes

  • Graphs and visualizations

  • Macros and variable definitions

  • Host groups and interfaces (for hosts)

  • Inventory data (for hosts)

  • And all other configuration elements

NameRequiredDescriptionDefault
hostidsNoList of host IDs to export.
format_typeNoExport format: 'json', 'xml', or 'yaml'.json
prettyprintNoIf true, returns pretty-printed output.
templateidsNoList of template IDs to export.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description earns credit by disclosing the scope of what gets pulled in (items, triggers, discovery rules, graphs, macros, host groups, inventory), which tells the agent the output is large and cascading. It does not state what happens when both hostids and templateids are omitted, which is the main behavioral unknown.

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?

Purpose is front-loaded in the first line, followed by the format/output summary and then a scannable inclusion list. The only filler is the closing 'And all other configuration elements', which is forgivable as a catch-all.

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 a full input schema, an output schema, and read-only annotations, the description covers what an agent needs to invoke it correctly. The one gap is default behavior with zero IDs (export everything vs. error), which matters because no parameters are required.

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; the description adds real meaning on top by explaining that exporting a host or template transitively includes its dependent objects, which reframes what hostids/templateids actually select. It does not explain the interaction of the two ID lists or the validation of format_type values beyond what the schema lists.

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 opens with a specific verb+resource ("Export Zabbix configurations") and immediately narrows to hosts, templates, and their full configuration, which distinguishes it cleanly from the sibling configuration_import and from the many *_get tools that return single-object data. An agent can pick this without opening the schema.

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?

It gives clear use contexts: backup, migration, disaster recovery, and sharing configurations. It does not name exclusions or point at a specific alternative (e.g. 'use configuration_import to restore', or 'use host_get for a single host'), so it stops short of full routing guidance.

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

configuration_importConfiguration ImportB
Destructive

Import configurations into Zabbix.

Imports hosts, templates, and other configurations from JSON, XML or YAML. Useful for migration, cloning, or restoring configurations.

NameRequiredDescriptionDefault
rulesNoPer-object import rules, e.g. {'hosts': {'createMissing': true, 'updateExisting': true}}. Defaults to creating and updating every object type, without deleting anything.
contentYesConfiguration content to import.
format_typeNoImport format: 'json', 'xml' or 'yaml'.json
delete_missingNoIf true, the default rules also delete objects absent from the import. Ignored when 'rules' is given.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

Annotations flag destructiveHint=true and idempotentHint=false, yet the description never mentions that an import can overwrite or delete existing objects, nor that repeated imports are not idempotent. For a destructive bulk-mutation tool this silence is a significant gap – the description adds no behavioural context beyond the annotations themselves.

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?

Two short sentences, front-loaded with the operation and resource, with no filler. The second line about formats is slightly redundant with the schema but does not waste much space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and the schema covers parameters well. However, given a destructive, non-idempotent bulk import across many object types, the description omits any warning about overwrite/delete behaviour or conflict handling that an agent would need before invoking it.

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 description coverage is 100%, so the schema already documents 'content', 'format_type', 'rules' and 'delete_missing' thoroughly, including the interaction between them. The description's mention of JSON/XML/YAML merely restates what the schema says, so the baseline holds.

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?

States a specific verb and resource ('Import configurations into Zabbix') and enumerates the object types and accepted formats, which is more than the title alone provides. It does not differentiate itself from the obvious sibling configuration_export, but the import/export split is self-evident.

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?

Gives usage contexts ('migration, cloning, or restoring') but no when-not guidance, no pointer to configuration_export or to per-object tools, and no prerequisites. Usage is implied rather than directed.

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

discoveryrule_getDiscoveryrule GetB
Read-onlyIdempotent

Get discovery rules from Zabbix.

Discovery rules automatically detect items, triggers, and interfaces from network resources. They enable dynamic host and item management without manual configuration.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'name': 'SNMP'}.
hostidsNoList of host IDs to get discovery rules from. An empty list matches none.
itemidsNoList of item IDs (discovery rules are items) to get. An empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.itemid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
templateidsNoList of template IDs to get discovery rules from. An empty list matches none.
count_outputNoIf true, returns only the count of matched objects as an integer.
filter_paramsNoAdditional filter parameters for advanced filtering.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful domain context about what discovery rules do, but it does not add behavioral details beyond annotations, such as paging, filtering, or response behavior; the output schema covers return values.

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?

The description is short and front-loads the core action in the first sentence. The second sentence provides domain background rather than invocation guidance, so it is not maximally efficient, but it is not excessive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description, rich schema, annotations, and output schema together make the tool callable. Still, for an 11-parameter list/get tool with a closely related sibling, the missing usage guidance and sibling differentiation leave a meaningful contextual gap.

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 description coverage is 91%, so the schema already documents nearly all 11 parameters. The description adds no parameter-specific semantics, but with such high coverage the baseline of 3 is appropriate.

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?

The description uses a clear verb+resource phrase, 'Get discovery rules from Zabbix,' and explains what discovery rules are. However, it does not distinguish this tool from the similarly named sibling 'drule_get' or clarify when this should be used instead.

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

Usage Guidelines2/5

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

The description says what the tool retrieves but provides no explicit when-to-use guidance, no exclusions, and no alternatives. With siblings such as 'drule_get' and 'item_get', an agent is left to infer the correct choice from the name alone.

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

drule_getDrule GetB
Read-onlyIdempotent

Get network discovery rules from Zabbix.

Network discovery (drule) rules perform network scanning to discover hosts and services. They can scan for active devices, open ports, and available services in CIDR ranges.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'name': 'LAN'}.
druleidsNoList of network discovery rule IDs to get. Omit to return all rules; an empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.druleid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
count_outputNoIf true, returns only the count of matched objects as an integer.
filter_paramsNoAdditional filter parameters for advanced filtering.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

The annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds useful domain context about what network discovery rules do, but it does not disclose behavioral details such as pagination behavior, permissions, or response characteristics beyond what the schema provides.

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?

The description is short and front-loads the core action. The second sentence about network scanning is useful domain context, though not strictly required for selecting or invoking the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that annotations cover safety and an output schema exists, the description is adequate for understanding the resource. However, it lacks guidance on alternatives such as 'discoveryrule_get' and does not explain when filtering or paging should be used, leaving some context gaps.

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 description coverage is high at 89%, so the schema already documents most parameters well. The description adds no parameter-specific meaning or syntax, which is acceptable given the strong schema coverage but does not raise it above the baseline.

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?

The description states a specific verb and resource: 'Get network discovery rules from Zabbix,' and clarifies that 'drule' means network discovery rules. It explains the domain well, but it does not distinguish this tool from the sibling 'discoveryrule_get,' which appears closely related.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives, nor does it mention prerequisites, filtering use cases, or any when-not-to-use conditions. It only implies usage by saying it retrieves network discovery rules.

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

event_acknowledgeEvent AcknowledgeA
DestructiveIdempotent

Acknowledge events in Zabbix.

Mark events (problems/alerts) as acknowledged to show that operations staff are aware of and working on the issue. Acknowledged events can also be closed if resolved.

NameRequiredDescriptionDefault
actionNoBitmask: 1=close problem, 2=acknowledge, 4=add message, 8=change severity, 16=unacknowledge, 32=suppress, 64=unsuppress.
messageNoMessage to add to the event. The 'add message' flag (4) is added to 'action' automatically when this is set - Zabbix otherwise accepts the call and stores an empty message, losing the text silently.
eventidsYesEvent IDs to acknowledge.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=true, so the safety profile is carried structurally. The description adds real context about what acknowledgement means operationally and hints that closing is possible, but it never warns that the action bitmask can close problems or change severity — the destructive edges of this tool go unmentioned.

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?

Three short sentences, front-loaded with the action and followed by the operational rationale. No filler, though the last sentence about closing drifts slightly from the tool's core purpose.

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?

An output schema exists so return values need no explanation, and the three parameters are fully documented in schema. What remains thin is bulk semantics — whether multiple eventids are all-or-nothing — but overall an agent has enough to invoke it correctly.

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 the schema itself documents the action bitmask and the auto-adding of flag 4 for messages in detail. The description adds nothing about eventids (single vs. bulk), partial failures, or the action parameter, so the baseline 3 is appropriate.

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?

The description opens with a specific verb+resource ('Acknowledge events in Zabbix') and clarifies that the targets are problems/alerts, which separates it from the read-side sibling event_get. It does not explicitly name the sibling, so it stops short of a 5.

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?

It gives the operational intent (show staff are aware and working the issue) and notes that events can also be closed if resolved, which implies when to reach for it. There is no explicit guidance on when not to use it, no mention of the alternate siblings (event_get, problem_get), and no stated prerequisites.

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

event_getEvent GetA
Read-onlyIdempotent

Get events from Zabbix.

Events represent state changes in the system - when triggers transition from normal to problem and back, or recovery events. Each event has a timestamp, trigger, and can be acknowledged to show operators have seen the alert.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
hostidsNoList of host IDs to get events from. An empty list matches none.
eventidsNoList of event IDs to get. Omit to return all events; an empty list matches none.
groupidsNoList of host group IDs to get events from. An empty list matches none.
objectidsNoList of trigger IDs to get events from. An empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.eventid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
time_fromNoUnix timestamp to filter events from this time onwards.
time_tillNoUnix timestamp to filter events up to this time.
suppressedNoIf false, return only unsuppressed events. If true, return only suppressed events.
select_tagsNoIf true, include the tags for each event in the response (selectTags=extend).
acknowledgedNoIf false, return only unacknowledged events. If true, return only acknowledged events.
count_outputNoIf true, returns only the count of matched objects as an integer.
select_hostsNoIf true, include the hosts each event belongs to in the response (selectHosts=extend).
select_related_objectNoIf true, include the related object (e.g., trigger) in the response (selectRelatedObject=extend).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered structurally. The description adds useful semantic context (event lifecycle, ack meaning) but says nothing about result volume, default limit of 100, or that paging requires a deterministic sort — the one behavior an agent most needs to know before calling.

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?

Three short sentences, front-loaded with the action, and no redundant restatement of the tool name. The trailing explanatory sentences are slightly verbose but earn their place by defining what an event is.

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 17 optional parameters and rich per-parameter documentation plus an output schema, the description only needs to frame the resource, which it does. Minor gaps remain around how filters combine and default truncation at 100 results, but nothing essential for correct invocation is missing.

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 description coverage is 94%, so nearly every parameter is already documented, including default limit, offset paging via has_more/total, and empty-list-matches-none semantics. The description adds no parameter meaning beyond that, which is the expected baseline when the schema does the work.

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?

The definition opens with a clear specific verb+resource ("Get events from Zabbix") and explains the domain: state-change events from trigger transitions plus recovery events. It implicitly separates itself from problem_get (current state) and event_acknowledge (mutating acknowledgement), though it never names those siblings explicitly.

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 is only implied through domain explanation; the description never states when to use this versus problem_get or event_acknowledge, nor any prerequisites or filter-combination rules. The mention that events "can be acknowledged" hints at a related tool without routing the agent to it.

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

graph_getGraph GetC
Read-onlyIdempotent

Get graphs from Zabbix.

Graphs visualize item data over time, displaying metric values in line/bar/pie charts. Graphs can be included in dashboards, reports, and custom views for data analysis.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'name': 'CPU'}.
hostidsNoList of host IDs to get graphs from. An empty list matches none.
graphidsNoList of graph IDs to get. Omit to return all graphs; an empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.graphid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
templateidsNoList of template IDs to get graphs from. An empty list matches none.
count_outputNoIf true, returns only the count of matched objects as an integer.
select_hostsNoIf true, include the hosts that the graphs belong to (selectHosts=extend).
select_itemsNoIf true, include the items contained in each graph (selectGraphItems=extend).
filter_paramsNoAdditional filter parameters for advanced filtering.
select_templatesNoIf true, include the templates that the graphs belong to (selectTemplates=extend).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds no behavioral context beyond that — no mention of pagination semantics, large-result behavior, or how filtering and select_* flags affect cost/size. The remaining sentences are domain trivia about what graphs are used for, not behavior.

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

Conciseness3/5

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

The first sentence is front-loaded and earns its place. The second paragraph (charts, dashboards, reports, custom views) is generic product blurb that adds no actionable information for an agent and inflates the definition without improving call accuracy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema is rich and an output schema exists, so return values need not be explained. For a 14-parameter read tool with no required args, the description is adequate but thin: it says nothing about paging discipline, how to combine graphids/hostids/templateids, or what count_output returns in context, which are the places an agent is most likely to mis-call.

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 description coverage is 93%, so the 14 parameters (including limit/offset paging, search, ids lists, and select_* flags) are already well documented in structured data. The description contributes no additional parameter meaning, so the baseline 3 applies.

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?

The description opens with a specific verb and resource ("Get graphs from Zabbix"), which unambiguously separates this tool from the other resource-scoped siblings in the list (host_get, item_get, trigger_get). However, it does not sharpen that distinction by explaining what a 'graph' object is relative to its underlying items, leaving only the resource name to differentiate.

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

Usage Guidelines2/5

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

There is no statement of when to call this tool versus alternatives such as item_get or history_get/trend_get, which return the data that graphs render. The second paragraph describes what graphs are in general terms but gives no selection guidance, exclusions, or prerequisites.

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

history_getHistory GetA
Read-onlyIdempotent

Get history data from Zabbix.

Retrieves the raw metric values collected by items. History contains all individual collected data points with timestamps, allowing detailed analysis of system behavior over time.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
historyNoStorage type to read: 0=float, 1=char, 2=log, 3=unsigned, 4=text. Must match the items' value_type or Zabbix returns nothing. Detected from the items when omitted.
itemidsYesItem IDs to get history for.
sortfieldNoField to sort by (default 'clock' = timestamp).clock
sortorderNoSort direction - 'ASC' (oldest first) or 'DESC' (newest first). Default is DESC.DESC
time_fromNoUnix timestamp to get history from this time onwards.
time_tillNoUnix timestamp to get history up to this time.
count_outputNoIf true, returns only the count of matched objects as an integer.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that results are raw individual collected data points with timestamps, but does not discuss volume, performance, or pagination behavior beyond what the schema already documents.

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?

The description is short and front-loaded with the core action. The second sentence is helpful but slightly overlaps with the first by restating that history contains individual data points.

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, full schema description coverage, and annotations covering safety, the description is complete enough for an agent to understand that this tool returns raw historical metric values. Minor missing context includes explicit guidance versus trend_get, but the structured fields carry the detailed contract.

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 description coverage is 100%, so all eight parameters are documented in the schema, including history type matching, time filters, sorting, limit, and count_output. The description adds no parameter-specific meaning beyond the schema, so baseline 3 is appropriate.

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?

States a specific verb and resource: retrieves raw metric values collected by items from Zabbix, with timestamps. It implicitly distinguishes history from aggregate trend data by emphasizing individual raw data points, but does not explicitly name alternatives like trend_get.

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?

Provides implied usage for detailed system behavior analysis over time, but does not state when to use this instead of sibling tools such as trend_get or item_get, nor does it give exclusions or prerequisites.

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

host_createHost CreateA

Create a new host in Zabbix.

Adds a new monitored host to Zabbix. This is essential for starting to monitor a new server or device. You must specify at least a host name and groups. You can optionally configure interfaces (for agent/SNMP communication) and link templates.

NameRequiredDescriptionDefault
hostNoTechnical name of the host.
nameNoVisible name.
groupsNoHost groups (e.g., [{'groupid': '1'}]).
paramsNoRaw host.create params, for fields the arguments below do not cover. Describes a single host, not a batch. If provided, individual parameters are ignored.
statusNo0=enabled, 1=disabled.
templatesNoTemplates to link.
interfacesNoHost interfaces.
descriptionNoDescription.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare non-readOnly, non-idempotent, non-destructive, so the safety profile is covered by structured data. The description adds the practical requirement that a host name and groups are mandatory and that interfaces/templates are optional, which is useful context beyond annotations, but says nothing about duplicate-name behavior, permissions, or side effects of attaching templates.

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?

Short and front-loaded, opening with the action and then requirements. The second sentence ('Adds a new monitored host to Zabbix') largely restates the first, a minor redundancy, but the remainder each contributes a distinct constraint or capability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the description covers the effective required fields plus the optional interfaces and template linkage that define a create call. Combined with full schema coverage and annotations, an agent has enough to invoke it correctly.

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%, so the schema already documents all eight parameters, making 3 the baseline. The description's note that host name and groups are effectively required (despite zero formally required fields) is a genuinely useful addition, but interfaces, templates, status, and the raw 'params' passthrough are not explained further.

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?

States a specific verb and resource ('Create a new host in Zabbix') and clarifies it adds a monitored host, so an agent knows what object is produced. It never names or contrasts with siblings like host_update or host_get, so differentiation relies on the agent inferring from names.

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?

The phrase 'essential for starting to monitor a new server or device' implies the situation in which to use it, but there is no explicit when-not-to-use or reference to the update/get/delete siblings. Adequate but leaves the agent to infer the boundary between create and update.

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

host_deleteHost DeleteA
Destructive

Delete hosts from Zabbix.

Permanently removes one or more hosts from Zabbix. This will delete all associated data including history and alerts. Use with caution as this is a destructive operation.

NameRequiredDescriptionDefault
hostidsYesList of host IDs to delete.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

The annotations already declare destructiveHint=true, but the description adds important scope: deletion is permanent and removes all associated data including history and alerts. This is exactly the kind of behavioral consequence an agent needs beyond the annotation flags.

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 short, front-loaded, and structured around the core action, its permanence, and the destructive warning. Every sentence contributes useful information without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single fully documented parameter, existing annotations, and an output schema, the description provides everything needed for correct invocation. It covers the action, scope of deletion, and the critical destructive consequence.

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?

The schema has 100% description coverage and clearly documents hostids as the list of host IDs to delete. The description adds only that one or more hosts are removed, which aligns with the schema but does not expand on parameter semantics beyond it.

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 uses a specific verb and resource: "Delete hosts from Zabbix" and "Permanently removes one or more hosts." It clearly distinguishes this tool from sibling operations like host_create, host_update, and host_get by stating the destructive host-removal purpose.

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?

It clearly establishes the destructive context and warns "Use with caution," which helps an agent decide when this tool is appropriate. However, it does not explicitly name alternatives or conditions where deletion should not be used, such as preferring host_update for changes.

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

host_getHost GetA
Read-onlyIdempotent

Get hosts from Zabbix with optional filtering.

Retrieves a list of monitored hosts from Zabbix. You can filter by host IDs, groups, templates, proxies, or use search criteria. This is useful for discovering which hosts are available in your monitoring system.

NameRequiredDescriptionDefault
limitNoPage size - maximum number of results to return. Default is 100.
offsetNoNumber of matching hosts to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoOutput format: 'extend' or specific fields.extend
searchNoSearch criteria (e.g., {'host': 'web'} to perform a 'LIKE' search).
statusNoShortcut to filter by status (0=enabled, 1=disabled) (constructs filter={'status': status}).
hostidsNoList of host IDs to retrieve. An empty list matches none.
groupidsNoList of host group IDs to filter by. An empty list matches none.
proxyidsNoList of proxy IDs to filter by. An empty list matches none.
sortfieldNoField to sort by - 'hostid', 'host', 'name' or 'status'. A deterministic sort is required for paging to be consistent.hostid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
select_tagsNoIf true, include the tags for each host in the response (selectTags=extend).
templateidsNoList of template IDs to filter by. An empty list matches none.
count_outputNoIf true, returns only the count of matched objects as an integer.
filter_paramsNoFilter criteria (e.g., {'status': 0}).
select_groupsNoIf true, include the host groups each host belongs to in the response (selectHostGroups=extend).
select_templatesNoIf true, include the templates linked to each host in the response (selectTemplates=extend).
hostname_containsNoShortcut to search for hosts by name (constructs search={'host': hostname_contains}).
select_interfacesNoIf true, include the interfaces for each host in the response (selectInterfaces=extend).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds that filtering is optional and that it returns a list, but says nothing about default paging behavior (limit=100), the has_more/total response fields it enables, or that count_output switches to a scalar return — all left to the schema.

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?

Three short sentences, front-loaded with the verb and resource. Minor waste: the first and second sentences largely restate each other ('Get hosts from Zabbix' / 'Retrieves a list of monitored hosts from Zabbix').

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 18 fully documented parameters, an output schema, and complete annotations, the description only needs to frame the tool's role — which it does. It omits any mention of paging strategy or response-expansion flags, but those are well covered elsewhere, so the gap is small.

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 description coverage is 100%, so baseline is 3. The description restates the filter dimensions (host IDs, groups, templates, proxies, search) that already appear as schema properties but adds no semantics of its own — e.g., that an empty ID list matches nothing, or that a deterministic sortfield is required for stable paging.

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?

States a specific verb ('Get') and resource ('hosts from Zabbix') and names the filterable dimensions. It is clear what the tool returns (a list of monitored hosts), but it never distinguishes itself from siblings like hostgroup_get or template_get beyond the resource noun.

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?

'This is useful for discovering which hosts are available in your monitoring system' is an implied usage context rather than explicit guidance. No when-not-to-use cases and no named alternative (e.g., that mutations belong to host_create/host_update) are given, though the read-only nature of the operation makes the choice fairly obvious.

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

hostgroup_createHostgroup CreateB

Create a new host group in Zabbix.

Host groups serve as containers for organizing hosts. They're essential for applying permissions, templates, and maintenance windows to multiple hosts at once.

NameRequiredDescriptionDefault
nameYesName of the host group.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the agent knows this is a non-destructive, non-idempotent write. The description adds useful domain context about why host groups matter (permissions, templates, maintenance windows) but does not say what happens if the name already exists, which is the most likely failure mode for a non-idempotent create.

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?

The core action is front-loaded in the first sentence, and the follow-up paragraph is brief and informative rather than repetitive. It could be tightened, but nothing is wasted verbatim on restating the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. However, for a non-idempotent create the description should mention duplicate-name behavior or scope (per-host vs global), which it omits; the tool is simple, but that remaining gap is a real one an agent would hit.

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?

There is a single parameter with 100% schema description coverage, which sets the baseline at 3. The description adds no meaning beyond the schema — nothing about name uniqueness, allowed characters, or length — so it neither compensates nor subtracts.

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?

The first sentence names a specific verb and resource: "Create a new host group in Zabbix." That is unambiguous and the create/get/update/delete siblings make the intent obvious. It stops short of explicitly contrasting itself with hostgroup_update or hostgroup_get, so it is clear but not sibling-differentiating.

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

Usage Guidelines2/5

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

The description never says when to use this versus hostgroup_update or host_create, and gives no prerequisites such as required auth or whether the host group must already exist somewhere. The second paragraph explains what host groups are for conceptually, which is background rather than invocation guidance.

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

hostgroup_deleteHostgroup DeleteA
Destructive

Delete host groups from Zabbix.

Permanently removes one or more host groups. Hosts in deleted groups will no longer be members of that group (though the hosts themselves remain unless explicitly deleted).

NameRequiredDescriptionDefault
groupidsYesGroup IDs to delete.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the description earns credit for going further: it states deletion is permanent and explains the cascade — group membership is severed while host entities persist unless separately deleted. It stops short of covering downstream objects tied to the group (items, triggers) or permission requirements.

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?

Three short sentences, front-loaded with the action, and the cascade note is placed where it matters. The first two sentences overlap slightly ('Delete host groups' / 'Permanently removes one or more host groups'), a minor redundancy.

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 an output schema present and 100% schema coverage, the description needn't detail return values, and it covers the destructive semantics well. The remaining gap is the fate of items, triggers, and templates associated with the deleted group, which an agent doing impact assessment would want.

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 the single groupids parameter is documented in-schema as 'Group IDs to delete.' The description's 'one or more host groups' only mildly reinforces that the parameter accepts a list, so baseline 3 applies.

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?

The description leads with a specific verb and resource ('Delete host groups from Zabbix') and restates the scope as one or more groups. It's unambiguous what the tool does, but it doesn't differentiate itself from siblings like hostgroup_update or hostgroup_create beyond the verb.

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 is implied by the delete verb but there is no explicit when-to-use / when-not-to-use guidance, no mention of prerequisites like permissions, and no pointer to hostgroup_update as the non-destructive alternative. The note that hosts survive deletion gives partial context, but routing guidance is absent.

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

hostgroup_getHostgroup GetB
Read-onlyIdempotent

Get host groups from Zabbix.

Retrieves host groups with optional filtering. Host groups are used to organize and manage hosts collectively, applying templates, permissions, and maintenance windows to multiple hosts at once.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoOutput format.extend
searchNoSearch.
hostidsNoHost IDs. An empty list matches none.
groupidsNoGroup IDs. An empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.groupid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
count_outputNoIf true, returns only the count of matched objects as an integer.
select_hostsNoIf true, include the hosts in each group in the response (selectHosts=extend).
group_name_containsNoShortcut to search for groups by name (constructs search={'name': group_name_contains}).

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds domain context about what host groups represent, but says nothing about result size, paging behavior, or permission scoping beyond the schema.

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?

Two short paragraphs with the action front-loaded in the first sentence. The second paragraph is explanatory domain filler that aids understanding but does not directly help invocation, keeping it just short of a 5.

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 an output schema, full parameter documentation, and read-only annotations, the description does not need to restate return values or paging mechanics. What remains thin is guidance on when to reach for this tool, which is covered under usage rather than completeness.

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 description coverage is 100% and each parameter (limit, offset, search, group_name_contains, select_hosts, count_output) is documented inline with defaults and semantics. The description only generically mentions 'optional filtering' and adds nothing beyond the schema, so baseline 3 applies.

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?

States a specific verb and resource ('Get host groups from Zabbix') and clarifies the object being retrieved, which distinguishes it from host_get or trigger_get by resource. It does not explicitly contrast with siblings like hostgroup_create/update/delete, so it stops short of a 5.

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

Usage Guidelines2/5

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

Says retrieval supports 'optional filtering' but gives no guidance on when to use this versus host_get, trigger_get, or the hostgroup mutation siblings, and no prerequisites or exclusions. An agent must infer usage from parameter names alone.

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

hostgroup_updateHostgroup UpdateA

Update an existing host group in Zabbix.

Modifies properties of an existing host group. You can change the group's name. Only specify the fields you want to change.

NameRequiredDescriptionDefault
nameNoNew group name.
groupidYesID of the group to update.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the safety profile is covered. The description usefully narrows the mutation scope to renaming only, but it does not address behavior the annotations flag, such as non-idempotency or what happens when the groupid does not exist.

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

Conciseness3/5

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

The first two sentences restate the same fact ('Update an existing host group' / 'Modifies properties of an existing host group'), which is wasted space. The genuinely useful line about specifying only changed fields is buried last rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and the annotations cover the safety profile. For a mutation tool, however, the description says nothing about error conditions or whether group names must be unique — a gap an agent would likely hit.

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 semantic meaning by stating that fields are optional and only changed fields should be sent — critical since groupid is the sole required parameter. It does not add format or constraint detail beyond that.

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?

States a specific verb and resource ('Update an existing host group in Zabbix') and clarifies via the schema that only the group name is mutable. The sibling set (hostgroup_create/delete/get) makes the distinction by name straightforward, though the description itself does not call out those siblings.

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?

'Only specify the fields you want to change' gives concrete guidance on how to invoke it as a partial update, which is the main decision an agent faces here. It stops short of explicit when-to-use/when-not or naming alternatives like hostgroup_create.

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

host_updateHost UpdateA
DestructiveIdempotent

Update an existing host in Zabbix.

Modifies properties of an existing host. You can change the technical name, visible name, status (enable/disable monitoring), description, linked templates, or the proxy that monitors it. Only specify the fields you want to change.

NameRequiredDescriptionDefault
hostNoNew technical name.
nameNoNew visible name.
hostidYesID of the host to update.
statusNo0=enabled, 1=disabled.
proxyidNoProxy to monitor the host through. '0' moves monitoring back to the Zabbix server; blank leaves it unchanged.
templatesNoReplaces ALL linked templates (e.g., [{'templateid': '10001'}]). Templates left out are unlinked; their items and triggers stay on the host.
descriptionNoNew description.
templates_clearNoTemplates to unlink AND clear - their items, triggers and collected data are deleted from the host.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=true, and the description adds partial-update semantics beyond that. It does not itself disclose that template changes unlink templates or delete collected data (that lives only in the schema), nor does it mention permission requirements or the effect of omitted fields beyond the generic instruction.

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?

Three short sentences with the core action front-loaded and the partial-update rule placed last where it is most actionable. The middle sentence slightly overlaps the first in listing properties, but there is no real padding.

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 an output schema present and full schema coverage, the description only needs to frame the operation, which it does adequately. The remaining gap is behavioral rather than structural: side effects of template replacement and required auth level are left to the schema and annotations.

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 description coverage is 100%, so every parameter is already documented, including the destructive semantics of templates and templates_clear. The description restates the set of editable fields but adds no syntax, format, or edge-case detail beyond what the schema provides, so baseline 3 applies.

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?

States a specific verb and resource ("Update an existing host in Zabbix") and enumerates the mutable properties, which makes clear it is the mutation counterpart to host_create/host_delete. It never explicitly differentiates itself from those siblings in text, relying on the reader to infer from the name.

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?

"Only specify the fields you want to change" is genuinely useful partial-update guidance. However, there is no explicit statement of when to use this versus host_create, host_delete, or template_update, and no prerequisites (e.g., permissions, host must exist) are mentioned.

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

item_createItem CreateB

Create a new item in Zabbix.

Items define what data is collected from a host. Each item specifies the metric name, how to collect it (agent, SNMP, etc.), what interval to use, and what data type to store.

NameRequiredDescriptionDefault
key_YesItem key.
nameYesItem name.
delayNoUpdate interval. Must be '0' for trapper (2) and dependent (18) items.1m
type_YesItem type (0=Zabbix agent, 2=trapper, etc.).
unitsNoOptional units for the values like 'bytes', 'CPU%', 'rpm'.
hostidYesHost ID.
value_typeYesValue type (0=float, 1=char, 2=log, 3=unsigned, 4=text).
descriptionNoOptional item description explaining its purpose.
interfaceidNoHost interface to poll through. Required for Zabbix agent (0), SNMP agent (20), SNMP trap (17), IPMI (12) and JMX (16) items on a host.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds domain context about what an item represents (metric, collection method, interval, data type) but does not disclose creation side effects, uniqueness constraints, required permissions, or failure behavior. With annotations covering the safety profile, this is adequate but incomplete.

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?

The description is three sentences and front-loads the action. The item-model explanation is useful and compact, though the latter sentences are more conceptual than invocation-critical.

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?

The tool has 9 parameters, 5 required, with full schema descriptions, annotations, and an output schema, so return values and most parameter detail are covered elsewhere. The description supplies purpose and item-model context, but omits operational prerequisites and sibling-routing guidance, leaving it complete enough but not rich.

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 the schema documents types, defaults, and conditional requirements such as delay=0 for trapper/dependent items and interfaceid being required for certain item types. The description only echoes the high-level fields and adds no syntax or conditional guidance beyond the schema.

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?

The description opens with a specific verb and resource ("Create a new item in Zabbix") and explains what an item is. It does not explicitly differentiate from siblings such as item_update or item_get, so it is clear but lacks sibling-routing language.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and it never mentions item_update for modifying existing items or prerequisites for creation. Usage is only implied by the verb "Create".

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

item_deleteItem DeleteA
Destructive

Delete items from Zabbix.

Permanently removes one or more items from monitoring. The item's historical data is typically removed as part of cleanup, though this depends on Zabbix configuration.

NameRequiredDescriptionDefault
itemidsYesItem IDs to delete.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered. The description still adds genuine value beyond them by disclosing that deletion is permanent and that historical data removal depends on Zabbix configuration.

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?

The core action is front-loaded in the first line, with two short supporting sentences. The hedged clause about configuration slightly dilutes the second sentence but still earns its place by warning about irreversible data loss.

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?

An output schema exists, so return values need not be explained, and the single parameter is fully documented in the schema. Destruction consequences are covered; only permission requirements and effects on dependent triggers/entities are absent, which is a minor gap.

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?

Only one parameter exists with 100% schema description coverage, so the schema already documents itemids. The description reinforces that multiple IDs are accepted but adds no format or retrieval details beyond that, making baseline 3 appropriate.

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+resource (delete items from Zabbix) and clarifies scope as 'one or more items', which matches the itemids array. It is trivially distinguishable from item_create/item_update/item_get siblings, and there is no competing item-deletion tool to confuse it with.

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 is implied by the destructive framing ('Permanently removes'), which signals caution, but there is no explicit guidance on when to delete versus alternatives such as disabling or updating an item, and no stated prerequisites or required permissions.

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

item_getItem GetB
Read-onlyIdempotent

Get items (metrics) from Zabbix.

Items are the data sources in Zabbix - they define what metrics are collected and how (protocol, interval, etc.). Each item produces a stream of values over time.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'name': 'CPU'} for substring matching.
hostidsNoList of host IDs to get items from. Filters items by host. An empty list matches none.
itemidsNoList of item IDs to get. Omit to return all items; an empty list matches none.
groupidsNoList of group IDs to get items from hosts in those groups. An empty list matches none.
webitemsNoIf true, also return web scenario items (webitems=true), which Zabbix leaves out by default.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.itemid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
select_tagsNoIf true, include the tags for each item in the response (selectTags=extend).
templateidsNoList of template IDs to get items from those templates. An empty list matches none.
count_outputNoIf true, returns only the count of matched objects as an integer.
select_hostsNoIf true, include the hosts each item belongs to in the response (selectHosts=extend).
filter_paramsNoAdditional filter parameters for advanced filtering.
select_triggersNoIf true, include the triggers for each item in the response (selectTriggers=extend).
item_key_containsNoShortcut to search for items by key (constructs search={'key_': item_key_contains}).
item_name_containsNoShortcut to search for items by name (constructs search={'name': item_name_contains}).

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds domain context that items define collected metrics and produce value streams, but it does not add operational behavior such as pagination, permissions, or response effects. With annotations carrying the safety signal, this is adequate but not rich.

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?

The definition is front-loaded with the purpose in the first sentence and then uses two short sentences to define items. It is appropriately sized and has little waste. The extra definitional context is useful but not strictly essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 18 parameters, but 94% schema coverage and an output schema mean the description does not need to explain parameters or return values. Annotations cover the read-only/idempotent safety profile. The missing piece is explicit guidance on when to use this tool versus related read tools such as history_get or trend_get.

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 description coverage is 94%, so the 18 parameters are already well documented in the schema. The description adds no parameter-specific meaning beyond the schema. A baseline 3 is appropriate when the schema does nearly all parameter explanation.

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?

The first sentence states a specific read verb and resource: 'Get items (metrics) from Zabbix.' The follow-up explains what items are, which helps distinguish this data-source resource from adjacent tools. However, it does not explicitly contrast with siblings such as itemprototype_get or item_update/create/delete.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use guidance or alternatives. It never says when to choose item_get over history_get, trend_get, or itemprototype_get, nor when not to use it. Usage is only implied by the verb 'Get'.

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

itemprototype_getItemprototype GetB
Read-onlyIdempotent

Get item prototypes from Zabbix.

Item prototypes are template items created by discovery rules that generate actual items dynamically based on discovered entities.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'name': 'CPU'}.
hostidsNoList of host IDs to get item prototypes from. An empty list matches none.
itemidsNoList of item prototype IDs to get. An empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.itemid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
count_outputNoIf true, returns only the count of matched objects as an integer.
discoveryidsNoList of discovery rule IDs to get prototypes from. An empty list matches none.
filter_paramsNoAdditional filter parameters for advanced filtering.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds useful domain context (what a prototype is and how it is produced) but says nothing about pagination behavior, the count_output mode, or result size limits that the schema hints at.

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?

Two short sentences, front-loaded with the action, and no filler. The second sentence earns its place by disambiguating the domain term, though it is arguably the only thing beyond the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering safety, the description need not explain return values. But for an 11-parameter, filter-heavy list tool it omits any mention of filtering capabilities, deterministic sorting for paging, or the count-only mode, leaving a gap the schema only partially fills.

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 description coverage is 91%, so nearly all 11 parameters are documented inline (limit/offset paging, hostids, itemids, discoveryids, count_output, sortfield). The description adds no parameter-level meaning beyond the schema, which is the correct baseline behavior here.

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?

States a specific verb and resource ("Get item prototypes from Zabbix") and even explains the domain concept (template items generated by discovery rules). However, it never distinguishes itself from close siblings like item_get or discoveryrule_get, so the agent must infer the boundary.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to call this versus item_get, discoveryrule_get, or template_get. The only hint is the conceptual note that prototypes come from discovery rules, which implies usage but never states a selection condition or exclusion.

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

item_updateItem UpdateA

Update an existing item in Zabbix.

Modifies properties of an existing monitoring item. You can change the name, collection interval, units, or status. Only specify the fields you want to change.

NameRequiredDescriptionDefault
nameNoNew item name.
delayNoNew collection interval (e.g., '30s', '5m', '1h').
unitsNoNew units for the values.
itemidYesID of the item to update.
statusNo0=enabled, 1=disabled.
descriptionNoNew description.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is covered. The description adds that only supplied fields are changed, but is silent on permissions, what happens to omitted/null fields, and failure behavior for non-existent items. No contradiction with annotations.

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 action, then scope, then the key partial-update rule. Slightly redundant: 'Modifies properties of an existing monitoring item' restates the opening sentence without adding information.

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?

A 6-parameter mutation tool with full schema coverage, an output schema, and annotations covering the safety profile. The description is adequate; the only minor gap is that omitted-field behavior and permissions are left implicit.

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 description coverage is 100%, so each of the 6 parameters is already documented. The description echoes four of them (name, interval, units, status) without adding format or constraint detail beyond the schema (e.g., delay syntax '30s'/'5m' comes from the schema, not the description). Baseline 3 applies.

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?

States a specific verb and resource ('Update an existing item in Zabbix') and clarifies it modifies properties of an existing monitoring item rather than creating one. The verb alone distinguishes it from item_create/item_delete/item_get siblings, but no sibling is named explicitly.

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?

'Only specify the fields you want to change' gives useful partial-update guidance and implies the item must already exist. However, it never states prerequisites (permissions, item lifecycle state) or when to prefer item_create versus this tool.

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

maintenance_createMaintenance CreateA

Create a new maintenance period in Zabbix.

Schedules a maintenance window when monitoring alerts are suppressed. Useful for planned upgrades, patching, or system maintenance without triggering false alarms.

NameRequiredDescriptionDefault
nameYesMaintenance name.
hostidsNoList of specific host IDs to apply maintenance to.
groupidsNoList of host group IDs to apply maintenance to. At least one of groupids or hostids is required.
active_tillYesEnd time (Unix timestamp).
descriptionNoOptional description explaining the maintenance purpose.
timeperiodsNoWhen maintenance actually runs, e.g. [{'timeperiod_type': 0, 'start_date': 1735689600, 'period': 3600}]. Required by Zabbix; if omitted, a single one-off period covering active_since to active_till is sent.
active_sinceYesStart time (Unix timestamp).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the mutating-but-non-destructive profile is covered structurally. The description's genuine addition is the effect semantics: alerts are suppressed during the window, which motivates creation. It does not mention overlap with existing maintenance, permission requirements, or that non-idempotent calls create duplicates, so a 3 is appropriate.

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?

Three short sentences, front-loaded with the action, then the semantic explanation, then use cases. No filler or restatement of the title.

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 an output schema, full parameter documentation, and annotations present, the description only needs to supply purpose and context, which it does. Minor gaps remain around target scoping (hosts vs. groups) and scheduling edge cases, but nothing blocks a correct call.

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 description coverage is 100%, including the subtle constraint that at least one of groupids/hostids is required and the timeperiods fallback behavior, so the schema does the heavy lifting and a 3 baseline applies. The description adds no parameter-level meaning of its own — no mention of target scoping or timestamp units.

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 ('Create a new maintenance period in Zabbix') and immediately explains what that object means ('Schedules a maintenance window when monitoring alerts are suppressed'). The verb distinguishes it cleanly from maintenance_get, maintenance_update, and maintenance_delete in the sibling list.

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 when-to-use context — 'planned upgrades, patching, or system maintenance without triggering false alarms' — which tells the agent the operational scenario. It stops short of exclusions or naming alternatives (e.g. use maintenance_update to extend an existing window instead of creating a duplicate), so it is clear but not fully directive.

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

maintenance_deleteMaintenance DeleteA
Destructive

Delete maintenance periods from Zabbix.

Cancels maintenance windows immediately, resuming alert generation. If the maintenance period has already passed, historical event suppression is retained.

NameRequiredDescriptionDefault
maintenanceidsYesMaintenance IDs to delete.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already set destructiveHint=true and idempotentHint=false, so the bar is lower. The description still adds genuine behavioral context beyond those flags: alert generation resumes immediately on cancel, and already-passed periods keep their historical suppression, which affects how an agent should reason about the consequences of deletion.

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?

Three short sentences with the purpose front-loaded followed by two clauses that each carry distinct behavioral information: immediate alert resumption and retained historical suppression.

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 single-parameter destructive mutation with annotations and an output schema, the description covers the essential side effects a caller must know. The only remaining gap is error behavior for invalid or not-found IDs, which is a minor omission.

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 description coverage is 100% and the single required parameter (maintenanceids array) is documented there, so baseline is 3. The description adds nothing about batching, how nonexistent or already-deleted IDs are handled, or whether partial success is possible.

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?

States a specific verb and resource ('Delete maintenance periods from Zabbix'), which an agent can immediately distinguish from the maintenance_get, maintenance_create, and maintenance_update siblings. It doesn't explicitly name those alternatives, so it stops short of a 5.

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?

The description makes clear what deleting accomplishes (cancels windows, resumes alert generation), which implies when to reach for it, but it never states when-not to use it or points to maintenance_update as the way to modify rather than remove a window. Usage is implied rather than guided.

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

maintenance_getMaintenance GetB
Read-onlyIdempotent

Get maintenance periods from Zabbix.

Maintenance windows define periods when monitoring is paused for planned upgrades, maintenance, or testing. Alerts are suppressed during maintenance periods.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
hostidsNoList of host IDs to get maintenance for. An empty list matches none.
groupidsNoList of host group IDs to get maintenance for. An empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.maintenanceid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
count_outputNoIf true, returns only the count of matched objects as an integer.
maintenanceidsNoList of maintenance IDs to get. Omit to return all maintenance periods; an empty list matches none.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful domain semantics — that alerts are suppressed during these windows — but says nothing about result size, paging behavior, or the count_only mode, which are the operationally relevant traits.

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?

Three short sentences, front-loaded with the action, then useful domain context. Slight redundancy between sentences two and three, but no filler.

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 an output schema present, well-covered parameters, and explicit read-only annotations, the description covers what remains needed. Only the routing question (why choose this over other getters) is left unanswered.

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 description coverage is 89%, with limit, offset, hostids, groupids, maintenanceids, sortfield, sortorder, and count_output all documented inline. The description contributes no additional parameter meaning, so the baseline 3 applies.

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?

States a specific verb and resource ('Get maintenance periods from Zabbix') and clarifies what a maintenance window is. It does not explicitly contrast with maintenance_create/update/delete, but the naming makes the read-vs-write split unambiguous.

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

Usage Guidelines2/5

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

Explains what maintenance windows are conceptually, but gives no guidance on when an agent should call this versus siblings such as problem_get, host_get, or maintenance_create. No exclusions, no typical triggers for invoking it.

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

maintenance_updateMaintenance UpdateB
Destructive

Update an existing maintenance period in Zabbix.

Modifies properties of an existing maintenance window. You can change the name, start time, end time, time periods, or description. Only specify the fields you want to change.

NameRequiredDescriptionDefault
nameNoNew maintenance name.
active_tillNoNew end time (Unix timestamp).
descriptionNoNew description.
timeperiodsNoReplaces all of the maintenance's time periods, e.g. [{'timeperiod_type': 0, 'start_date': 1735689600, 'period': 3600}]. Omit to keep them; a one-off period created for the old window is moved along with it.
active_sinceNoNew start time (Unix timestamp).
maintenanceidYesID of the maintenance to update.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations declare destructiveHint=true and idempotentHint=false, so the description should warn about the destructive behavior; instead it merely says time periods "can be changed" without disclosing (as the schema does) that the array replaces all existing periods. The partial-update sentence adds genuine value beyond annotations, but the destructive/idempotency implications are left undisclosed.

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?

The core action is front-loaded in the first sentence and the operative guidance is short and actionable. The second sentence ("Modifies properties of an existing maintenance window") largely restates the first, so a small amount of text does not fully earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. But for a destructive, non-idempotent mutation the description omits the risk context an agent needs — that passing timeperiods wipes and replaces all periods, and that maintenanceid must reference an existing window.

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 description coverage is 100%, so the baseline is 3. The description enumerates the mutable fields (name, start time, end time, time periods, description) consistent with the schema, but adds no format, timestamp-unit, or nesting semantics beyond what the schema already documents.

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?

States a specific verb and resource ("Update an existing maintenance period in Zabbix") and the word "existing" implicitly separates it from maintenance_create/maintenance_delete. It stops short of naming those siblings or the maintenance_get read path, so differentiation is inferred rather than explicit.

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?

"Only specify the fields you want to change" gives useful partial-update guidance, which is real usage context. However there is no statement of when to use this versus maintenance_create, no prerequisites (permissions, whether the window must be active), and no exclusions.

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

mediatype_getMediatype GetB
Read-onlyIdempotent

Get media types from Zabbix.

Media types define communication channels for sending notifications (email, SMS, webhooks, etc.). Actions use media types to deliver alerts to users and integrations.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'name': 'Email'}. Zabbix 5.4 renamed the media type 'description' field to 'name'.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.mediatypeid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
count_outputNoIf true, returns only the count of matched objects as an integer.
mediatypeidsNoList of media type IDs to get. Omit to return all media types; an empty list matches none.
filter_paramsNoAdditional filter parameters for advanced filtering.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is fully covered without description help. The description adds useful domain context about media types being notification channels consumed by actions, but says nothing about result shape, paging or filtering behavior beyond what the schema provides.

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?

Three short sentences with the retrieval statement front-loaded. The two explanatory sentences on media types are background rather than invocation guidance, but they are brief and help ground the resource without bloat.

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 simple read-only list tool with 9 well-documented optional parameters and an output schema, the description plus structured fields are sufficient to call it correctly. The only real gap is routing guidance relative to sibling getters.

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 description coverage is 89%, so nearly every parameter is already documented in the schema (limit, offset, search, sortfield, mediatypeids all carry explanations). The description contributes no additional parameter semantics, which is acceptable at this coverage level but not value-adding.

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?

States a specific verb and resource ('Get media types from Zabbix') and explains what a media type is, so an agent knows exactly what this retrieves. It does not explicitly distinguish itself from sibling list tools such as action_get, though the resource noun 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 Guidelines2/5

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

The description explains what media types are used for in Zabbix but never says when an agent should call this tool versus the many other *_get siblings, nor any preconditions or exclusions. Usage must be inferred purely from the resource name.

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

problem_getProblem GetB
Read-onlyIdempotent

Get problems from Zabbix.

Problems are active trigger states that indicate issues with monitored infrastructure. Each problem is associated with a trigger and can be acknowledged by operators.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
recentNoIf true, only return recently recovered problems.
searchNoDictionary with search criteria like {'name': 'CPU'}.
hostidsNoList of host IDs to get problems from. An empty list matches none.
eventidsNoList of event IDs to get problems for. Omit to return all problems; an empty list matches none.
groupidsNoList of host group IDs to get problems from. An empty list matches none.
objectidsNoList of trigger IDs to get problems from. An empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.eventid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
time_fromNoUnix timestamp.
time_tillNoUnix timestamp.
severitiesNoSeverity levels 0-5.
suppressedNoIf false, return only unsuppressed problems. If true, return only suppressed problems.
acknowledgedNoIf false, return only unacknowledged problems. If true, return only acknowledged problems.
count_outputNoIf true, returns only the count of matched objects as an integer.
name_containsNoShortcut to search for problems by name (constructs search={'name': name_contains}).

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

The readOnly/idempotent/non-destructive annotations establish the safety profile, so the description's burden is lighter. It adds useful domain semantics — that problems are tied to triggers and are operator-acknowledgeable, hinting at a follow-up with event_acknowledge — but says nothing about pagination behavior, result size, or ordering despite a deterministic-sort requirement for paging that the schema itself flags.

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?

Three short sentences with the core action front-loaded and no filler; the domain definition earns its place by clarifying what a 'problem' is. It could still be tighter given how little of it is actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and near-total parameter coverage, the description needn't explain returns or fields. But for an 18-parameter, zero-required query tool, it offers no guidance on which filters matter or how to page safely, so the agent must reconstruct calling strategy from the schema alone.

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 description coverage is 94%, so all 18 parameters are already documented in the schema, including paging, filtering, severity, and the name_contains shortcut. The description adds no parameter-level meaning beyond that, which is acceptable at this coverage level but earns only the baseline.

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?

The definition gives a specific verb and resource ("Get problems from Zabbix") and defines what a problem is — an active trigger state indicating an infrastructure issue — which implicitly distinguishes it from trigger_get or event_get. However, it does not name any sibling tool, so the agent has to infer that problems are the current-state view rather than the historical event view.

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

Usage Guidelines2/5

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

The description never says when to call this tool versus event_get (event history), trigger_get (trigger definitions), or event_acknowledge (acknowledging). It gives domain context but no usage conditions, alternatives, or prerequisites, leaving the agent to infer the routing from the tool name alone.

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

proxy_createProxy CreateA

Create a new proxy in Zabbix.

Proxies allow distributed monitoring by collecting data from remote networks and reporting to the central Zabbix server. Useful for firewall-separated networks or high-latency connections.

NameRequiredDescriptionDefault
nameYesProxy name.
descriptionNoOptional description explaining the proxy's purpose or location.
operating_modeNo0=active, 1=passive.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare a non-readonly, non-idempotent, non-destructive write, so the agent knows this mutates state. The description adds domain background about distributed monitoring but nothing beyond annotations about failure modes (duplicate name, auth requirements, TLS setup) or what is returned, which are the details a create call actually needs.

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?

The action statement is front-loaded in the first line and the second paragraph is short explanatory context rather than filler. It is slightly verbose for a three-parameter create tool, but nothing is redundant.

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?

An output schema exists, so return values need not be explained, and all three parameters are documented, leaving the description to establish what a proxy is and why one would create it – which it does. The only real gap is post-creation behavior on naming conflicts or permissions.

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 description coverage is 100%, with name, optional description, and operating_mode (0=active, 1=passive) all documented in the schema. The description adds no formatting, defaults, or semantics beyond what the schema already states, so the baseline of 3 applies.

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?

States a specific verb and resource ('Create a new proxy in Zabbix') and follows with what a proxy is for, so the object is unambiguous. It does not explicitly contrast with the sibling proxy_get/proxy_update/proxy_delete, relying on the name to do that routing work.

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?

The second paragraph gives a use case ('firewall-separated networks or high-latency connections'), which hints at when this capability matters, but it never says when to choose this tool over proxy_update, proxy_get, or configuration_import, nor any prerequisites such as required permissions or name uniqueness.

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

proxy_deleteProxy DeleteA
Destructive

Delete proxies from Zabbix.

Permanently removes proxy definitions. Hosts assigned to deleted proxies will need to be reassigned to other proxies or the server. Data from deleted proxies is typically retained.

NameRequiredDescriptionDefault
proxyidsYesProxy IDs to delete.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds real value beyond that: it warns that host assignments break and must be reassigned, and that proxy data is typically retained — consequences an agent cannot infer from annotations alone. It stops short of saying what happens on invalid IDs or partial batch failure.

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?

Three short sentences, front-loaded with the action and its permanence, followed by the two operational consequences. No filler or repetition.

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?

The presence of an output schema removes the need to describe return values, and annotations cover the safety profile, so the description's coverage of permanence and host reassignment fills the main gap. A note on how to obtain proxy IDs or behavior on nonexistent IDs would make it complete.

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 description coverage is 100% with a single required 'proxyids' array already documented as 'Proxy IDs to delete.' The description adds no format, source, or batching guidance beyond that, so the baseline 3 applies.

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 ('Delete proxies from Zabbix') and reinforces scope with 'Permanently removes proxy definitions.' An agent can immediately distinguish this from proxy_get, proxy_create, and proxy_update in the sibling list.

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 is implied by the destructive verb, but the description never states when to use this versus alternatives (e.g., proxy_update to repoint a proxy) or that proxy IDs must first be obtained via proxy_get. No explicit prerequisites or exclusions are given.

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

proxy_getProxy GetC
Read-onlyIdempotent

Get proxies from Zabbix.

Proxies act as data collection points for Zabbix, allowing monitoring of remote networks without direct connectivity. Proxies collect data locally and report to the Zabbix server.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'name': 'proxy1'}. Zabbix 7.0 renamed the proxy 'host' field to 'name' and rejects the old one.
proxyidsNoList of proxy IDs to get. Omit to return all proxies; an empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.proxyid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
count_outputNoIf true, returns only the count of matched objects as an integer.
filter_paramsNoAdditional filter parameters for advanced filtering.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered structurally. The description adds only encyclopedic context about what proxies do; it says nothing about pagination behaviour, result ordering, whether an empty proxyids list matches nothing, or which Zabbix version quirks apply — all of which are behavioural and would warrant credit.

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 action in the first four words, then three short sentences with no redundancy. The two explanatory sentences are optional background rather than wasted space, but they push the operational content out of the way slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists and annotations cover safety, so the description does not need to explain return values. However, for a 9-parameter paged list tool with a version-dependent search field, the description leaves the agent without any operational framing beyond a definition of proxies.

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 description coverage is 89%, so the schema already carries the parameter meaning (limit/offset defaults, search rename from host to name in 7.0, empty-list semantics). The description adds nothing about any of the 9 parameters, so the baseline 3 applies rather than a higher score.

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?

States a specific verb and resource ('Get proxies from Zabbix') and follows with a plain-language definition of what a proxy is, so an agent unfamiliar with Zabbix can place the resource. It does not explicitly contrast itself with proxy_create/proxy_update/proxy_delete, though the read-only verb makes the distinction easy to infer.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus other retrieval tools, no mention of the paging pattern (limit/offset/sortfield), no guidance on proxyids vs search vs filter_params, and no mention of when count_output should be preferred. The only 'usage' content is domain background, not invocation routing.

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

proxy_updateProxy UpdateA

Update an existing proxy in Zabbix.

Modifies properties of an existing proxy. You can change the name, operating mode, or description. Only specify the fields you want to change.

NameRequiredDescriptionDefault
nameNoNew proxy name/hostname.
proxyidYesID of the proxy to update.
descriptionNoNew description.
operating_modeNo0=active, 1=passive.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds real context beyond them: unspecified fields are left unchanged, which tells the agent this is a safe partial mutation. It omits consequences the agent would want, such as what happens to hosts assigned to a proxy when operating_mode flips, or name-uniqueness constraints.

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?

Short and front-loaded, with the action stated in the first sentence. The second sentence partly restates the first ("Modifies properties of an existing proxy"), costing a little redundancy, but overall it is compact.

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 four-parameter mutation with full schema coverage, annotations, and an output schema, the description covers what the tool does and how minimally to call it. Only the side effects of a proxy-mode change are left unexplained, which is a minor gap.

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 description coverage is 100%, so the schema already documents all four parameters including the 0=active/1=passive encoding. The description restates the same field list (name, operating mode, description) without adding format, constraints, or edge-case meaning beyond the schema. Baseline 3 applies.

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?

Names a specific verb and resource ("Update an existing proxy in Zabbix") and enumerates the mutable fields, so the agent knows exactly what changes. It does not explicitly contrast with proxy_create/proxy_delete/proxy_get siblings, though the verb alone makes the distinction fairly obvious.

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?

"Only specify the fields you want to change" gives useful partial-update guidance that implies this is an edit-in-place operation. However, there is no statement of prerequisites (proxy must already exist, valid proxyid), no exclusions, and no explicit routing to sibling tools.

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

script_executeScript ExecuteB
Destructive

Execute a script on a host in Zabbix.

Runs a custom script on a specified host. Used for executing remediation tasks, configuration changes, or diagnostic commands remotely.

NameRequiredDescriptionDefault
hostidYesHost ID to execute the script on.
scriptidYesScript ID to execute.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the risk profile is known. The description adds useful context that this runs arbitrary commands remotely for remediation or configuration changes, which is consistent with the annotations, but it does not warn about irreversibility, permission requirements, or that results depend entirely on the script's contents. It adds some value over the annotations without being rich behavioral detail.

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?

Two short sentences with the core action front-loaded. The second sentence earns its place by narrowing the action domain, though it partially restates the first and could be merged.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and parameters are fully covered by the schema. However, for a destructive remote-execution tool the description omits key operational caveats — prerequisite of a pre-existing script, execution target type (agent/proxy/server), permission requirements, and whether the call is asynchronous. These are material gaps for correct invocation.

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 description coverage is 100% for both required parameters (hostid and scriptid), so the schema fully documents them. The description adds no format, source, or discovery hints (e.g., where to obtain a valid scriptid) beyond what the schema provides. Baseline 3 applies when the schema carries the parameter burden.

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?

The first sentence gives a specific verb and resource ("Execute a script on a host in Zabbix") that clearly separates it from script_get, the only script-related sibling. The second sentence reinforces scope by naming the kinds of actions performed. It stops short of explicitly contrasting itself with siblings, so it lands at 4 rather than 5.

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?

"Used for executing remediation tasks, configuration changes, or diagnostic commands remotely" implies the usage context, but there is no explicit when-to-use versus when-not, no mention that the script must already be defined in Zabbix, and no guidance on prerequisites such as permissions or target host type. The agent must infer these from context.

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

script_getScript GetB
Read-onlyIdempotent

Get scripts from Zabbix.

Scripts are custom automation routines that can be executed on monitored hosts or the server. They can be triggered manually or by actions to automate remediation or configuration tasks.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'name': 'restart'}.
hostidsNoList of host IDs to get scripts for. An empty list matches none.
groupidsNoList of group IDs to get scripts for hosts in those groups. An empty list matches none.
scriptidsNoList of script IDs to get. Omit to return all scripts; an empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.scriptid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
count_outputNoIf true, returns only the count of matched objects as an integer.
filter_paramsNoAdditional filter parameters for advanced filtering.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered structurally. The description adds useful domain framing about what scripts are used for, but says nothing about permissions, return volume, or paging behavior beyond what annotations and schema already give.

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 one short sentence; the follow-up definition of scripts is relevant domain context. Slightly padded — the second sentence could be trimmed — but nothing is misleading or wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 11 parameters, an output schema present, and rich schema descriptions, the definition is functionally sufficient to call the tool. However, for a list tool with search/host/group filtering, the description gives no hint that these filtering capabilities exist, leaving the agent to discover them purely from the schema.

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 description coverage is 91%, so nearly every parameter (limit, offset, search, hostids, groupids, scriptids, sortfield, count_output) is already documented in the schema. The description adds no parameter-level meaning, which is the baseline-3 case when the schema carries the load.

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?

States a clear verb and resource ('Get scripts from Zabbix') and adds a definition of what a script is. An agent can tell this is a read/list operation on scripts, but the description never distinguishes it from the sibling 'script_execute', which is the key ambiguity an agent faces here.

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

Usage Guidelines2/5

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

No guidance on when to use this versus 'script_execute' or any other sibling, and no mention of the filtering/paging behavior that would tell an agent how to narrow a query. Usage is only implied by the tool name.

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

service_getService GetB
Read-onlyIdempotent

Get services from Zabbix.

Services represent business capabilities or applications (e.g., 'Web Application', 'Database'). Services can depend on other services, creating hierarchies for tracking dependencies.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'name': 'API'}.
parentidsNoList of parent service IDs to get child services from. An empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.serviceid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
serviceidsNoList of service IDs to get. Omit to return all services; an empty list matches none.
count_outputNoIf true, returns only the count of matched objects as an integer.
filter_paramsNoAdditional filter parameters for advanced filtering.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful domain context about service hierarchies, but does not disclose operational behavior such as pagination, auth requirements, or response shape beyond what the schema and output schema provide.

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?

The description is short, front-loaded, and appropriately sized. The first sentence identifies the operation, and the following sentences explain the resource domain. The generic service explanation is useful but not strictly necessary, keeping it just below maximally concise.

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 10 optional parameters, 90% schema description coverage, an output schema, and read-only annotations, the description does not need to restate parameter or return details. It could be more complete by mentioning paging/counting or when to choose this over other retrieval tools, but the structured metadata covers most requirements.

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 description coverage is 90%, so the schema already documents nearly all parameters, including limit, offset, search, parentids, serviceids, sortfield, sortorder, and count_output. The description adds no parameter-specific meaning beyond the schema, which is acceptable at the baseline for high-coverage schemas.

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?

The description states a specific verb and resource: 'Get services from Zabbix.' It also clarifies that services are business capabilities/applications and can form dependency hierarchies, which helps distinguish this from other *_get tools. It does not explicitly name sibling alternatives, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description says what the tool retrieves but gives no explicit guidance on when to use it versus alternatives, nor when to use specific parameters such as parentids, search, count_output, or paging options. Usage is only implied by the tool name and resource domain.

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

sla_getSla GetC
Read-onlyIdempotent

Get SLAs from Zabbix.

Service Level Agreements (SLAs) define uptime and availability targets for services. They track compliance with service objectives and generate reports on availability.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'name': 'Website'}.
slaidsNoList of SLA IDs to get. Omit to return all SLAs; an empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.slaid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
serviceidsNoList of service IDs to get SLAs for. An empty list matches none.
count_outputNoIf true, returns only the count of matched objects as an integer.
filter_paramsNoAdditional filter parameters for advanced filtering.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is fully covered structurally. The description adds only background about what SLAs conceptually are, not how the tool behaves — nothing about paging, the count_output mode, sort determinism, or response shape (even though an output schema exists, the paging/count interaction is behavioral context the schema's parameter docs only partially cover).

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

Conciseness3/5

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

The lead sentence is front-loaded and useful; the two following sentences are domain tutorial content that doesn't help an agent invoke the tool. Appropriately short, but with waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and near-complete parameter docs, an agent can call this correctly. What's missing is the sibling routing context (service_get vs sla_get) and any behavioral note on the two output modes.

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 description coverage is 90%, so limit, offset, slaids, serviceids, count_output and sortfield are already well documented in the schema. The description adds no parameter meaning beyond that; baseline 3 applies.

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?

States a specific verb and resource ("Get SLAs from Zabbix") and the definitional sentence clarifies what an SLA is. However, it does nothing to distinguish this from the closely-related sibling service_get, which also retrieves availability objects.

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

Usage Guidelines2/5

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

There is no indication of when to use this versus service_get, nor any prerequisite or exclusion guidance. The only implied usage is 'retrieve SLAs', which the name already conveys.

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

template_createTemplate CreateB

Create a new template in Zabbix.

Templates define the monitoring configuration (items, triggers, graphs) that can be reused across multiple hosts. Creating custom templates enables standardized monitoring for specific applications or server types.

NameRequiredDescriptionDefault
hostYesTechnical name of the template.
nameNoTemplate name (required). Example: 'Apache Web Server', 'PostgreSQL Database'. Should describe what the template monitors.
groupsYesTemplate groups the template belongs to, e.g. [{'groupid': '10'}]. Since Zabbix 6.2 these are template groups, not host groups.
descriptionNoOptional template description explaining its purpose and use.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and idempotentHint=false, so the write nature is covered, but the description adds no behavioral context beyond that. It does not mention that repeated calls create duplicates, that the 'host' technical name must be unique, or what happens when a group id is invalid.

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 action in the first sentence, with the explanatory paragraph following. The conceptual explanation is slightly verbose for a tool definition but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations, an output schema, and full schema coverage, the structured data covers most needs, but for a non-idempotent create operation the description omits uniqueness constraints and group-existence prerequisites, leaving a meaningful gap.

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 description coverage is 100%, so the four parameters are fully documented in the schema, and the description adds no parameter-level detail. Baseline 3 applies when the schema carries the burden.

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 ('Create a new template in Zabbix') and clarifies what a template is, making it easy to distinguish from template_get, template_update, and template_delete. The second paragraph adds domain meaning without obscuring the action.

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

Usage Guidelines2/5

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

The description explains why templates are useful but never states when to choose this tool over siblings (e.g., template_update for existing templates), nor does it mention prerequisites such as groups needing to exist first. Usage is only inferable from the verb.

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

template_deleteTemplate DeleteA
Destructive

Delete templates from Zabbix.

Permanently removes one or more templates. Hosts that have the deleted templates applied will lose those template's items, triggers, and graphs. The hosts themselves remain unchanged.

NameRequiredDescriptionDefault
templateidsYesTemplate IDs to delete.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds substantial behavioral context beyond those flags: deletion is permanent, applied hosts lose the template's items, triggers, and graphs, but the hosts themselves remain. This is exactly the kind of impact disclosure an agent needs for a destructive operation.

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 three short sentences with the core action front-loaded. Every sentence adds value, especially the cascade impact note, and there is no redundant boilerplate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive template-deletion tool with complete input schema coverage, annotations, and an output schema, the description supplies the critical behavioral detail an agent would otherwise lack: permanence and downstream effects on hosts. Nothing essential to correct invocation is missing.

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 description coverage is 100%, and the single parameter 'templateids' is already documented as an array of template IDs. The description's phrase 'one or more templates' is consistent with the schema but does not add meaningful syntax or usage detail beyond it. Baseline 3 is appropriate when the schema carries the parameter documentation.

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 states a specific verb and resource: delete templates from Zabbix. It is clearly distinguishable from sibling tools such as template_get, template_create, and template_update. The additional sentence about permanent removal reinforces rather than obscures the purpose.

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 makes the use case clear: permanently removing one or more templates. It does not explicitly name alternatives like template_update for non-destructive changes, but the deletion context is unambiguous. The warning about affected hosts gives useful context for when caution is needed.

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

template_getTemplate GetB
Read-onlyIdempotent

Get templates from Zabbix.

Templates are reusable collections of items, triggers, and graphs that can be applied to hosts. They standardize monitoring across multiple servers with the same role.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoSubstring search in template name. Matches partial names like 'Linux' finds 'Linux Server Template'.
hostidsNoReturn only templates linked to these hosts. An empty list matches none.
groupidsNoReturn only templates in these template groups. An empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.host
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
select_tagsNoIf true, include the tags for the templates (selectTags=extend).
templateidsNoList of template IDs to get. Omit to return all templates; an empty list matches none. Find template IDs with a search or from host associations.
count_outputNoIf true, returns only the count of matched objects as an integer.
select_hostsNoIf true, include the hosts that are linked to the templates (selectHosts=extend).
select_groupsNoIf true, include the template groups the templates belong to (selectTemplateGroups=extend).
select_macrosNoIf true, include the macros for the templates (selectMacros=extend).
select_templatesNoIf true, include the templates that are linked to these templates directly (selectTemplates=extend).
template_name_containsNoShortcut to search for templates by name (constructs search={'host': template_name_contains}).

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds domain context about what templates are, but does not disclose operational details like pagination behavior, default result size, or that count_output changes the return type. Given annotation coverage, a 3 is appropriate.

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?

The purpose is front-loaded in the first sentence. The second and third sentences are definitional rather than behavioral, which is mildly extraneous for a retrieval tool but still useful context for agents unfamiliar with Zabbix templates.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a 16-parameter schema, an output schema present, and safety annotations, the structured fields compensate for much of the description's brevity. Still, the description does not mention filtering, sorting, or selection capabilities at all, which is a notable gap for a tool of this complexity.

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 description coverage is 94%, so the schema already documents nearly all of the 16 parameters in detail. The description itself provides no parameter-specific semantics, so the baseline of 3 applies when the schema does the heavy lifting.

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?

The first sentence states a clear verb and resource: 'Get templates from Zabbix.' An agent can distinguish this from write siblings like template_create/template_update by the verb. However, it does not explicitly differentiate from other read tools such as host_get or item_get, relying on the resource name alone.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives, nor any conditions or exclusions. It does not mention the available filtering modes (templateids, hostids, groupids, search) or when to prefer one over another, leaving the agent to infer usage entirely from the schema.

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

template_updateTemplate UpdateA

Update an existing template in Zabbix.

Modifies properties of an existing template. You can change the name or description. Only specify the fields you want to change.

NameRequiredDescriptionDefault
nameNoNew template name.
templateidYesID of the template to update.
descriptionNoNew template description.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is covered. The description adds that only name and description are editable and supports partial updates, but it does not mention permissions, side effects, or response behavior.

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?

The description is short and front-loaded with the core action. It has mild redundancy between "Update an existing template" and "Modifies properties of an existing template," but remains efficient.

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 the presence of an output schema, full parameter schema coverage, and annotations, the description is largely complete for a simple mutation tool. It could mention required templateid or permissions, but those are reasonably covered by structured data.

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 parameter documentation is already strong. The description adds useful semantic context by naming the editable fields and clarifying that unspecified fields should be omitted during partial updates.

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?

States a specific verb and resource: update an existing Zabbix template. It clearly distinguishes mutation from template_get/create/delete by saying "existing" and naming the editable properties, though it does not explicitly route to sibling tools.

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?

Provides partial-update guidance with "Only specify the fields you want to change," which implies how to use optional fields. However, it does not state when to use this versus template_create or template_get, nor does it mention prerequisites.

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

trend_getTrend GetA
Read-onlyIdempotent

Get trend data from Zabbix.

Trends are aggregated (summarized) historical data providing min/max/average values at hour-long intervals. Trends use less storage than raw history while preserving statistical information for long-term analysis.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
itemidsYesItem IDs to get trends for.
time_fromNoUnix timestamp to get trends from this time onwards.
time_tillNoUnix timestamp to get trends up to this time.
count_outputNoIf true, returns only the count of matched objects as an integer.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/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), so the description's real contribution is disclosing that results are aggregated at hour-long intervals with min/max/average stats rather than point samples. That granularity disclosure materially affects how an agent interprets returned values. It omits pagination/limit behavior, but the schema covers that.

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?

Two sentences, front-loaded with the action and followed by the definitional context that justifies the tool's existence. The second sentence earns its place by explaining why trends exist, though it could be trimmed slightly without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema and full parameter documentation are present, annotations cover safety, so the description only needed to explain purpose and data semantics — which it does. An agent can correctly decide to call this and understand the shape of the data (hourly aggregates) without further context.

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 description coverage is 100% with five well-documented parameters, so the schema already carries the semantics of itemids, time_from, time_till, limit, and count_output. The description adds no parameter-level meaning (e.g., that time_from/time_till filter the aggregation window), which is the correct baseline of 3 given full schema coverage.

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?

States a specific verb+resource ('Get trend data from Zabbix') and then defines what a trend actually is (aggregated min/max/average at hour-long intervals), which effectively separates it from history_get without naming it. It stops short of explicitly naming the sibling alternative, so it is clear but not fully differentiated.

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 is only implied: the note that trends use less storage than raw history for 'long-term analysis' hints that this tool is for coarse/long-range queries and history_get for raw detail, but no explicit when-to-use or when-not-to-use statement is given. An agent must infer the boundary with history_get from a passing phrase.

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

trigger_createTrigger CreateC

Create a new trigger in Zabbix.

Triggers define the conditions under which problems are detected. They use expressions to evaluate item values and determine when to transition from normal to problem state.

NameRequiredDescriptionDefault
statusNo0=enabled, 1=disabled.
commentsNoOptional comment/notes about the trigger explaining its purpose and context.
priorityNoSeverity 0-5.
expressionYesTrigger expression.
descriptionYesTrigger description/name.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

The annotations already declare that this is a non-read-only, non-idempotent, non-destructive mutation. The description does not add meaningful behavioral detail such as permission requirements, duplicate-handling behavior, validation rules, or side effects, though it does stay consistent with the annotations.

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?

The description is short and front-loaded, with the purpose stated in the first sentence and supporting domain context in the second. It is appropriately sized, though the second sentence is useful background rather than strictly necessary invocation guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With full schema coverage, annotations, and an output schema, the description does not need to explain parameters or return values. However, for a create/mutation tool it still lacks context around permissions, uniqueness, or what happens when a duplicate trigger is created, leaving some behavioral gaps.

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 description coverage is 100%, so the schema already documents every parameter, including status, priority, expression, and description. The description adds no parameter-specific meaning beyond what the schema provides, making the baseline score of 3 appropriate.

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?

The description clearly states the specific verb and resource: "Create a new trigger in Zabbix." It adds a concise explanation of what triggers are, but does not explicitly distinguish this tool from nearby siblings such as trigger_update or trigger_get, so it falls just short of a 5.

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

Usage Guidelines2/5

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

The description implies that this tool is for new triggers rather than updates, but it gives no explicit guidance on when to use it versus trigger_update or trigger_get. It also does not mention prerequisites, exclusions, or common call conditions.

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

trigger_deleteTrigger DeleteA
Destructive

Delete triggers from Zabbix.

Permanently removes one or more triggers. Hosts will no longer generate alerts for these conditions. Historical trigger data and associated problems are typically retained.

NameRequiredDescriptionDefault
triggeridsYesTrigger IDs to delete.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, and the description adds useful behavioral context: removal is permanent, hosts stop generating alerts for the conditions, and historical trigger data/problems are typically retained. It does not cover permissions or error behavior for repeated deletion, but it meaningfully supplements the annotations.

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 three short sentences, front-loaded with the core action and followed by consequences. Every sentence adds relevant information with no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. Given the destructive annotations and the description's explanation of permanence, alert impact, and data retention, the definition is complete for a one-parameter delete tool.

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?

There is only one parameter, triggerids, and the schema description coverage is 100%, so the schema already documents it fully. The description does not add syntax or format details beyond what the schema provides, making the baseline 3 appropriate.

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 states a specific verb and resource: delete triggers from Zabbix. It also clarifies that this permanently removes one or more triggers, distinguishing it from trigger_get, trigger_create, and trigger_update.

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 is implied by the destructive delete action, but the description does not explicitly say when to use this tool versus alternatives such as updating or disabling a trigger. No prerequisites or exclusions are stated.

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

trigger_getTrigger GetC
Read-onlyIdempotent

Get triggers from Zabbix.

Triggers are rules that define when a problem occurs based on item values. They evaluate expressions against collected metrics and transition between problem and normal states.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'description': 'CPU'}.
hostidsNoList of host IDs to get triggers from. An empty list matches none.
groupidsNoList of group IDs to get triggers from hosts in those groups. An empty list matches none.
only_trueNoOnly return triggers in problem state.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.triggerid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
triggeridsNoList of trigger IDs to get. Omit to return all triggers; an empty list matches none.
templateidsNoList of template IDs to get triggers from those templates. An empty list matches none.
count_outputNoIf true, returns only the count of matched objects as an integer.
min_severityNoMinimum severity (0-5).
select_hostsNoIf true, include the hosts each trigger belongs to in the response (selectHosts=extend).
filter_paramsNoAdditional filter parameters for advanced filtering.
description_containsNoShortcut to search for triggers by description (name) (constructs search={'description': description_contains}).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds only domain background (triggers evaluate expressions and transition between problem/normal states), not operational behavior such as pagination semantics, volume expectations, or how counts are returned.

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?

Two short sentences, front-loaded with the action. The second sentence is domain education rather than routing information, but it does help an agent interpret results, so it mostly earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and rich annotations, the description needn't explain return values, and the schema documents 16 parameters well. What is missing is the selection guidance an agent needs to choose this tool over its many read-oriented siblings.

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 description coverage is 94%, so the schema already explains limit, offset, filters, min_severity, count_output and the rest. The description contributes no additional parameter meaning beyond that, so the baseline 3 applies.

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?

States a specific verb and resource ("Get triggers from Zabbix") and adds a definition of what a trigger is. It is clearly a read/list operation, distinguishable from trigger_create/update/delete siblings by the verb, though it never contrasts with sibling read tools like problem_get or event_get.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance: nothing says when to prefer trigger_get over problem_get or event_get, nor when to use only_true or filters. Usage is only implied by the tool name and the parameter list.

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

trigger_updateTrigger UpdateA

Update an existing trigger in Zabbix.

Modifies properties of an existing trigger. You can change the description, expression, priority, status, or comments. Only specify fields you want to change.

NameRequiredDescriptionDefault
statusNo0=enabled, 1=disabled.
commentsNoNew comments/notes.
priorityNoNew severity level (0-5).
triggeridYesID of the trigger to update.
expressionNoNew trigger expression.
descriptionNoNew trigger name/description.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

The description adds partial-update semantics ('only specify fields you want to change'), which is useful beyond the annotations. However, with readOnlyHint=false and idempotentHint=false, it does not disclose whether changes take effect immediately, permission requirements, or what happens if no fields are supplied.

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?

The description is short and front-loaded, with the partial-update rule at the end. The first two sentences are somewhat redundant ('Update an existing trigger' / 'Modifies properties of an existing trigger'), but there is no significant waste.

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 the output schema exists, the rich parameter descriptions, and the annotations, the description is nearly complete for a partial-update tool. It could be stronger by mentioning required triggerid or side effects, but the essential call semantics are present.

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 description coverage is 100%, so the baseline is 3. The description lists the changeable fields (description, expression, priority, status, comments) and reinforces that only desired fields should be sent, but it adds no per-parameter detail beyond the schema.

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?

The description gives a specific verb and resource ('Update an existing trigger in Zabbix') and clarifies scope with 'Modifies properties of an existing trigger.' It implicitly distinguishes update from sibling trigger_create/trigger_get/trigger_delete, but never explicitly names or contrasts those siblings.

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?

The phrase 'Only specify fields you want to change' gives useful guidance for partial updates, but the description does not explicitly say when to use this tool versus trigger_create, trigger_get, or trigger_delete.

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

user_createUser CreateB

Create a new user in Zabbix.

Creates a new user account with specified credentials, role and group membership.

NameRequiredDescriptionDefault
nameNoUser's first name (optional).
passwdYesPassword.
roleidNoID of the user's role, which is what grants permissions. Defaults to '1' (User role); a user created without one gets roleid 0 and cannot log in.1
surnameNoUser's last name (optional).
usrgrpsYesUser groups [{'usrgrpid': '1'}].
usernameYesUsername.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is covered. The description adds that it creates a user account with credentials, role, and group membership, but does not disclose duplicate-username behavior, permission requirements, or authentication implications beyond what the schema provides.

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?

The description is short and front-loaded with the core action. The second sentence partially restates the first but does add the account-composition details, so there is minor redundancy rather than verbosity.

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?

The tool has rich structured context: 100% schema description coverage, annotations covering mutation safety, and an output schema. Given that support, the description is sufficient to identify the tool as a user-creation operation, though it could mention duplicate handling or required group semantics more explicitly.

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 description coverage is 100%, so the schema already documents all parameters in detail. The description maps at a high level to credentials, role, and group membership, but adds no syntax, format, or default-value information beyond the schema.

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?

The description uses a specific verb and resource: "Create a new user in Zabbix." It also clarifies that the created account includes credentials, role, and group membership. It does not explicitly distinguish itself from siblings like user_update or user_delete, but the create purpose 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 Guidelines2/5

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

The description states what the tool does but gives no guidance on when to use it versus alternatives such as user_update or user_get. It also omits prerequisites, exclusions, or warnings about duplicate usernames.

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

user_deleteUser DeleteA
Destructive

Delete users from Zabbix.

Permanently removes user accounts from the system. The user's access will be immediately revoked. Historical data and previous actions by the user are retained for audit purposes.

NameRequiredDescriptionDefault
useridsYesUser IDs to delete.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known; the description still adds real value by disclosing consequences — immediate access revocation and that historical data/audit trails survive the deletion. The only unaddressed trait is multi-ID behavior (all-or-nothing vs partial failure), which is relevant given the array parameter.

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?

Four short sentences, front-loaded with the action, then the permanence warning, then the audit-retention note. Nothing is repeated and no sentence is filler.

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 one-parameter destructive tool with full annotation coverage, a complete schema, and an output schema, the description covers purpose and consequences adequately. The missing piece is failure/partial-success behavior when several IDs are passed, which matters for a batch delete.

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 description coverage is 100% and the single 'userids' array is already documented as 'User IDs to delete', so the schema carries the burden. The description adds nothing about batch semantics or how multiple IDs are handled, so baseline 3 applies.

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?

The description opens with a specific verb+resource ('Delete users from Zabbix') and elaborates that accounts are permanently removed, which clearly separates it from user_get, user_create, and user_update. It stops short of explicitly naming the non-destructive alternative (disabling via user_update), which is the one ambiguity an agent could face.

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 is implied rather than stated: 'Permanently removes' and 'access will be immediately revoked' telegraph that this is a last-resort operation, but there is no explicit when-to-use/when-not or pointer to siblings. An agent must infer that user_update is the reversible alternative.

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

user_getUser GetB
Read-onlyIdempotent

Get users from Zabbix.

Users represent people with access to the Zabbix system. Each user has authentication credentials and permission level determining what they can view and modify.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'username': 'admin'}. Zabbix 5.4 renamed 'alias' to 'username' and rejects the old name.
useridsNoList of user IDs to get. Omit to return all users; an empty list matches none.
sortfieldNoField to sort by. A deterministic sort is required for paging to be consistent.userid
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
count_outputNoIf true, returns only the count of matched objects as an integer.
filter_paramsNoAdditional filter parameters for advanced filtering.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds domain context about what Zabbix users represent, but does not disclose additional behavior such as pagination, filtering behavior, or authentication requirements.

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?

The description is short and front-loads the core action: 'Get users from Zabbix.' The second sentence adds useful domain context but is not operationally necessary for invoking the tool.

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 the rich input schema, output schema, and read-only/idempotent annotations, the description is largely complete for a retrieval tool. It establishes the resource and its meaning, though it omits usage guidance and does not mention filtering or paging behavior already covered by the schema.

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 description coverage is high at 89%, so the schema already documents most parameters. The description does not add any parameter-level meaning beyond what the schema provides, which is the baseline expectation when schema coverage is high.

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?

The description states a specific verb and resource: 'Get users from Zabbix.' It clearly identifies the user entity and its domain meaning, but does not explicitly differentiate this retrieval tool from sibling user tools such as user_create, user_update, or user_delete.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. Usage is only implied by the verb 'Get' and the resource 'users'.

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

usermacro_createUsermacro CreateB

Create a new host macro in Zabbix.

Host macros define custom variables for specific hosts. They can be referenced in items and triggers using {$MACRO_NAME} syntax, allowing dynamic configuration without editing items.

NameRequiredDescriptionDefault
macroYesMacro name (e.g., {$MYMACRO}).
type_No0=text, 1=secret, 2=vault.
valueYesMacro value.
hostidYesHost ID for the macro.
descriptionNoOptional description explaining the macro's purpose.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive write, so the safety profile is covered. The description adds useful conceptual context (macros are referenced via {$MACRO_NAME} in items/triggers), but omits what happens on duplicate macro names, secret/vault value handling, or permission requirements implied by type_=1/2.

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?

The action is front-loaded in the first sentence, followed by a short explanatory paragraph about macro reference syntax. Nothing is padded, though the second paragraph is context rather than invocation guidance.

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?

An output schema exists, so return values need not be described, and the schema fully documents parameters. Remaining gaps are duplicate-name behavior and error modes for a non-idempotent create, which would be nice but are not essential to invoke correctly.

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 description coverage is 100%, so all five parameters, including the type_ enum meaning and macro format, are documented in the schema. The description reinforces the {$MACRO_NAME} convention but adds no semantics beyond what the schema already provides.

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?

States a specific verb and resource ("Create a new host macro in Zabbix") and clarifies the host-level scope, which distinguishes it from generic macro handling. It does not explicitly contrast with sibling usermacro_get/usermacro_delete, but the create intent 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 Guidelines2/5

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

There is no statement of when to use this versus usermacro_get, usermacro_delete, host_create, or template/global-level macros. The only implied guidance is the word "host" scoping the macro level; no prerequisites, exclusions, or alternative-routing advice is given.

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

usermacro_deleteUsermacro DeleteA
Destructive

Delete host macros from Zabbix.

Permanently removes host-level macro definitions. Items and triggers using this macro will no longer be able to reference it, potentially causing parsing errors.

NameRequiredDescriptionDefault
hostmacroidsYesHost macro IDs to delete.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety bar is low. The description earns credit by adding real downstream context the annotations cannot convey: dependent items and triggers lose the reference and may hit parsing errors, which is exactly the kind of impact an agent needs before calling a destructive tool.

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?

Two tight sentences: the action first, then the blast radius. Nothing is repeated from the annotations or schema and nothing is wasted.

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?

An output schema exists so return values need no explanation, and the destructive nature plus dependent-object impact is covered. The only missing piece is how to source valid macro IDs (e.g., usermacro_get) before deletion, a small gap for a single-param destructive tool.

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?

There is only one parameter (hostmacroids) with 100% schema coverage, so the schema already carries its meaning. The description adds nothing about format or where these IDs come from, which is the correct baseline when the schema is complete.

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?

States a specific verb and resource ('Delete host macros from Zabbix') and clarifies it is host-level macros, so there's no ambiguity about scope. It does not explicitly distinguish itself from usermacro_get/usermacro_create, but the verb makes the distinction evident.

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?

The consequence sentence implies when to be careful, but there is no explicit guidance on when to delete versus update a macro, or that IDs should first be obtained via usermacro_get. Usage is implied rather than instructed.

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

usermacro_getUsermacro GetC
Read-onlyIdempotent

Get user macros from Zabbix.

User macros are variables that can be referenced in items, triggers, and scripts. They allow parameterization of monitoring configurations with custom values.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default is 100.
offsetNoNumber of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response.
outputNoextend
searchNoDictionary with search criteria like {'macro': '{$THRESHOLD}'}.
hostidsNoList of host IDs to get macros from. An empty list matches none.
sortfieldNoField to sort by. usermacro.get only allows 'macro'.macro
sortorderNoSort direction - 'ASC' or 'DESC'.ASC
globalmacroNoReturn global macros.
templateidsNoList of template IDs to get macros from. An empty list matches none.
count_outputNoIf true, returns only the count of matched objects as an integer.
hostmacroidsNoList of host macro IDs to get. An empty list matches none.
filter_paramsNoAdditional filter parameters for advanced filtering.
globalmacroidsNoList of global macro IDs to get. An empty list matches none.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only a conceptual definition of user macros and does not disclose behavior beyond 'get', such as pagination, count-only mode, or host/global/template macro scoping.

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?

The description is short and front-loaded with the core action: getting user macros. The second sentence is useful context but not strictly necessary for invocation, so it is efficient though slightly under-specified for a 13-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the input schema is richly annotated, so return format and most parameter details need not be repeated. However, for a 13-parameter tool with global, host, and template macro modes, the description is thin on how to choose among those modes and when to use filtering or count-only behavior.

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 description coverage is 92%, so the input schema already documents nearly all parameters in detail. The description does not add any parameter-specific meaning beyond the schema, but the baseline is 3 when schema coverage is this high.

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?

The description states a clear verb and resource: 'Get user macros from Zabbix.' It also explains what user macros are, which helps an agent understand the object. However, it does not explicitly distinguish this tool from sibling operations such as usermacro_create or usermacro_delete.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives, nor does it mention important usage distinctions such as global macros versus host/template macros. It simply says it gets user macros, leaving all invocation context to the schema.

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

user_updateUser UpdateB

Update an existing user in Zabbix.

Modifies properties of an existing user account. You can change name, surname, password, or role. Only specify the fields you want to change.

NameRequiredDescriptionDefault
nameNoNew first name.
passwdNoNew password.
roleidNoID of the user's role, which is what grants permissions. Roles are objects in Zabbix 5.2+; the old numeric user 'type' no longer exists.
useridYesID of the user to update.
surnameNoNew last name.
usernameNoNew username (not recommended - can cause issues).

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is known. The description adds nothing beyond that: no mention of required permissions, what happens when a password or role is changed, or whether the operation can be reverted. It largely restates the name and annotations.

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?

Three short sentences, front-loaded with the core action and ending with the partial-update rule. The second sentence mostly restates the first, costing a little density but no real confusion.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the schema is fully documented. Still, for a user-account mutation an agent would benefit from knowing about permission requirements and side effects of password or role changes, which are absent.

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 description coverage is 100%, so each parameter is already documented in detail, including the caveat about username. The description's field list adds no syntax or constraint information beyond the schema, so baseline 3 applies.

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?

States a specific verb and resource ('Update an existing user in Zabbix') and enumerates the mutable fields, so the tool's job is unambiguous. It stops short of naming sibling tools like user_create or user_delete, which the names make fairly obvious anyway.

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?

'Only specify the fields you want to change' usefully describes partial-update semantics and implies that userid is required and everything else optional. There is no explicit guidance on when to prefer this over user_create or on prerequisites such as admin permissions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 23 tool updatesv0.7.1
    • Changedaction_get3 fields changed
      • changedInput schema / properties / actionids / description
        Previous value: -"List of action IDs to get. If empty, returns all actions."New value: +"List of action IDs to get. Omit to return all actions; an empty list matches none."
      • changedInput schema / properties / groupids / description
        Previous value: -"List of host group IDs to get actions for."New value: +"List of host group IDs to get actions for. An empty list matches none."
      • changedInput schema / properties / hostids / description
        Previous value: -"List of host IDs to get actions for."New value: +"List of host IDs to get actions for. An empty list matches none."
    • Changeddiscoveryrule_get3 fields changed
      • changedInput schema / properties / hostids / description
        Previous value: -"List of host IDs to get discovery rules from."New value: +"List of host IDs to get discovery rules from. An empty list matches none."
      • changedInput schema / properties / itemids / description
        Previous value: -"List of item IDs (discovery rules are items) to get."New value: +"List of item IDs (discovery rules are items) to get. An empty list matches none."
      • changedInput schema / properties / templateids / description
        Previous value: -"List of template IDs to get discovery rules from."New value: +"List of template IDs to get discovery rules from. An empty list matches none."
    • Changeddrule_get1 field changed
      • changedInput schema / properties / druleids / description
        Previous value: -"List of network discovery rule IDs to get. If empty, returns all rules."New value: +"List of network discovery rule IDs to get. Omit to return all rules; an empty list matches none."
    • Changedevent_get4 fields changed
      • changedInput schema / properties / eventids / description
        Previous value: -"List of event IDs to get. If empty, returns all events."New value: +"List of event IDs to get. Omit to return all events; an empty list matches none."
      • changedInput schema / properties / groupids / description
        Previous value: -"List of host group IDs to get events from."New value: +"List of host group IDs to get events from. An empty list matches none."
      • changedInput schema / properties / hostids / description
        Previous value: -"List of host IDs to get events from."New value: +"List of host IDs to get events from. An empty list matches none."
      • changedInput schema / properties / objectids / description
        Previous value: -"List of trigger IDs to get events from."New value: +"List of trigger IDs to get events from. An empty list matches none."
    • Changedgraph_get3 fields changed
      • changedInput schema / properties / graphids / description
        Previous value: -"List of graph IDs to get. If empty, returns all graphs."New value: +"List of graph IDs to get. Omit to return all graphs; an empty list matches none."
      • changedInput schema / properties / hostids / description
        Previous value: -"List of host IDs to get graphs from."New value: +"List of host IDs to get graphs from. An empty list matches none."
      • changedInput schema / properties / templateids / description
        Previous value: -"List of template IDs to get graphs from."New value: +"List of template IDs to get graphs from. An empty list matches none."
    • Changedhost_get4 fields changed
      • changedInput schema / properties / groupids / description
        Previous value: -"List of host group IDs to filter by."New value: +"List of host group IDs to filter by. An empty list matches none."
      • changedInput schema / properties / hostids / description
        Previous value: -"List of host IDs to retrieve."New value: +"List of host IDs to retrieve. An empty list matches none."
      • changedInput schema / properties / proxyids / description
        Previous value: -"List of proxy IDs to filter by."New value: +"List of proxy IDs to filter by. An empty list matches none."
      • changedInput schema / properties / templateids / description
        Previous value: -"List of template IDs to filter by."New value: +"List of template IDs to filter by. An empty list matches none."
    • Changedhost_update3 fields changed
      • addedInput schema / properties / proxyid
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Proxy to monitor the host through. '0' moves monitoring back to the Zabbix server; blank leaves it unchanged."
        +}
      • addedInput schema / properties / templates
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Replaces ALL linked templates (e.g., [{'templateid': '10001'}]). Templates left out are unlinked; their items and triggers stay on the host."
        +}
      • addedInput schema / properties / templates_clear
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Templates to unlink AND clear - their items, triggers and collected data are deleted from the host."
        +}
    • Changedhostgroup_get2 fields changed
      • changedInput schema / properties / groupids / description
        Previous value: -"Group IDs."New value: +"Group IDs. An empty list matches none."
      • changedInput schema / properties / hostids / description
        Previous value: -"Host IDs."New value: +"Host IDs. An empty list matches none."
    • Changeditem_create1 field changed
      • changedInput schema / properties / value_type / description
        Previous value: -"Value type (0=float, 1=char, 3=unsigned, 4=text)."New value: +"Value type (0=float, 1=char, 2=log, 3=unsigned, 4=text)."
    • Changeditem_get5 fields changed
      • changedInput schema / properties / groupids / description
        Previous value: -"List of group IDs to get items from hosts in those groups."New value: +"List of group IDs to get items from hosts in those groups. An empty list matches none."
      • changedInput schema / properties / hostids / description
        Previous value: -"List of host IDs to get items from. Filters items by host."New value: +"List of host IDs to get items from. Filters items by host. An empty list matches none."
      • changedInput schema / properties / itemids / description
        Previous value: -"List of item IDs to get. If empty, returns all items."New value: +"List of item IDs to get. Omit to return all items; an empty list matches none."
      • changedInput schema / properties / templateids / description
        Previous value: -"List of template IDs to get items from those templates."New value: +"List of template IDs to get items from those templates. An empty list matches none."
      • addedInput schema / properties / webitems
        Added value: +{
        +  "default": false,
        +  "description": "If true, also return web scenario items (webitems=true), which Zabbix leaves out by default.",
        +  "type": "boolean"
        +}
    • Changeditemprototype_get3 fields changed
      • changedInput schema / properties / discoveryids / description
        Previous value: -"List of discovery rule IDs to get prototypes from."New value: +"List of discovery rule IDs to get prototypes from. An empty list matches none."
      • changedInput schema / properties / hostids / description
        Previous value: -"List of host IDs to get item prototypes from."New value: +"List of host IDs to get item prototypes from. An empty list matches none."
      • changedInput schema / properties / itemids / description
        Previous value: -"List of item prototype IDs to get."New value: +"List of item prototype IDs to get. An empty list matches none."
    • Changedmaintenance_get3 fields changed
      • changedInput schema / properties / groupids / description
        Previous value: -"List of host group IDs to get maintenance for."New value: +"List of host group IDs to get maintenance for. An empty list matches none."
      • changedInput schema / properties / hostids / description
        Previous value: -"List of host IDs to get maintenance for."New value: +"List of host IDs to get maintenance for. An empty list matches none."
      • changedInput schema / properties / maintenanceids / description
        Previous value: -"List of maintenance IDs to get. If empty, returns all maintenance periods."New value: +"List of maintenance IDs to get. Omit to return all maintenance periods; an empty list matches none."
    • Changedmaintenance_update1 field changed
      • addedInput schema / properties / timeperiods
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Replaces all of the maintenance's time periods, e.g. [{'timeperiod_type': 0, 'start_date': 1735689600, 'period': 3600}]. Omit to keep them; a one-off period created for the old window is moved along with it."
        +}
    • Changedmediatype_get1 field changed
      • changedInput schema / properties / mediatypeids / description
        Previous value: -"List of media type IDs to get. If empty, returns all media types."New value: +"List of media type IDs to get. Omit to return all media types; an empty list matches none."
    • Changedproblem_get4 fields changed
      • changedInput schema / properties / eventids / description
        Previous value: -"List of event IDs to get problems for. If empty, returns all problems."New value: +"List of event IDs to get problems for. Omit to return all problems; an empty list matches none."
      • changedInput schema / properties / groupids / description
        Previous value: -"List of host group IDs to get problems from."New value: +"List of host group IDs to get problems from. An empty list matches none."
      • changedInput schema / properties / hostids / description
        Previous value: -"List of host IDs to get problems from."New value: +"List of host IDs to get problems from. An empty list matches none."
      • changedInput schema / properties / objectids / description
        Previous value: -"List of trigger IDs to get problems from."New value: +"List of trigger IDs to get problems from. An empty list matches none."
    • Changedproxy_get1 field changed
      • changedInput schema / properties / proxyids / description
        Previous value: -"List of proxy IDs to get. If empty, returns all proxies."New value: +"List of proxy IDs to get. Omit to return all proxies; an empty list matches none."
    • Changedscript_get3 fields changed
      • changedInput schema / properties / groupids / description
        Previous value: -"List of group IDs to get scripts for hosts in those groups."New value: +"List of group IDs to get scripts for hosts in those groups. An empty list matches none."
      • changedInput schema / properties / hostids / description
        Previous value: -"List of host IDs to get scripts for."New value: +"List of host IDs to get scripts for. An empty list matches none."
      • changedInput schema / properties / scriptids / description
        Previous value: -"List of script IDs to get. If empty, returns all scripts."New value: +"List of script IDs to get. Omit to return all scripts; an empty list matches none."
    • Changedservice_get2 fields changed
      • changedInput schema / properties / parentids / description
        Previous value: -"List of parent service IDs to get child services from."New value: +"List of parent service IDs to get child services from. An empty list matches none."
      • changedInput schema / properties / serviceids / description
        Previous value: -"List of service IDs to get. If empty, returns all services."New value: +"List of service IDs to get. Omit to return all services; an empty list matches none."
    • Changedsla_get2 fields changed
      • changedInput schema / properties / serviceids / description
        Previous value: -"List of service IDs to get SLAs for."New value: +"List of service IDs to get SLAs for. An empty list matches none."
      • changedInput schema / properties / slaids / description
        Previous value: -"List of SLA IDs to get. If empty, returns all SLAs."New value: +"List of SLA IDs to get. Omit to return all SLAs; an empty list matches none."
    • Changedtemplate_get3 fields changed
      • addedInput schema / properties / groupids / description
        Added value: +"Return only templates in these template groups. An empty list matches none."
      • addedInput schema / properties / hostids / description
        Added value: +"Return only templates linked to these hosts. An empty list matches none."
      • changedInput schema / properties / templateids / description
        Previous value: -"List of template IDs to get. If empty, returns all templates.\n         Find template IDs with a search or from host associations."New value: +"List of template IDs to get. Omit to return all templates; an empty list matches none.\n         Find template IDs with a search or from host associations."
    • Changedtrigger_get4 fields changed
      • changedInput schema / properties / groupids / description
        Previous value: -"List of group IDs to get triggers from hosts in those groups."New value: +"List of group IDs to get triggers from hosts in those groups. An empty list matches none."
      • changedInput schema / properties / hostids / description
        Previous value: -"List of host IDs to get triggers from."New value: +"List of host IDs to get triggers from. An empty list matches none."
      • changedInput schema / properties / templateids / description
        Previous value: -"List of template IDs to get triggers from those templates."New value: +"List of template IDs to get triggers from those templates. An empty list matches none."
      • changedInput schema / properties / triggerids / description
        Previous value: -"List of trigger IDs to get. If empty, returns all triggers."New value: +"List of trigger IDs to get. Omit to return all triggers; an empty list matches none."
    • Changeduser_get1 field changed
      • changedInput schema / properties / userids / description
        Previous value: -"List of user IDs to get. If empty, returns all users."New value: +"List of user IDs to get. Omit to return all users; an empty list matches none."
    • Changedusermacro_get4 fields changed
      • changedInput schema / properties / globalmacroids / description
        Previous value: -"List of global macro IDs to get."New value: +"List of global macro IDs to get. An empty list matches none."
      • changedInput schema / properties / hostids / description
        Previous value: -"List of host IDs to get macros from."New value: +"List of host IDs to get macros from. An empty list matches none."
      • changedInput schema / properties / hostmacroids / description
        Previous value: -"List of host macro IDs to get."New value: +"List of host macro IDs to get. An empty list matches none."
      • changedInput schema / properties / templateids / description
        Previous value: -"List of template IDs to get macros from."New value: +"List of template IDs to get macros from. An empty list matches none."
  2. 39 tool updatesv0.6.0
    • Changedaction_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"actionid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedconfiguration_import3 fields changed
      • addedInput schema / properties / delete_missing
        Added value: +{
        +  "default": false,
        +  "description": "If true, the default rules also delete objects absent from the import. Ignored when 'rules' is given.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / format_type / description
        Previous value: -"Import format: 'json' or 'xml'."New value: +"Import format: 'json', 'xml' or 'yaml'."
      • addedInput schema / properties / rules
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Per-object import rules, e.g. {'hosts': {'createMissing': true, 'updateExisting': true}}. Defaults to creating and updating every object type, without deleting anything."
        +}
    • Changeddiscoveryrule_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"itemid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changeddrule_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"druleid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedevent_acknowledge4 fields changed
      • changedInput schema / properties / action / default
        Previous value: -1New value: +2
      • changedInput schema / properties / action / description
        Previous value: -"Action: 1=ack, 2=close, 4=add message, etc."New value: +"Bitmask: 1=close problem, 2=acknowledge, 4=add message, 8=change severity, 16=unacknowledge, 32=suppress, 64=unsuppress."
      • addedInput schema / properties / eventids / minItems
        Added value: +1
      • changedInput schema / properties / message / description
        Previous value: -"Optional message to add when acknowledging (e.g., \"Working on this\", \"Will restart service\")."New value: +"Message to add to the event. The 'add message' flag (4) is added to\n     'action' automatically when this is set - Zabbix otherwise accepts\n     the call and stores an empty message, losing the text silently."
    • Changedevent_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"eventid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedgraph_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"graphid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedhistory_get6 fields changed
      • addedInput schema / properties / history / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / history / default
        Previous value: -0New value: +null
      • changedInput schema / properties / history / description
        Previous value: -"History type: 0=float, 1=char, 2=log, 3=unsigned, 4=text."New value: +"Storage type to read: 0=float, 1=char, 2=log, 3=unsigned, 4=text. Must match the items' value_type or Zabbix returns nothing. Detected from the items when omitted."
      • removedInput schema / properties / history / type
        Removed value: -"integer"
      • addedInput schema / properties / itemids / minItems
        Added value: +1
      • removedInput schema / properties / offset
        Removed value: -{
        -  "default": 0,
        -  "description": "Number of results to skip (for pagination). Requires sortfield to be set.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
    • Changedhost_create1 field changed
      • changedInput schema / properties / params / description
        Previous value: -"Raw params dict for bulk operations. If provided, individual parameters are ignored."New value: +"Raw host.create params, for fields the arguments below do not cover. Describes a single host, not a batch. If provided, individual parameters are ignored."
    • Changedhost_delete1 field changed
      • addedInput schema / properties / hostids / minItems
        Added value: +1
    • Changedhost_get7 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return. Default is 100."New value: +"Page size - maximum number of results to return. Default is 100."
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching hosts to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • changedInput schema / properties / select_groups / description
        Previous value: -"If true, include the host groups each host belongs to in the response (selectGroups=extend)."New value: +"If true, include the host groups each host belongs to in the response (selectHostGroups=extend)."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"hostid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by - 'hostid', 'host', 'name' or 'status'. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedhostgroup_delete1 field changed
      • addedInput schema / properties / groupids / minItems
        Added value: +1
    • Changedhostgroup_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"groupid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changeditem_create2 fields changed
      • changedInput schema / properties / delay / description
        Previous value: -"Collection interval. Default '1m'. Use time suffixes like '30s', '5m', '1h'."New value: +"Update interval. Must be '0' for trapper (2) and dependent (18) items."
      • addedInput schema / properties / interfaceid
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Host interface to poll through. Required for Zabbix agent (0), SNMP agent (20), SNMP trap (17), IPMI (12) and JMX (16) items on a host."
        +}
    • Changeditem_delete1 field changed
      • addedInput schema / properties / itemids / minItems
        Added value: +1
    • Changeditem_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"itemid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changeditemprototype_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"itemid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedmaintenance_create1 field changed
      • changedInput schema / properties / timeperiods / description
        Previous value: -"Optional list of time period objects for recurring maintenance."New value: +"When maintenance actually runs, e.g. [{'timeperiod_type': 0, 'start_date': 1735689600, 'period': 3600}]. Required by Zabbix; if omitted, a single one-off period covering active_since to active_till is sent."
    • Changedmaintenance_delete1 field changed
      • addedInput schema / properties / maintenanceids / minItems
        Added value: +1
    • Changedmaintenance_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"maintenanceid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedmediatype_get6 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • changedInput schema / properties / search / description
        Previous value: -"Dictionary with search criteria like {'description': 'email'}."New value: +"Dictionary with search criteria like {'name': 'Email'}. Zabbix 5.4\n    renamed the media type 'description' field to 'name'."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"mediatypeid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedproblem_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"eventid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedproxy_delete1 field changed
      • addedInput schema / properties / proxyids / minItems
        Added value: +1
    • Changedproxy_get6 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • changedInput schema / properties / search / description
        Previous value: -"Dictionary with search criteria like {'host': 'proxy1'} for name matching."New value: +"Dictionary with search criteria like {'name': 'proxy1'}. Zabbix 7.0\n    renamed the proxy 'host' field to 'name' and rejects the old one."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"proxyid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedscript_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"scriptid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedservice_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"serviceid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedsla_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"slaid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedtemplate_create1 field changed
      • changedInput schema / properties / groups / description
        Previous value: -"Host groups."New value: +"Template groups the template belongs to, e.g. [{'groupid': '10'}]. Since Zabbix 6.2 these are template groups, not host groups."
    • Changedtemplate_delete1 field changed
      • addedInput schema / properties / templateids / minItems
        Added value: +1
    • Changedtemplate_get6 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • changedInput schema / properties / select_groups / description
        Previous value: -"If true, include the template groups the templates belong to (selectGroups=extend)."New value: +"If true, include the template groups the templates belong to (selectTemplateGroups=extend)."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"host"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changedtrend_get4 fields changed
      • addedInput schema / properties / itemids / minItems
        Added value: +1
      • removedInput schema / properties / offset
        Removed value: -{
        -  "default": 0,
        -  "description": "Number of results to skip (for pagination). Requires sortfield to be set.",
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedInput schema / properties / sortfield
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Field to sort by."
        -}
      • removedInput schema / properties / sortorder
        Removed value: -{
        -  "default": "ASC",
        -  "description": "Sort direction - 'ASC' or 'DESC'.",
        -  "type": "string"
        -}
    • Changedtrigger_delete1 field changed
      • addedInput schema / properties / triggerids / minItems
        Added value: +1
    • Changedtrigger_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"triggerid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changeduser_create1 field changed
      • addedInput schema / properties / roleid
        Added value: +{
        +  "default": "1",
        +  "description": "ID of the user's role, which is what grants permissions. Defaults to '1' (User role); a user created without one gets roleid 0 and cannot log in.",
        +  "type": "string"
        +}
    • Changeduser_delete1 field changed
      • addedInput schema / properties / userids / minItems
        Added value: +1
    • Changeduser_get6 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • changedInput schema / properties / search / description
        Previous value: -"Dictionary with search criteria like {'alias': 'admin'} for username matching."New value: +"Dictionary with search criteria like {'username': 'admin'}. Zabbix 5.4\n    renamed 'alias' to 'username' and rejects the old name."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"userid"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. A deterministic sort is required for paging to be consistent."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
    • Changeduser_update2 fields changed
      • addedInput schema / properties / roleid
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "ID of the user's role, which is what grants permissions. Roles are objects in Zabbix 5.2+; the old numeric user 'type' no longer exists."
        +}
      • removedInput schema / properties / type_
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "User type: 1=Zabbix user, 2=Zabbix admin, 3=Zabbix super admin."
        -}
    • Changedusermacro_delete1 field changed
      • addedInput schema / properties / hostmacroids / minItems
        Added value: +1
    • Changedusermacro_get5 fields changed
      • changedInput schema / properties / offset / description
        Previous value: -"Number of results to skip (for pagination). Requires sortfield to be set."New value: +"Number of matching records to skip. Use with 'limit' to page through results; check 'has_more' and 'total' in the response."
      • removedInput schema / properties / sortfield / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / sortfield / default
        Previous value: -nullNew value: +"macro"
      • changedInput schema / properties / sortfield / description
        Previous value: -"Field to sort by."New value: +"Field to sort by. usermacro.get only allows 'macro'."
      • addedInput schema / properties / sortfield / type
        Added value: +"string"
  3. 53 tool updatesv0.5.3
    • First observedaction_get
    • First observedapi_version
    • First observedconfiguration_export
    • First observedconfiguration_import
    • First observeddiscoveryrule_get
    • First observeddrule_get
    • First observedevent_acknowledge
    • First observedevent_get
    • First observedgraph_get
    • First observedhistory_get
    • First observedhost_create
    • First observedhost_delete
    • First observedhost_get
    • First observedhost_update
    • First observedhostgroup_create
    • First observedhostgroup_delete
    • First observedhostgroup_get
    • First observedhostgroup_update
    • First observeditem_create
    • First observeditem_delete
    • First observeditem_get
    • First observeditem_update
    • First observeditemprototype_get
    • First observedmaintenance_create
    • First observedmaintenance_delete
    • First observedmaintenance_get
    • First observedmaintenance_update
    • First observedmediatype_get
    • First observedproblem_get
    • First observedproxy_create
    • First observedproxy_delete
    • First observedproxy_get
    • First observedproxy_update
    • First observedscript_execute
    • First observedscript_get
    • First observedservice_get
    • First observedsla_get
    • First observedtemplate_create
    • First observedtemplate_delete
    • First observedtemplate_get
    • First observedtemplate_update
    • First observedtrend_get
    • First observedtrigger_create
    • First observedtrigger_delete
    • First observedtrigger_get
    • First observedtrigger_update
    • First observeduser_create
    • First observeduser_delete
    • First observeduser_get
    • First observeduser_update
    • First observedusermacro_create
    • First observedusermacro_delete
    • First observedusermacro_get

TDQS

B3.3/5.0

Scored across 53 tools

Disambiguation4/5

Most tools map clearly to a distinct Zabbix resource and action, with descriptions distinguishing similar resources such as items vs. item prototypes and LLD discovery rules vs. network discovery rules. A few pairs (event_get vs. problem_get, discoveryrule_get vs. drule_get) still require careful reading, preventing a perfect score.

Naming Consistency4/5

The set overwhelmingly follows a predictable snake_case resource_action pattern (host_get, host_create, host_update, host_delete, item_get, etc.). Minor deviations exist, such as api_version and the abbreviated drule_get alongside discoveryrule_get, but overall naming is consistent.

Tool Count2/5

At 53 tools, the surface is far above the typical well-scoped range and is heavy for an agent to navigate reliably. While Zabbix is a broad domain, many tools could be consolidated or scoped into separate server configurations.

Completeness3/5

Core host, host group, template, item, trigger, user, proxy, and maintenance lifecycles have full CRUD coverage, and many read operations are present. However, significant resources such as actions, media types, graphs, services, SLAs, item prototypes, and discovery rules are read-only or lack update/delete operations, leaving notable gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables users to monitor and query Zabbix infrastructure through natural language by providing access to current problems, active triggers, and system health status via the Zabbix API.
    -
  • A
    license
    C
    quality
    C
    maintenance
    Exposes the complete Zabbix API functionality through the Model Context Protocol, mapping API methods to tools for managing hosts, triggers, and monitoring data. It enables seamless integration and control of Zabbix monitoring environments via natural language interfaces.
    100
    25 PyPI
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Official initMAX MCP server exposing the Zabbix API to AI assistants for monitoring and managing hosts, problems, templates, dashboards, and multiple Zabbix instances. Includes correlated monitoring views, graphs, anomaly detection, capacity forecasts, and PDF reports, with scoped tokens, read-only modes, OAuth 2.1, and an admin portal. Supports Streamable HTTP, SSE, and stdio.
    86
    241
    AGPL 3.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Exposes Zabbix monitoring capabilities as callable tools for AI agents and MCP-compatible clients.
    -