Skip to main content
Glama
AutomoxCommunity

Automox MCP Server

Automox MCP Server

CI Security Scans Publish Release PyPI version

The official MCP server for Automox. Talk to your Automox console using natural language — this MCP server connects AI assistants like Claude to your Automox environment so you can manage devices, check compliance, run policies, and more, just by asking.

You:   "Are we ready for Patch Tuesday?"
Claude: Here's your readiness summary — 3 devices need patches,
        2 approvals are pending, and your patch policies run tonight at 2 AM...
IMPORTANT

For bug reports or feature requests, usehelp.automox.com or your typical escalation paths.

CAUTION

AI assistants can make mistakes. Responses produced by the MCP server may be incorrect or incomplete. If you see this happening consistently, please let us know.

Table of Contents

Related MCP server: BeyondTrust EPM MCP Server

What's New in 3.0

Automox MCP Server 3.0 adds a centrally hosted option to replace the legacy self-hosted solution. The hosted server supports all the functionality you're already using, plus one new capability.

  • Hosted server: Automox now runs and maintains a version of this same server for you. Nothing to install, connect your AI client to https://console.automox.com/api/mcp with your existing API key. See Self-Hosted vs. Hosted below.

  • Policy Catalog templates (hosted only): The hosted service can search Automox's library of best-practice policy templates and create a policy directly from one, so you have a starting point without building a policy from scratch. This is separate from asking about the policies already deployed in your org, this is Automox's own recommended template library.

  • No capability loss: The hosted service exposes the same tool coverage you already have through this repository.

  • No forced migration: This self-hosted server and the Claude Desktop extension keep working exactly as they do today. Moving to the hosted service is currently optional (but recommended), see Migrating to the Hosted Server.

  • Auth is unchanged for now: Both versions use the same Automox API key. SSO is planned for a future release.

Self-Hosted vs. Hosted

Both run the same open-source server code. The difference is who installs and runs it, and one capability that's currently hosted-only.

Self-hosted (this repository)

Hosted (MCP Server 3.0)

Install

You install and keep it updated (PyPI, uvx, the Claude Desktop extension, or via Claude's Connectors Directory)

Nothing to install, Automox runs it

Where it runs

Your machine

Automox's multi-tenant service

Auth

Your Automox API key

Your Automox API key (same model, for now)

Claude Desktop

Works today via the one-click extension, installable from GitHub Releases or Claude's Connectors Directory

Not yet, Claude Desktop's built-in custom connector requires OAuth, which the hosted service doesn't support yet

Other clients (Claude Code, Cursor, MCP Inspector, etc.)

Works via your local config

Works today over HTTP with a Bearer token header

Good fit if

You want to run your own infrastructure, or you use Claude Desktop today

You want zero maintenance and use a client that supports custom HTTP headers

For self-hosted setup, see Quick Start below. For the hosted server, see Migrating to the Hosted Server, which also covers connecting fresh with no prior install.

Quick Start

1. Get your Automox credentials

You need three values from the Automox Console:

Value

Where to find it

API Key

Use an org-scoped key — zone Settings > Secrets & Keys > Add API Key (docs); see key types below

Account UUID

Settings > Secrets & Keys (shown on the page)

Org ID

The numeric ID in the URL when viewing your organization

Automox has two API key types, and the difference matters here:

Org-scoped key (recommended)

Global / account key

Scope

One organization — the zone it was created in

Every org in the account; inherits the key owner's role per org

Created at

Zone Settings > Secrets & Keys

Account Global Access Management > Keys (Full Administrator)

Tool coverage

All tools (verified: works immediately on the search family)

Unreliable on the Advanced Device Search familyadvanced_device_search, device_search_typeahead, saved-search create/read/update/delete, list_searches_for_device, get_device_assignments — observed returning 403 in most orgs even for full administrators, while working in others; the upstream authorization behavior is inconsistent and the mechanism is unconfirmed

Symptom: 403 on the search tools while reads work everywhere else usually means the key, not your permissions — switch to an org-scoped key for the target org. API Key and Account UUID are always required. Org ID is recommended but optional — some tools that don't require org context will work without it.

2. Create a .env file

AUTOMOX_API_KEY=your-api-key
AUTOMOX_ACCOUNT_UUID=your-account-uuid
AUTOMOX_ORG_ID=your-org-id

3. Connect to your AI assistant

Claude Desktop (recommended) — one-click MCPB install:

New: Automox MCP is now also listed directly in Claude's Connectors Directory. Open Claude Desktop, go to Settings > Connectors, and search "Automox" to connect without leaving the app. The manual steps below still work too, nothing about them has changed.

  1. Download the latest automox-mcp-<version>.mcpb from the GitHub Releases page.

  2. Open Claude Desktop → Settings → Extensions.

  3. Drag the .mcpb file into the Extensions window.

  4. Paste your API key, Account UUID, and (optionally) Org ID into the prompts.

No .env file, no terminal — credentials are stored in Claude Desktop's secure config. The bundle pulls the matching automox-mcp release from PyPI on first run.

Claude Code (CLI):

claude mcp add automox-mcp uvx -- --env-file /path/to/.env automox-mcp

Cursor / any other MCP client — add to your MCP config:

{
  "mcpServers": {
    "automox-mcp": {
      "command": "uvx",
      "args": ["--env-file", "/path/to/.env", "automox-mcp"]
    }
  }
}

That's it. Start asking questions.

What Can I Ask?

The server exposes 130+ tools across devices, policies, patches, groups, webhooks, worklets, vulnerability sync, maintenance windows, and more. You don't need to know the tool names — just describe what you want:

Ask this

What happens

"Are we ready for Patch Tuesday?"

Checks pending patches, approvals, and policy schedules

"What is our compliance posture?"

Returns compliance rates, non-compliant devices, and health breakdown

"Give me the full profile for the Caldera server"

Combines device details, inventory, packages, and policy status

"What devices need attention?"

Surfaces devices flagged for immediate action

"Reboot the device 'Testing box'"

Searches for the device and issues a reboot command

"Create a patch policy for Firefox targeting the 'MCP testing' group"

Creates the policy with sensible defaults

"What did Mark Hansen do in Automox last week?"

Queries the audit trail across the date range

"Find all Windows devices not seen in 30 days"

Uses advanced device search with structured queries

"Show me vulnerability remediation status"

Lists action sets with issues, solutions, and progress

"Search the worklet catalog for USB security"

Browses community worklets with evaluation/remediation code

For the full list of tools, parameters, and MCP resources, see the Tool Reference.

Tip: You can also ask the server itself — the discover_capabilities tool returns all available tools organized by domain.

Configuration

Environment Variables

Applies only to self-hosted 2.x servers. Not applicable to the hosted 3.0+ server.

Variable

Required

Default

Description

AUTOMOX_API_KEY

Yes

Automox API key (org-scoped recommended — see key types)

AUTOMOX_ACCOUNT_UUID

Yes

Account UUID from Secrets & Keys

AUTOMOX_ORG_ID

Recommended

Numeric organization ID (required by most tools)

AUTOMOX_MCP_READ_ONLY

No

false

Disable all write operations (85 of 133 tools remain)

AUTOMOX_MCP_ALLOW_APPLY_REMEDIATION_ACTIONS

No

false

Opt in to the apply_remediation_actions tool, which patches/runs worklets on endpoints immediately. Off by default even in write mode.

AUTOMOX_MCP_ALLOW_SPLASHTOP_BULK_INSTALL_UNINSTALL

No

false

Opt in to the splashtop_bulk_install_uninstall tool, which installs/uninstalls the Splashtop client across an entire server group in one call. Off by default even in write mode.

AUTOMOX_MCP_ALLOW_DELETE_DEVICE

No

false

Opt in to the delete_device tool, which permanently deletes a device record and its history (DELETE /servers/{id}). Irreversible and not reconstructable through the MCP. Off by default even in write mode.

AUTOMOX_MCP_ALLOW_UPLOAD_POLICY_FILE

No

false

Opt in to the upload_policy_file tool, which uploads a local installer file to a Required Software policy. Reads from the local filesystem, so it also requires AUTOMOX_MCP_UPLOAD_ALLOWED_DIRS and only works on the stdio (local) transport. Off by default even in write mode.

AUTOMOX_MCP_UPLOAD_ALLOWED_DIRS

No

Comma-separated absolute directories upload_policy_file may read installers from. Required for that tool to register; paths are canonicalized and must resolve inside an allowed dir.

AUTOMOX_MCP_UPLOAD_MAX_BYTES

No

10737418240

Max installer size for upload_policy_file (default 10 GB, Automox's ceiling).

AUTOMOX_MCP_UPLOAD_TIMEOUT_SECONDS

No

3600

Upload read/write timeout for upload_policy_file (large installers need more than the default request timeout).

AUTOMOX_MCP_MODULES

No

all

Comma-separated list of modules to load (see below)

AUTOMOX_MCP_TOKEN_BUDGET

No

4000

Max estimated tokens per response before truncation

AUTOMOX_MCP_SANITIZE_RESPONSES

No

true

Sanitize API data to mitigate prompt injection

AUTOMOX_MCP_TOOL_PREFIX

No

Prefix all tool names (e.g., automox) to prevent cross-server collisions

AUTOMOX_MCP_LOG_FORMAT

No

text

Log format: text or json (structured JSON for SIEM integration)

AUTOMOX_MCP_TRANSPORT

No

stdio

Transport: stdio, http, sse, or streamable-http

AUTOMOX_MCP_HOST

No

127.0.0.1

Bind address for HTTP/SSE

AUTOMOX_MCP_PORT

No

8000

Bind port for HTTP/SSE

AUTOMOX_MCP_API_KEYS

No

Comma-separated MCP endpoint API keys for HTTP/SSE Bearer-token auth (e.g., key1,label:key2)

AUTOMOX_MCP_API_KEY_FILE

No

Path to a file containing MCP endpoint API keys (one per line)

AUTOMOX_MCP_OAUTH_ISSUER

No

OIDC issuer URL for JWT auth (e.g., https://auth.example.com/realms/main)

AUTOMOX_MCP_OAUTH_JWKS_URI

No

JWKS endpoint for JWT key rotation (auto-derived from issuer if omitted)

AUTOMOX_MCP_OAUTH_AUDIENCE

When JWT auth

Expected JWT audience claim (prevents token passthrough); required when AUTOMOX_MCP_OAUTH_ISSUER is set

AUTOMOX_MCP_OAUTH_SERVER_URL

No

Canonical server URL; enables RFC 9728 Protected Resource Metadata

AUTOMOX_MCP_OAUTH_SCOPES

No

Comma-separated required OAuth scopes

AUTOMOX_MCP_ALLOWED_ORIGINS

No

Extra allowed Origin headers for DNS rebinding protection (comma-separated)

AUTOMOX_MCP_ALLOWED_HOSTS

No

Extra allowed Host headers for DNS rebinding protection (comma-separated)

AUTOMOX_MCP_DNS_REBINDING_PROTECTION

No

true

Set to false to disable DNS rebinding protection (not recommended)

AUTOMOX_MCP_ALLOW_REMOTE_BIND

No

false

Allow binding to non-loopback addresses (required for 0.0.0.0 or external IPs)

Read-Only Mode

AUTOMOX_MCP_READ_ONLY=true

Disables all write operations. Only read-only tools are registered (85 of 133). Useful for auditing and monitoring.

Modular Loading

Load only the tool modules you need:

AUTOMOX_MCP_MODULES=devices,policies

Available modules: audit, audit_v2, devices, device_search, policies, policy_history, users, groups, events, reports, packages, webhooks, worklets, data_extracts, vuln_sync, compound, policy_windows

Both settings can be combined:

AUTOMOX_MCP_READ_ONLY=true
AUTOMOX_MCP_MODULES=devices,policies

HTTP Transport

For non-stdio deployments:

uvx --env-file .env automox-mcp --transport http --host 127.0.0.1 --port 8000

Endpoint Authentication

When deploying over HTTP or SSE, you can require authentication on the MCP endpoint (separate from the Automox API key). Two strategies are supported:

Static API keys (simple):

automox-mcp --generate-key                         # generate a key
export AUTOMOX_MCP_API_KEYS="amx_mcp_a1b2c3..."    # or use a key file

OAuth 2.1 / JWT (enterprise IdP integration):

export AUTOMOX_MCP_OAUTH_ISSUER="https://auth.example.com/realms/main"
export AUTOMOX_MCP_OAUTH_AUDIENCE="https://mcp.example.com"
export AUTOMOX_MCP_OAUTH_SERVER_URL="https://mcp.example.com"  # enables RFC 9728 metadata

Clients must include Authorization: Bearer <token> on every request. Unauthenticated requests receive 401 Unauthorized with proper WWW-Authenticate headers. No effect on stdio transport.

Security

The Automox MCP server is designed for enterprise deployment with defense-in-depth security controls.

Highlights:

  • Read-only mode (AUTOMOX_MCP_READ_ONLY) disables all 48 write tools

  • Module filtering (AUTOMOX_MCP_MODULES) for least-privilege tool loading

  • Correlation IDs on every tool call, forwarded to Automox API as X-Correlation-ID

  • Rate limiting (30 calls/60s) with token budget estimation and auto-truncation

  • API key isolation — stored as private attribute with per-request auth injection (no header storage)

  • Generic error responses — no internal paths, connection strings, or API keys in error output

  • Prompt injection mitigation — API response sanitization with Unicode normalization, homoglyph defense, HTML tag/script stripping, and reference-style markdown stripping

  • Webhook secret handling — secrets stripped from idempotency cache after creation

  • Structured JSON logging (AUTOMOX_MCP_LOG_FORMAT=json) for SIEM integration

  • Tool name prefixing (AUTOMOX_MCP_TOOL_PREFIX) to prevent cross-server collisions

  • Sigstore-signed releases with CycloneDX SBOM

  • SSRF prevention — webhook URLs validated against private/loopback IPs and cloud metadata endpoints

  • MCP endpoint authentication — static API keys or OAuth 2.1/JWT with audience binding and RFC 9728 Protected Resource Metadata

  • DNS rebinding protection — Origin and Host header validation on all HTTP/SSE connections per the MCP transport spec

  • Security response headersX-Content-Type-Options, X-Frame-Options, CSP, Cache-Control: no-store, Strict-Transport-Security on all HTTP responses

  • Authentication rate limiting — blocks IPs after repeated auth failures to mitigate brute-force attacks

  • Remote bind protection — non-loopback HTTP/SSE binding requires explicit --allow-remote-bind opt-in

  • MCP Tool Annotations on all 130+ tools — readOnlyHint, destructiveHint, idempotentHint, and openWorldHint per the MCP Protocol specification, enabling client-side confirmation dialogs and safety guardrails

  • Interactive MCP Apps (io.modelcontextprotocol/ui) — inline review/approval surfaces for consequential flows: compliance triage, patch approval, policy blast-radius, remediation apply, and RBAC access certification. Apps-capable hosts render them inline; other hosts degrade gracefully to the structured tool output. Write-flow Apps drive the existing gated tools through the host's confirmation — no new tools, no new gates — and ship under the host's deny-all CSP (self-contained, no external/CDN loads)

  • 61 security hardening items (V-001 through V-182, S-001 through S-006) documented in CHANGELOG and SECURITY.md

Capability model. The server wraps 100% of the published Automox Console API and Webhooks API, with a single deliberate exception — secret-exposing endpoints are never wrapped (API-key decrypt, password-setting). Every destructive operation is either ask-first (host confirmation) or gated behind a default-off env flag. Concretely, three categorical rules:

  • Secrets are never handled — the server never returns secret material and never lets the model set it. Credentials enter only via environment/config; decrypt endpoints are not wrapped, password-setting is excluded, and secret fields are redacted from every projection. This is the only intentional omission.

  • Destructive operations are two-tier. Single-target, recoverable actions are ask-first (destructiveHint: true, surfaced as a host confirmation dialog, disabled entirely by read-only mode). Operations where per-call confirmation can't protect you — fleet-scale, self-lockout, or arbitrary model-authored code execution — are gated behind explicit, default-off env flags (AUTOMOX_MCP_ALLOW_APPLY_REMEDIATION_ACTIONS, AUTOMOX_MCP_ALLOW_SPLASHTOP_BULK_INSTALL_UNINSTALL, AUTOMOX_MCP_ALLOW_DELETE_DEVICE). Device deletion is gated, not omitted.

The full coverage map, the gating principle, and every intentional omission are documented in API Coverage & Intentional Omissions.

For vulnerability reporting and the full threat model, see SECURITY.md. For deployment hardening (containers, Kubernetes, MCP gateways, TLS, authentication), see the Deployment Security Guide. Security posture is benchmarked against the Wiz MCP Security Best Practices cheat sheet.

Note: For network-accessible deployments, enable endpoint authentication (static keys via AUTOMOX_MCP_API_KEYS or JWT via AUTOMOX_MCP_OAUTH_ISSUER) and/or place the server behind an MCP gateway or authenticating reverse proxy. TLS termination is the deployer's responsibility.

Privacy Policy

The Automox MCP server acts as a stateless proxy between your AI assistant and the Automox API.

Data collection: The server does not collect, store, or transmit any user data beyond what is required to fulfill API requests to the Automox platform. API credentials are read from environment variables at startup and used solely for authenticating requests to the Automox API.

Data usage: All data retrieved from the Automox API is returned directly to the AI assistant that initiated the request. The server performs response sanitization (Unicode normalization, HTML stripping) for prompt injection defense, but does not analyze, aggregate, or repurpose API data for any other purpose.

Third-party sharing: The server does not share data with any third parties. It communicates exclusively with the Automox API (console.automox.com) using the credentials you provide. No telemetry, analytics, or usage data is sent to the server authors or any other service.

Data retention: The server retains no persistent data between sessions. In-memory caches (idempotency keys, rate-limit counters) are cleared when the process exits. Structured logs, when enabled, are written to stderr and are the deployer's responsibility to manage and retain.

See the Automox MCP Server Privacy Policy for the full privacy policy (mirrored in PRIVACY.md).

Alternative Installation

The Quick Start above uses uvx which requires no installation. If you prefer a persistent install:

# Using uv
uv tool install automox-mcp

# Using pip
pip install automox-mcp

Then set the environment variables in your shell and run automox-mcp.

Updating

If you already have the server installed, update to the latest version:

# uvx (Quick Start method) — force a cache refresh
uvx --refresh automox-mcp

# uv tool install
uv tool upgrade automox-mcp

# pip
pip install --upgrade automox-mcp

Note: uvx automatically refreshes its cache roughly every 7 days, so most users will pick up new releases without action. Run uvx --refresh to get the latest immediately.

Migrating to the Hosted Server

Automox MCP Server 3.0 (hosted) runs the same tools as this repository, just without a local install to maintain. Migrating is two steps: remove your local server, then connect to the hosted one. There's no in-place upgrade and nothing to convert, no config file to move and no data to port. If you've never run the Automox MCP server before, skip straight to Step 2, there's no package to install.

Step 1: Remove the local server

Claude Code:

claude mcp remove automox

Cursor or other config-based clients: remove the automox-mcp entry from your MCP config file. Claude Desktop extension removal steps are still being finalized and will be added here once confirmed. In the meantime, it's safe to leave the extension installed and running while you set up and test the hosted connection separately.

Step 2: Connect to the hosted server

Claude Code:

claude mcp add --transport http automox \
  https://console.automox.com/api/mcp \
  --header "Authorization: Bearer YOUR_AUTOMOX_API_KEY"

Open a new session and ask something like, "What's our compliance posture?"

MCP Inspector (for evaluation or debugging):

npx @modelcontextprotocol/inspector

In the UI: Transport Type = Streamable HTTP, URL = https://console.automox.com/api/mcp, Authentication → Bearer Token = your API key (paste the raw key). Click Connect, then Tools → List Tools.

Other MCP clients (Cursor and similar), any client that supports streamable HTTP with custom headers:

URL:      https://console.automox.com/api/mcp
Header:   Authorization: Bearer YOUR_AUTOMOX_API_KEY

Your permissions in Automox apply exactly as they do in the console and API. The MCP acts as you. Your self-hosted installation will keep working during a transition period — there's no rush to switch.

Troubleshooting

Symptom

Cause / fix

Adding the hosted server fails in Claude Desktop's "custom connector" screen

Claude Desktop's built-in custom connector only supports signing in with OAuth. The hosted service doesn't have OAuth yet, it only accepts an API key, so pasting the hosted URL in there will fail. This is a different thing from the Automox MCP desktop extension: install that instead (one-click .mcpb install, also in Claude's Connectors Directory). It runs the server locally on your machine and connects using the same API key you already have, so you still get full functionality in Claude Desktop, just through the extension rather than the custom connector screen.

401 Unauthorized

The Authorization: Bearer header is missing or the key is wrong. Send the key exactly as Bearer <key>.

"OAuth Authentication Failed" or an error about invalid JSON

Your client fell back to OAuth discovery after a 401. Fix the Bearer header rather than trying a custom header name.

403 Forbidden on some tools

Check your key's scope. Use an org-scoped key. Some user-management features require admin scopes.

Answers look off

AI assistants can make mistakes. Verify important results in the Automox Console before acting on them.

Frequently Asked Questions

Does my self-hosted 2.x server stop working? No. Your existing self-hosted installation continues to work, there's no change to it or to how you get it. The hosted service is simply a new option if you'd like to use it, on your own timeline, with no requirement to switch.

Do I lose any capabilities by moving to the hosted service? No. The hosted service runs the same tools you already have access to today.

Will I need to switch to SSO? Not yet. The hosted service uses the same API key model you use today. SSO and per-user authentication are planned for a future release, and we'll provide clear migration guidance when that happens.

I use Claude Desktop. What should I do? Keep using the Automox MCP desktop extension for now. Claude Desktop's native connector option requires OAuth, which the hosted service doesn't support yet.

Need help? Reach out through help.automox.com.

Development

git clone https://github.com/AutomoxCommunity/automox-mcp.git
cd automox-mcp
uv python install
uv sync --python 3.13 --dev

Testing

Interactive debugging with MCP Inspector:

fastmcp dev

Run unit tests:

uv run --python 3.13 --dev pytest

Run production smoke tests (requires Automox credentials):

uv run python tests/smoke_production.py

MCP Scanner

Static analysis with Cisco's MCP Scanner:

mcp-scanner \
  --analyzers yara \
  --format summary \
  stdio \
  --stdio-command uv \
  --stdio-arg run \
  --stdio-arg automox-mcp \
  --stdio-env AUTOMOX_API_KEY=test-api-key \
  --stdio-env AUTOMOX_ACCOUNT_UUID=test-account \
  --stdio-env AUTOMOX_ORG_ID=1 \
  --stdio-env AUTOMOX_MCP_SKIP_DOTENV=1

Versioning

Follows Semantic Versioning. Update pyproject.toml, commit, tag (e.g., v0.1.0), and push — the release workflow publishes to PyPI automatically.

License

MIT License. See LICENSE.

Support

The official Automox MCP server. For questions, bugs, or feature requests use help.automox.com.

To report a security vulnerability, see SECURITY.md — please do not open a public issue.

Available Tools

122 tools
apply_policy_changesApply Policy ChangesC
Destructive

Create or update Automox policies with automatic format correction.

ParametersJSON Schema
NameRequiredDescriptionDefault
previewNo
operationsYes
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metadataNoPagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already indicate destructive behavior (destructiveHint: true). The description adds that it performs automatic format correction, but does not detail what that entails, what gets destroyed, or any authentication requirements. It adds some context but not extensive.

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 description is a single sentence, concise but under-specified. It conveys the core action but could include more detail without being verbose. The structure is fine but does not earn extra points for completeness.

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

Completeness2/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, the description still lacks important context like error handling, idempotency, scope of operation, and what 'automatic format correction' implies. It is not complete for a mutation tool with potential destructive effects.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the parameters (operations, preview, request_id). The agent must rely on parameter names alone, which are somewhat self-explanatory but lack specifics about the structure of operations objects or the effect of preview.

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 it creates or updates Automox policies, with automatic format correction. It distinguishes from read tools and other policy manipulation tools like clone_policy, delete_policy. However, it doesn't specify if it applies to all policies or a subset.

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 is provided on when to use this tool versus alternatives. There is no mention of prerequisites, when to use preview mode, or when to prefer other policy tools like create_policy or update_policy.

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

audit_events_ocsfAudit Events OCSFA
Read-onlyIdempotent

Query OCSF-formatted audit events from the Automox Audit Service v2. Filter by date (required) and event type name. The category_name filter is applied client-side against the event type_name prefix: the upstream events do NOT carry a category_name field, only an integer category_uid that maps 1:N across categories, so category filtering matches the type_name label prefix (authentication/entity_management/web_resource_activity are live-verified prefixes; account_change/user_access are spec-derived and unverified live). An unmappable category token leaves results unfiltered and sets metadata.applied_filters.category_name_matched=false (so an empty result is never mistaken for 'no activity'); metadata.events_before_filter reports the unfiltered count. category_uid/type_uid/class_uid/activity_id are raw OCSF taxonomy integers with no decode table in the upstream spec — prefer the human-readable sibling strings type_name and activity. Uses cursor-based pagination for large result sets. Event time is an ISO 8601 UTC string (converted from the upstream epoch-seconds value). The date parameter selects events by event date; the timezone of that date boundary is not stated by the upstream spec (unverified). severity/status labels follow the OCSF scales (severity: informational/low/medium/high/critical/fatal; status: success/failure/other) and are filled from severity_id/status_id when the upstream omits the string. Permissions: as of 2025-10-27 the upstream endpoint requires the API key to have BOTH organization:manage and users:read scopes; keys missing either scope return 403.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
limitNo
cursorNo
type_nameNo
category_nameNo
output_formatNojson

TDQS

A4.4/5.0
Behavior5/5

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

The description extensively discloses behavioral traits beyond the annotations: client-side filtering, pagination, time conversion, permissions (specific scopes required), and edge-case handling (unmappable category results in unfiltered response). No contradiction with annotations (readOnlyHint, etc.).

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 lengthy but dense with information. It front-loads the main purpose and then systematically details parameters and behavioral nuances. While every sentence adds value, some sections (e.g., exact details on unmappable categories) could be condensed for brevity.

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 tool with 6 parameters, no output schema, and complex behavior, the description covers nearly all aspects: filtering, pagination, permissions, and response metadata. It lacks a full enumeration of response fields, but it explains key structures like `applied_filters` and `events_before_filter`. Overall highly complete.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining each parameter's purpose, constraints (e.g., date required, category_name prefix matching), defaults, and behavior (cursor pagination, output_format). It adds significant meaning beyond the raw 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 clearly states the tool's purpose: querying OCSF-formatted audit events with filtering by date and event type. It specifies the source (Automox Audit Service v2). However, it does not explicitly distinguish from sibling tools like 'audit_trail_user_activity' or 'list_events', though the context of OCSF format is unique.

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 provides detailed guidance on parameter usage, especially the client-side nature of category_name filtering and the behavior when tokens are unmappable. It also notes that human-readable strings are preferred over raw integer UIDs. However, it does not explicitly state when to use this tool versus alternatives (e.g., for non-OCSF audit events).

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

batch_update_devicesBatch Update DevicesA
Destructive

Apply bulk attribute actions to many devices at once (up to 500). Currently supports tag apply/remove via actions like {'attribute': 'tags', 'action': 'apply', 'value': ['env:prod']}.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYes
devicesYes
request_idNo

Output Schema

ParametersJSON 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 indicate destructiveHint=true and readOnlyHint=false. The description adds the 500 device limit and example action format, which are behavioral traits not captured in annotations. However, it does not discuss partial failure handling or rollback behavior.

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

Conciseness5/5

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

The description is a single concise sentence with an example, front-loading the key information. Every part is necessary; no wasted words.

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 bulk update tool with 3 parameters, destructive annotation, and an output schema (reducing need to describe return values), the description is fairly complete. It explains the purpose, limit, and action format. Minor gaps: no mention of prerequisites or error scenarios.

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 0%, so the description must compensate. It provides an example of the actions parameter (tag apply/remove), adding meaning beyond the raw schema. However, it does not explain the devices parameter (list of IDs) or request_id. The compensation is partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool applies bulk attribute actions to many devices at once, with a limit of 500 devices. It gives an example action format, distinguishing it from single-device updates like update_device. The verb 'apply' and resource 'devices' are specific and unambiguous.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives such as update_device or advanced_device_search. The limit of 500 and action format provide implicit context, but the description does not mention exclusions or prerequisites.

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

check_group_exclusion_statusCheck Group Exclusion StatusA
Read-onlyIdempotent

Check whether one or more server groups are currently within an active exclusion window. Returns a per-group boolean status.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_uuidNo
group_uuidsYes

Output Schema

ParametersJSON 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=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds the detail of returning a per-group boolean status, which is consistent with annotations but adds minimal extra behavioral context.

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 a single sentence with no wasted words, covering the main action, resource, and output efficiently.

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?

For a simple read tool with an output schema, the description is adequate but lacks parameter explanations. Given the schemaless parameter descriptions, completeness is partially hindered.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not explain parameters. It fails to add meaning about 'group_uuids' or 'org_uuid' beyond what the schema names indicate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'check', the resource 'server groups', and the result 'per-group boolean status'. It distinguishes from sibling tool 'check_window_active' by specifying server groups.

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 implies usage for checking exclusion windows but offers no explicit when-to-use or alternatives. With many sibling tools, guidance on when not to use would help.

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

check_window_activeCheck Window ActiveA
Read-onlyIdempotent

Check whether a specific maintenance window is currently active. A window is active when its status is 'active', it has at least one group, and the current time falls within an exclusion period.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_uuidNo
window_uuidYes

Output Schema

ParametersJSON 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?

The description adds behavioral detail beyond annotations by explaining the three conditions that make a window active. Annotations already indicate read-only, non-destructive, and idempotent behavior, so the description's additional logic is helpful. No contradictions.

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 extremely concise with only two sentences, no unnecessary words, and it front-loads the purpose clearly. Every sentence delivers value.

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 tool's simplicity, the description covers the core logic adequately. The presence of an output schema likely details the return format, so the description need not repeat that. However, it does not mention any prerequisites or side effects, but for a read-only check, this is sufficient.

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

Parameters2/5

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

The input schema has 0% description coverage, meaning the parameters 'window_uuid' and 'org_uuid' are not explained in the schema. The description does not compensate for this; it only explains the return logic. Therefore, the description adds no meaning to the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Check whether a specific maintenance window is currently active.' It uses a specific verb ('Check') and resource ('maintenance window active'), and it distinguishes itself from sibling tools like 'check_group_exclusion_status' by focusing on the window's active status.

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 provides useful context on when the tool is appropriate by defining the conditions for an active window (status, group, exclusion period). However, it does not explicitly mention when not to use it or suggest alternative tools, so it lacks full guidance.

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

clone_policyClone PolicyA
Destructive

Clone an existing Automox policy. By default creates an in-org copy with an optional new name and server group assignments. Pass target_zone_ids to instead clone a patch policy into one or more zones/orgs in a single server-side call (patch policies only; mutually exclusive with name/server_groups).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
policy_idYes
request_idNo
server_groupsNo
target_zone_idsNo

Output Schema

ParametersJSON 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 indicate destructive and non-idempotent, which the description aligns with by noting cloning creates a copy. Adds context about cross-zone mode being a single server-side call and restricted to patch policies.

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 sentences with clear front-loading of purpose. No redundant information; every part earns its place.

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 tool's complexity (two modes, mutex, patch-only restriction) and presence of an output schema, the description covers essential behavioral aspects. Missing details like error conditions or return format are acceptable due to output schema.

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?

With 0% schema description coverage, the description explains purpose of policy_id (implied required), name, server_groups, and target_zone_ids. However, it omits the request_id parameter entirely, leaving it unexplained.

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?

Description uses specific verb 'Clone' and resource 'policy', with two clearly distinguished modes (in-org copy vs cross-zone for patch policies). This differentiates it from sibling policy tools.

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?

Explicitly states when to use each mode and that they are mutually exclusive. Does not discuss when not to use the tool or alternative approaches, but the sibling list contains no other clone operation.

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

create_data_extractCreate Data ExtractB
Destructive

Request a new data extract for bulk reporting. Returns the extract ID and initial status.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idNo
extract_dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true. The description adds that the tool returns an 'initial status', hinting at asynchronous processing. However, it does not disclose potential side effects, required permissions, or behavior under failure beyond what annotations 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 a single sentence, concise and to the point. It front-loads the key action and output. However, it is slightly under-specified, which prevents a perfect score.

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

Completeness2/5

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

Given that the tool has an object parameter and an output schema, the description provides minimal context. It does not explain what extract_data should contain, potential errors, or prerequisites. The presence of siblings like list_data_extracts and get_data_extract implies a workflow, but the description lacks completeness.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain the parameters (extract_data and request_id). Since the description adds no meaning beyond the raw schema, it fails to compensate for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Request a new data extract'), the resource ('data extract'), and the purpose ('for bulk reporting'). It also specifies the return value (extract ID and initial status), distinguishing it from siblings like get_data_extract and list_data_extracts.

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 use this tool versus alternatives. The description implies creation but does not mention when not to use it or suggest sibling tools like get_data_extract for retrieval. Sibling differentiation is only implicit through naming.

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

create_global_api_keyCreate Global API KeyA
Destructive

Create a global (account-scoped) API key. Returns metadata only — the key secret is never surfaced and cannot be retrieved via MCP.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
expires_atNo
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Description adds critical behavioral info: 'Returns metadata only — the key secret is never surfaced and cannot be retrieved via MCP.' This goes beyond annotations (destructiveHint=true, etc.) and clarifies a key safety aspect.

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 sentences, no fluff, front-loaded with action and scope. Every sentence adds value, achieving maximum conciseness.

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?

Despite having an output schema and good annotations, the description omits parameter explanations, which is a gap. However, it covers the key behavioral nuance (secret not retrievable), making it minimally adequate for a creation tool.

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

Parameters1/5

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

Schema coverage is 0%, and the description does not explain any of the 3 parameters (name, expires_at, request_id). The description adds no semantic value for parameters, leaving agents to infer from schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a global (account-scoped) API key', specifying the action and resource. It also distinguishes from user-scoped keys (sibling 'create_user_api_key'), making the scope 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?

The description implies usage for account-level API keys but does not provide explicit when-to-use vs alternatives or when-not-to-use. No exclusions or alternative tools are mentioned.

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

create_policy_windowCreate Policy WindowA
Destructive

Create a new maintenance/exclusion window that prevents policy execution on the specified groups during the defined periods. All fields are required. The 'rrule' field does NOT accept generic RFC 5545; the upstream validator enforces exactly two grammars (live-verified 2026-06-05). For recurrence=once: FREQ=DAILY;UNTIL=YYYYMMDDTHHMMSSZ (compact UNTIL, no COUNT). For recurrence=recurring: FREQ=YEARLY;BYMONTH=<1-12>;BYDAY=<+N weekday> only — no other FREQ values, no WEEKLY. status accepts active|inactive; recurrence accepts once|recurring (lowercase on input).

ParametersJSON Schema
NameRequiredDescriptionDefault
rruleYes
statusYes
dtstartYes
org_uuidNo
recurrenceYes
request_idNo
group_uuidsYes
window_nameYes
window_typeYes
use_local_tzYes
duration_minutesYes
window_descriptionYes

Output Schema

ParametersJSON 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?

Description adds behavioral context beyond annotations: indicates the window prevents policy execution, all fields required, and specifics about rrule grammar. No contradiction with annotations (destructiveHint=true, readOnlyHint=false).

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?

Description is 4 sentences, each adding value. It front-loads the purpose, then provides critical grammar details. Could be slightly more concise but no wasted content.

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 12 parameters (10 required) and an output schema, the description covers the most complex parts (rrule grammar, recurrence, status values). It doesn't explain return values, but output schema handles that. Some less complex parameters remain undocumented but are understandable from schema names.

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?

With 0% schema description coverage, the description adds meaning for the complex rrule parameter (specifying exact grammars) and mentions status and recurrence accepted values. However, other parameters like window_type, window_name, duration_minutes, group_uuids, dtstart, etc., are not explained.

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?

Description clearly states it creates a maintenance/exclusion window to prevent policy execution on specified groups during defined periods. This distinguishes it from sibling tools like update_policy_window, delete_policy_window, and check_window_active.

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?

Explicitly states all fields are required and provides detailed grammar for the rrule field, including exact formats for recurrence types. However, it does not explicitly mention when not to use this tool or provide alternatives from the sibling list.

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

create_server_groupCreate Server GroupC
Destructive

Create a new Automox server group. refresh_interval is the agent check-in/scan cadence in minutes (live-verified; spec range 240-1440).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
notesNo
policiesNo
ui_colorNo
request_idNo
refresh_intervalYesAgent check-in/scan cadence in minutes (live-verified; spec range 240-1440)
parent_server_group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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

Annotations indicate destructive operation and open world hint. The description adds the live-verified range for refresh_interval, but does not expand on other behavioral aspects like irreversibility, required permissions, or side effects. Given annotations, the description provides marginal extra value.

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 description is short (2 sentences) and gets to the point, but it omits important information that would be necessary for safe tool selection and invocation.

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

Completeness2/5

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

Given 7 parameters, no enums, and a destructive operation, the description should provide context on required parameters, constraints, and typical use cases. It only covers refresh_interval, leaving the agent underinformed.

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

Parameters2/5

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

Only the refresh_interval parameter is described (the same as in the schema), leaving the other 6 parameters undocumented. With only 14% schema coverage, the description fails to compensate for the missing parameter semantics.

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 tool creates a new Automox server group, using a specific verb and resource. However, it does not differentiate from sibling tools like update_server_group or delete_server_group, but the name and purpose are self-explanatory.

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 use this tool versus alternatives, no mention of prerequisites (e.g., parent group must exist), or when not to use it. The description is purely functional.

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

create_user_api_keyCreate User API KeyA
Destructive

Create an API key for a user. Returns metadata only — the key secret is never surfaced and cannot be retrieved via MCP.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
user_idYes
expires_atNo
request_idNo

Output Schema

ParametersJSON 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 indicate destructiveHint=true, but the description adds value by stating that the key secret is never surfaced and cannot be retrieved via MCP. This discloses a critical behavioral limitation beyond what annotations provide, though it could mention required permissions or irreversible nature.

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 extremely concise: two sentences, each adding essential information. No superfluous words, and the the purpose is 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?

The description covers purpose and a key behavioral note, but lacks parameter explanations and usage context. Given the complexity (4 params, no schema descriptions) and the presence of an output schema, more detail on parameter semantics would make it complete.

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

Parameters2/5

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

Schema description coverage is 0%, meaning no parameter descriptions in the schema. The description does not explain any of the four parameters (user_id, name, expires_at, request_id), leaving the agent without guidance on values, formats, or semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create an API key') and the resource ('for a user'). It distinguishes from sibling tools like 'create_global_api_key' by specifying user scope, and mentions that the key secret is never surfaced, which differentiates it from retrieval 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?

The description does not explicitly guide when to use this tool versus alternatives like create_global_api_key. It implies usage for user API key creation but lacks prerequisites, restrictions, or context on when not to use it.

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

create_webhookCreate WebhookA
Destructive

Create a new Automox webhook subscription. The response includes a signing secret that is ONLY shown once — save it immediately. Max 5 webhooks per organization. URL must be HTTPS.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
nameYes
org_uuidNo
request_idNo
event_typesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Beyond annotations (destructiveHint=true), the description adds critical behavioral details: 'The response includes a signing secret that is ONLY shown once — save it immediately' and the limit of 5 webhooks per org. These go beyond what annotations provide, fully informing the agent of key side effects.

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 concise sentences: first states purpose, second warns about the one-time secret, third lists constraints. No redundant information; every sentence adds value.

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 annotations and output schema, the description covers the main gotchas (one-time secret, limits, URL requirement). It omits parameter explanations but the schema and sibling tool list_webhook_event_types help. It does not mention authorization requirements or whether the webhook is immediately active.

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

Parameters2/5

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

The description does not explain any parameter individually despite 0% schema description coverage. Only the URL constraint ('URL must be HTTPS') adds some meaning to the 'url' parameter, but other parameters like event_types, org_uuid, request_id remain unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new Automox webhook subscription', using a specific verb (Create) and resource (webhook subscription). It distinguishes from siblings like list_webhooks, update_webhook, delete_webhook by focusing on creation.

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 provides contextual guidance such as 'Max 5 webhooks per organization' and 'URL must be HTTPS', which inform when and how to use the tool. However, it does not explicitly mention when to avoid using it or suggest alternative tools like list_webhooks to check limits.

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

create_zoneCreate ZoneB
Destructive

Create a new zone (organization) in the account. The zone access_key is never surfaced.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
request_idNo

Output Schema

ParametersJSON 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 indicate destructiveHint=true and readOnlyHint=false, so the description doesn't need to repeat that. However, the description adds one behavioral detail (access_key never surfaced) but does not elaborate on other potential side effects or required permissions.

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 extremely concise with two sentences: the first states the core purpose, and the second adds a critical detail. No superfluous information.

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?

While the output schema exists (not shown), the description lacks context about side effects, error conditions, or prerequisite steps. For a creation tool with destructiveHint=true, more context is expected to ensure safe usage.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the description adds no explanation for the parameters 'name' and 'request_id'. With low coverage, the description must compensate, but it fails to do so, leaving the agent without guidance on parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Create' and the resource 'zone (organization)', distinguishing it from sibling tools like get_zone, list_zones, etc. The additional note about access_key not being surfaced adds specificity.

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 is provided on when to use this tool vs alternatives, nor are there any prerequisites or exclusions mentioned. The description only states what it does, not when it should be used.

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

decide_patch_approvalDecide Patch ApprovalB
Destructive

Approve or reject an Automox patch approval request.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
decisionYes
request_idNo
approval_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, so the description's mention of 'Approve or reject' aligns. However, the description adds no extra behavioral context beyond the annotations, such as what happens upon approval/rejection or if notifications are sent.

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 a single sentence with no wasted words. However, it is too brief to cover necessary details, sacrificing completeness for conciseness.

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

Completeness2/5

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

Despite having an output schema, the description lacks crucial information about parameter values and usage context. The agent cannot determine valid inputs for 'decision' or understand the tool's role in the patch approval workflow, making it incomplete.

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

Parameters1/5

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

The input schema has 0% description coverage and no enums. The description does not explain any parameters, such as the valid values for 'decision' (e.g., 'approve', 'reject') or the purpose of 'approval_id'. This leaves the agent without crucial information to use the tool correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Approve or reject') and the resource ('Automox patch approval request'), and it distinguishes from siblings like patch_approvals_summary, which likely lists approvals rather than deciding on them.

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 vs alternatives, no prerequisites, and no context about when to approve or reject. Sibling tools like patch_approvals_summary suggest a workflow, but it is not mentioned.

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

delete_action_setDelete Action SetA
DestructiveIdempotent

Delete a single vulnerability remediation action set by ID. Action sets are console metadata (not endpoint state) and are reconstructable by re-uploading the source CSV.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idNo
action_set_idYes

Output Schema

ParametersJSON 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 indicate destructive, idempotent, and open world behavior. Description adds that action sets are console metadata (not endpoint state) and reconstructable, which provides reassurance and context beyond 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?

Two focused sentences: first states purpose, second adds valuable context. No redundant words, well-structured.

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 and annotations cover idempotency, the description provides enough context (reconstructability, metadata nature) for a destructive tool. Missing explicit mention of idempotent behavior, but annotations cover that.

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

Parameters2/5

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

The description only mentions 'by ID' for action_set_id. The other parameter (request_id) is not explained at all. Schema coverage is 0%, so description should compensate, but it does not fully explain parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool deletes a single vulnerability remediation action set by ID, distinguishing it from bulk delete (sibling delete_action_sets_bulk). It also explains what action sets are, adding context.

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 implies use for single deletion and mentions reconstructability, but does not explicitly state when to use this vs bulk delete or other alternatives. No prerequisites or exclusions are provided.

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

delete_action_sets_bulkDelete Action Sets BulkA
DestructiveIdempotent

Delete multiple vulnerability remediation action sets by ID (up to 100) in one atomic call. Action sets are reconstructable by re-uploading the source CSV.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idNo
action_set_idsYes

Output Schema

ParametersJSON 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 mark destructiveHint: true and idempotentHint: true. Description adds atomicity and reconstructability via re-uploading CSV, which provides helpful context beyond annotations without contradiction.

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 sentences, front-loaded with action and constraints. Every word conveys necessary information with no 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?

Given the tool's complexity (bulk, atomic, destructive), the description covers core behavior and safety. Missing details like partial failure behavior are mitigated by output schema existence and atomicity claim.

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

Parameters2/5

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

Schema coverage is 0%. Description only mentions 'action_set_ids' as 'by ID' and completely omits any explanation of 'request_id' parameter, leaving a significant gap for the agent to understand its purpose.

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?

Description clearly states verb 'Delete', resource 'vulnerability remediation action sets', and scope 'multiple by ID (up to 100) in one atomic call', distinguishing it from sibling 'delete_action_set' which is singular.

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?

Description implies usage for bulk deletion with 'up to 100' and 'atomic call', but does not explicitly state when to use this vs the singular alternative 'delete_action_set' or provide exclusions.

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

delete_global_api_keyDelete Global API KeyA
DestructiveIdempotent

Permanently delete a global (account-scoped) API key by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYes
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds 'Permanently delete', which aligns with annotations but does not provide significant additional behavioral context beyond what annotations already convey.

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 a single sentence of 8 words, front-loading the action and target. It is highly concise with no extraneous words.

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 is brief but covers the essential purpose. However, it lacks parameter explanations and does not leverage the output schema to describe return values. For a simple delete tool, it is adequate but could be more complete for clarity.

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

Parameters2/5

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

Schema description coverage is 0%. The description only mentions 'by ID', implying key_id is the identifier, but does not explain the request_id parameter or provide any details about parameter semantics. Given low coverage, the description should compensate more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (delete), the resource (global API key), scope (account-scoped), and identification method (by ID). It distinguishes from sibling tools like delete_user_api_key.

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 implicitly tells when to use the tool (to delete a global API key). It does not explicitly mention when not to use or compare with alternatives, but for a simple delete operation, the context is clear.

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

delete_policyDelete PolicyB
DestructiveIdempotent

Permanently delete an Automox policy by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
policy_idYes
request_idNo

Output Schema

ParametersJSON 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 indicate destructiveHint=true and idempotentHint=true; description adds 'Permanently' which is consistent but not additional behavioral context beyond what annotations provide.

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?

Single sentence, no fluff, front-loaded with essential action.

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; description briefly covers core action but omits side effects or return value expectations.

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

Parameters2/5

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

Schema coverage is 0% and description only mentions 'by ID' for policy_id, ignoring request_id entirely, providing minimal parameter explanation.

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?

Description uses specific verb 'delete' and resource 'Automox policy by ID', clearly differentiating from siblings like delete_action_set or delete_policy_window.

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 tool vs alternatives, no prerequisites or exclusions mentioned.

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

delete_policy_windowDelete Policy WindowB
DestructiveIdempotent

Delete a maintenance/exclusion window permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_uuidNo
request_idNo
window_uuidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds 'permanently', which reinforces the destructive nature but does not elaborate on side effects, authorization needs, or what happens to associated data. With annotations covering the core traits, the description's added value is marginal.

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 a single, front-loaded sentence with no filler. However, it could include brief parameter guidance without sacrificing conciseness. Overall, it efficiently conveys the core action.

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

Completeness2/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, return values are not needed. However, for a delete operation with 3 parameters (only 1 required), the description omits context on how to identify the window and the role of optional parameters. The agent needs external knowledge to use the tool correctly.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate by explaining parameters. It provides no details about window_uuid (how to obtain it), org_uuid (what it does, why optional), or request_id (purpose). The description adds no semantic value beyond the schema.

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 'Delete' as a specific verb and identifies the resource as 'a maintenance/exclusion window', with 'permanently' clarifying the outcome. It clearly distinguishes from sibling tools like create_policy_window, update_policy_window, and get_policy_window.

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 is provided on when to use this tool versus alternatives (e.g., when to delete vs. update or check). There are no prerequisites or context about policy windows or the required window_uuid.

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

delete_server_groupDelete Server GroupB
DestructiveIdempotent

Delete an Automox server group permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes
request_idNo

Output Schema

ParametersJSON 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 provide destructiveHint=true and idempotentHint=true. The description adds 'permanently', but does not disclose potential side effects (e.g., impact on associated devices, policies, or whether deletion fails if group has members). This is adequate but not enriching.

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 a single, clear sentence with no redundant words. Every word serves a purpose, making it highly concise and easy to parse.

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?

For a simple deletion tool, the description covers the essential action. However, it omits common context like return value (though an output schema exists), error cases, or preconditions (e.g., group must exist). It is minimally complete but not thorough.

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

Parameters2/5

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

The input schema has two parameters (group_id, request_id) with zero description coverage. The description does not explain their roles or valid values (e.g., what request_id is used for). The agent must guess from names alone, which is insufficient.

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 'Delete an Automox server group permanently' clearly states the action (delete), resource (server group), and scope (permanently). The name 'delete_server_group' matches, and sibling tools like 'create_server_group' and 'update_server_group' confirm this tool's distinct purpose.

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, such as deactivating a group or removing devices first. No prerequisites or post-conditions are mentioned, leaving the agent to infer context from the destructive hint alone.

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

delete_user_api_keyDelete User API KeyA
DestructiveIdempotent

Permanently delete a user API key by user ID and key ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYes
user_idYes
request_idNo

Output Schema

ParametersJSON 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 destructiveHint=true and idempotentHint=true, so the safety profile is clear. The description adds 'Permanently delete', which reinforces irreversibility. However, it does not disclose additional behavioral details like whether cascading deletions occur or if confirmation is needed.

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 a single, concise sentence that conveys the essential information without extraneous detail. Every word is functional.

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 deletion tool with annotations and an output schema present, the description covers the core purpose and required inputs. It notes permanence. Minor gap: no mention of idempotency despite idempotentHint=true, but this is partially covered by 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?

With 0% schema description coverage, the description partially compensates by explaining that user_id and key_id identify the API key to delete. However, the optional request_id parameter is not mentioned, leaving its purpose unclear. The description adds some value beyond the schema but is incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('delete'), resource ('user API key'), and required identifiers ('by user ID and key ID'). It distinguishes this tool from related operations like create_user_api_key, get_user_api_key, or update_user_api_key.

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 provides no guidance on when to use this tool versus alternatives such as delete_global_api_key, or other deletion tools. It does not mention prerequisites, consequences, or conditions for use.

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

delete_webhookDelete WebhookA
DestructiveIdempotent

Delete an Automox webhook subscription permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_uuidNo
request_idNo
webhook_idYes

Output Schema

ParametersJSON 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 indicate destructiveHint=true and idempotentHint=true. The description adds 'permanently', reinforcing the irreversibility but no new behavioral insights. It does not contradict annotations; this is a baseline score given annotation coverage.

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 a single sentence of 5 words, extremely concise. Every word is essential: 'Delete', 'Automox webhook subscription', 'permanently' specifies the action and permanence. No filler or 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?

For a simple delete tool, the description combined with annotations (destructive, idempotent) and schema is nearly complete. It states the core purpose. An output schema is present, so return values are covered. Minor improvement could mention scope like organization-level, but it's adequate.

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

Parameters2/5

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

The schema has 3 parameters with 0% description coverage, meaning no parameter details in the schema. The description does not explain any parameter (e.g., what is 'webhook_id', 'org_uuid', 'request_id' for). It fails to compensate for the lack of schema descriptions, thus adding minimal value for parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Delete an Automox webhook subscription permanently.' The verb 'Delete' and resource 'webhook subscription' are specific, leaving no ambiguity. It distinguishes from siblings like 'get_webhook' or 'update_webhook' by specifying a permanent deletion 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 provides no guidance on when to use this tool versus alternatives. For example, it does not mention that a webhook can be temporarily disabled via 'update_webhook' instead. The tool is isolated without context for appropriate usage compared to other webhook-related tools.

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

device_detailDevice DetailA
Read-onlyIdempotent

Return detailed information and recent activity for a device. Includes a compliance rollup (per-policy status counts: up_to_date / pending / needs_remediation, plus the policies needing remediation — only needs_remediation policies make a device non-compliant). uptime_minutes is sampled at the device's last full scan, so it can lag the current boot session.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_idYes
include_queueNo
include_packagesNo
include_inventoryNo
include_raw_detailsNo

Output Schema

ParametersJSON 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 readOnlyHint=true and idempotentHint=true. The description adds value by disclosing the compliance rollup behavior and the caveat about uptime_minutes lagging, which are beyond 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 two sentences plus a parenthetical, efficiently conveying the purpose and a key behavioral detail. Minor improvement would be to list the parameters explicitly.

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 tool has five parameters and an output schema, the description covers the main return values and a critical caveat. However, it lacks explanation of optional Boolean parameters, though the output schema likely fills some gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden. However, the description does not explain the five input parameters (e.g., include_packages, include_inventory) or their defaults, leaving the agent without semantic guidance beyond names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns 'detailed information and recent activity for a device' and specifies the compliance rollup, differentiating it from sibling tools like device_health_metrics or get_device_full_profile.

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 implies this tool is for retrieving comprehensive device details, but it does not explicitly state when to use it over alternatives like get_device_full_profile or device_health_metrics.

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

device_health_metricsDevice Health MetricsA
Read-onlyIdempotent

Aggregate organization-wide device health statistics including managed/unmanaged breakdown, device status breakdown, compliance metrics, and check-in recency analysis. Compliance follows the platform rule: a device is non-compliant only when at least one policy needs remediation — pending work is tracked separately as devices_with_pending_policies. Use this for monitoring dashboards and getting a fleet-wide health overview.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
group_idNo
include_unmanagedNo
max_stale_devicesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior5/5

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

Annotations already indicate read-only, non-destructive, idempotent, and open-world. Description adds significant behavioral context: explains compliance rule (non-compliant only when remediation needed, pending tracked separately), and what metrics are included (managed/unmanaged breakdown, status, check-in recency). No contradictions.

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 purpose and scope. The second sentence adds valuable behavioral detail about compliance, but could be slightly more concise. No wasted words.

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?

Adequately describes return metrics for a fleet health overview tool with existing output schema. However, missing parameter-level context (e.g., what limit and max_stale_devices control) which is important for proper invocation.

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

Parameters2/5

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

Schema description coverage is 0%, and the description provides no explanation for any of the 4 parameters (group_id, include_unmanaged, limit, max_stale_devices). The description does not compensate for the lack of schema descriptions.

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?

Clearly states it aggregates organization-wide device health statistics including breakdowns and compliance metrics. However, it could more explicitly differentiate from similar tools like policy_compliance_stats or compliance_snapshot.

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?

Implies use for monitoring dashboards and fleet-wide overview, but does not specify when not to use it or provide alternatives. Guidance is implied rather than explicit.

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

device_search_typeaheadDevice Search TypeaheadA
Read-onlyIdempotent

Get typeahead suggestions for device search fields. Useful for discovering valid values when building advanced device queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldYes
prefixYes
output_formatNojson

TDQS

A3.5/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 openWorldHint=true, but the description adds no extra behavioral context such as response format, valid field domains, or empty result behavior.

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

Conciseness5/5

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

The description is two sentences with no wasted words, front-loaded with the core action in the first sentence.

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

Completeness2/5

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

Given no output schema, the description fails to specify what the tool returns (e.g., suggestions list, format). It also omits constraints like valid fields or behavior when no matches are found.

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

Parameters2/5

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

With 0% schema description coverage, the description must explain parameters but only mentions the general purpose. The parameters 'field', 'prefix', and 'output_format' are not described, leaving the agent to infer their meaning from names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get typeahead suggestions' and the resource 'device search fields', distinguishing it from sibling tools like 'search_devices' or 'get_searchable_fields' that serve different purposes.

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 provides clear context for use ('discovering valid values when building advanced device queries'), but does not explicitly mention when not to use it or name alternatives.

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

discover_capabilitiesDiscover CapabilitiesA
Read-onlyIdempotent

Canonical inventory of Automox MCP tools, organized by domain — prefer this over cached manifests. With a domain: that domain's tools with name, description, and per-session availability (unavailable tools carry available=false; opt-in gated tools name their gated_by env var). With no domain: the domain index plus self-check totals (unique_tool_count, registered_tool_count, per-domain counts) and alias/cross-listing metadata; pass list_all_tools=true for a flat deduplicated tool list. Valid domains: devices, device_search, policies, policy_history, patches, groups, events, reports, audit, webhooks, worklets, data_extracts, vuln_sync, account, compound, policy_windows, splashtop. This directory excludes discover_capabilities itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNo
list_all_toolsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, destructive, idempotent, and openWorld hints. Description adds that unavailable tools carry available=false, gated_by env var info, and self-exclusion. Adds value beyond 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?

Two well-structured sentences with bullet-like details. No fluff, every sentence adds value. Front-loaded with primary purpose.

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 output schema exists, description explains return format variations fully. Covers all parameter behaviors, valid domains, and edge cases (unavailable, gated_by). Complete for this tool's purpose.

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

Parameters5/5

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

Schema has 0% description coverage, but the description fully explains each parameter's effect: domain returns domain-specific tools with availability metadata; no domain returns index and counts; list_all_tools=true returns flat list. Adds critical meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a 'Canonical inventory of Automox MCP tools, organized by domain,' with a specific verb+resource. It distinguishes itself from over 100 sibling tools as a directory that excludes itself.

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?

Explicitly says 'prefer this over cached manifests' and describes when to use domain vs no domain, but does not list explicit exclusions or alternatives.

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

execute_policy_nowExecute Policy NowB
Destructive

Execute an Automox policy immediately for remediation (all devices or specific device).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
device_idNo
policy_idYes
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

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

While annotations already indicate destructiveHint=true and readOnlyHint=false, the description adds minimal transparency by mentioning 'remediation' and scope. However, it fails to disclose what the 'action' parameter does, any side effects, authorization requirements, or rate limits, leaving significant gaps for the agent.

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 a single concise sentence that front-loads the purpose. However, it sacrifices necessary detail for brevity, earning a slightly lower score as it does not fully earn its place by covering key aspects.

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

Completeness2/5

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

Given the tool's complexity, the absence of parameter descriptions, and the existence of an output schema, the description is incomplete. It does not explain the 'action' parameter, the return value, or prerequisites, leaving the agent with substantial uncertainty.

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

Parameters1/5

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

The input schema has 0% description coverage, and the description only hints at 'device_id' through 'all devices or specific device'. It does not explain the meaning of 'policy_id', 'action', or 'request_id', nor does it provide examples or constraints. The agent lacks critical information to invoke the tool correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'execute' and the resource 'Automox policy' with a specific purpose 'for remediation'. It also specifies scope 'all devices or specific device', which distinguishes it from sibling tools like apply_policy_changes or policy_detail.

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 implies usage for immediate remediation but does not provide explicit guidance on when to use this tool versus alternatives such as apply_policy_changes or clone_policy. No when-not-to-use or exclusion criteria are given.

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

get_accountGet AccountB
Read-onlyIdempotent

Get Automox account detail (id, name, type, timestamps).

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint, so the description's job is lighter. It adds value by specifying the returned fields (id, name, type, timestamps). No contradictions 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.

Conciseness5/5

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

The description is a single, efficient sentence that immediately conveys the tool's purpose. No redundant information, and it is front-loaded with the key action and resource.

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?

For a simple read tool with good annotation coverage, the description is mostly adequate but misses details like the output_format parameter, response structure, or error handling. It provides the core information but has gaps.

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

Parameters1/5

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

Schema coverage is 0%, meaning the one parameter (output_format) is not described in the schema. The description does not mention this parameter at all, failing to compensate for the low coverage or add any semantic meaning.

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?

Description clearly states the tool retrieves Automox account details, listing specific fields (id, name, type, timestamps). It distinguishes from siblings like get_account_user and get_user by focusing on the account entity itself.

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 is provided on when to use this tool versus alternatives (e.g., list_organizations, get_user). The description only states what it does, leaving the agent to infer usage context without exclusions or prerequisites.

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

get_account_userGet Account UserA
Read-onlyIdempotent

Get an account-scoped user record by UUID: status, account RBAC role, verification, and 2FA type. two_factor_authentication carries the literal string 'disabled' when 2FA is OFF (do NOT read it as a configured type); a null/absent value is ambiguous (may mean disabled or not-reported) — see metadata.field_notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
output_formatNojson

TDQS

A4.1/5.0
Behavior5/5

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

The annotations already indicate readOnlyHint=true and idempotentHint=true, so the tool is safe and repeatable. The description adds valuable behavioral context: the nuance about 'two_factor_authentication' carrying literal string 'disabled' when 2FA is off and the ambiguity of null/absent values. 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.

Conciseness5/5

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

The description is two sentences long, front-loading the core action and then adding a critical behavioral note. Every sentence serves a purpose, no wasted words.

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 description explains the return fields (status, RBAC role, verification, 2FA type) and provides a caveat about two_factor_authentication. However, without an output schema, it does not fully describe all possible response fields or error conditions, leaving some ambiguity.

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

Parameters2/5

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

The schema has 2 parameters with 0% coverage from description. The description indirectly explains user_id by mentioning UUID but does not describe the output_format parameter at all. For a tool with low schema coverage, the description should compensate, but it only partially addresses one parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get an account-scoped user record by UUID' and lists the specific fields returned (status, account RBAC role, verification, 2FA type). It distinguishes from sibling tools like 'get_user' which likely operates at a different scope.

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 implies usage for retrieving a user record by UUID, but it does not explicitly explain when to use this tool versus alternatives such as 'get_user' or 'list_users'. No exclusions or comparisons are provided.

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

get_action_set_detailGet Action Set DetailC
Read-onlyIdempotent

Get details for a specific vulnerability remediation action set. The status field is a processing-lifecycle string; observed live (2026-06-06) as building -> ready, with 'ready' the confirmed terminal value. 'active' is the spec example only and was not reproduced. See metadata.field_notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
action_set_idYes
output_formatNojson

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, etc. The description adds value by clarifying the `status` field behavior based on live observation, noting that 'active' is a spec-only example. However, it does not disclose other behavioral traits like latency or authentication 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 description is concise with two sentences and a reference. The first sentence clearly states the purpose, but the reference to 'metadata.field_notes' may be ambiguous without context.

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 the tool has 2 parameters, no output schema, and annotations present, the description covers the core purpose and a key field behavior. However, it does not outline what 'details' include or provide expectations for the output.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no information about either parameter (action_set_id, output_format). It does not compensate for the lack of schema descriptions.

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 'Get details for a specific vulnerability remediation action set,' specifying the verb and resource. It distinguishes from sibling tools like get_action_set_issues and get_action_set_solutions by focusing on general details, but does not explicitly 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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it, nor does it reference sibling tools or conditions.

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

get_action_set_issuesGet Action Set IssuesA
Read-onlyIdempotent

Get vulnerability issues (CVEs) associated with an action set. Shows which vulnerabilities are being tracked for remediation.

ParametersJSON Schema
NameRequiredDescriptionDefault
action_set_idYes
output_formatNojson

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context that the tool returns CVEs tracked for remediation, which is useful beyond annotations. However, it does not mention return format or any rate limits/auth needs, but annotations cover the key safety traits.

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 sentences, zero wasted words. The first sentence states the core function, the second adds context. Front-loaded and efficient.

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 is simple (2 params, no output schema), so the brief description might suffice, but it lacks parameter details and return value explanation. The annotations help, but overall completeness is mediocre for an agent that needs to invoke it correctly.

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

Parameters2/5

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

Despite 0% schema description coverage, the description does not explain the parameters (action_set_id, output_format). It only refers to 'action set' in the first sentence, leaving agents to infer parameter meanings. No default values or format options are clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'vulnerability issues (CVEs) associated with an action set.' It specifies the content (CVEs) and purpose (tracked for remediation), distinguishing it from siblings like get_action_set_detail and get_action_set_solutions.

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 implies usage when needing to see tracked vulnerabilities, but it does not explicitly state when to use vs. alternatives (e.g., list_remediation_action_sets, get_action_set_detail). No exclusion criteria or contextual guidance is provided.

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

get_action_set_solutionsGet Action Set SolutionsB
Read-onlyIdempotent

Get solutions for a vulnerability action set. Shows recommended patches or configurations to resolve vulnerabilities. Per-vulnerability severity and per-device status are coded strings with no API-enumerated value set (severity scale/ceiling spec-derived and unverified live; device status observed live transitioning not-started -> in_progress, note the mixed hyphen/underscore separators) — see metadata.field_notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
action_set_idYes
output_formatNojson

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metadataNoPagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds valuable context about severity and status being coded strings with observed transitions and unverified specifications, going beyond the structured metadata.

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?

Description is two sentences, front-loaded with purpose and then technical detail. Efficient and well-structured.

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 existence of output schema, the description need not detail all return fields. However, it omits high-level overview of the output structure and relies on external references. Adequate but not comprehensive.

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

Parameters1/5

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

With 0% schema description coverage, the description fails to explain the parameters (action_set_id and output_format). It only discusses output field semantics, not parameter meaning or acceptable values.

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 tool retrieves solutions (patches/configurations) for a vulnerability action set. It uses a specific verb and resource, but does not explicitly differentiate from sibling tools like get_action_set_issues or get_action_set_detail.

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 tool versus alternatives. Does not mention prerequisites or exclusion criteria.

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

get_cached_search_resultsGet Cached Search ResultsA
Read-onlyIdempotent

Retrieve cached server-side results for a previously-executed device search, keyed by search execution ID. Distinct from get_saved_search_results which re-executes a saved-search definition.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
search_idYes
output_formatNojson

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds that it is cached and keyed by search execution ID, which is useful but minimal. It does not disclose additional behaviors like data freshness, rate limits, or error handling.

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 two sentences, each serving a distinct purpose: stating the function and differentiating from a sibling. No unnecessary words. Well 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?

For a tool with 4 parameters and no output schema, the description is minimal. It doesn't specify pagination behavior, default values, or what happens if the search_id is invalid. However, the annotations provide some safety context, and the sibling list helps. It is adequate but not comprehensive.

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

Parameters1/5

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

Schema description coverage is 0%, meaning no parameter descriptions. The description only mentions 'keyed by search execution ID' which hints at search_id, but does not explain the meaning of page, limit, or output_format parameters. Thus, it fails to add value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves cached results from a previously-executed device search, using a search execution ID. It explicitly distinguishes from get_saved_search_results, which is a sibling tool that re-executes a saved search. This provides high specificity and differentiation.

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 gives context on when to use this tool (retrieve cached results) and explicitly contrasts with get_saved_search_results. However, it doesn't mention other alternatives or when not to use it, missing some guidance on exclusion.

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

get_compliance_snapshotGet Compliance SnapshotA
Read-onlyIdempotent

Combined view of non-compliant devices, fleet health metrics, and policy statistics. Answers 'What is our compliance posture?' in a single call.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idNo
detail_limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metadataNoPagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate safety (readOnly, non-destructive, idempotent). Description adds context by specifying the three data categories included, providing behavioral insight beyond 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?

Two concise sentences, front-loaded with the key value proposition. No extraneous 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?

Output schema exists, so description doesn't need to detail return structure. Covers the main purpose and data types. Lacks detail on parameter usage, but overall sufficient for a snapshot tool.

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

Parameters2/5

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

Schema has 0% description coverage for parameters (group_id, detail_limit). Description does not explain what these parameters do, leaving the agent uninformed about their purpose or format.

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?

Clearly describes the tool as a combined view of compliance-related data (non-compliant devices, fleet health, policy statistics) and positions it as answering a specific question. Differentiates from sibling tools by being an aggregated snapshot.

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?

Explicitly states the tool answers 'What is our compliance posture?' indicating when to use. Does not explicitly list when not to use or alternatives, but the context is clear given sibling tools.

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

get_data_extractGet Data ExtractB
Read-onlyIdempotent

Get details for a data extract job. Returns status (per spec enum: queued | running | complete | failed | canceled | expired) and the is_completed boolean (use this for readiness). download_expires_at is the link-expiry timestamp; has_download_url=true means the CSV is currently downloadable. The presigned download URL itself is not returned to the model — retrieve it from the Automox console.

ParametersJSON Schema
NameRequiredDescriptionDefault
extract_idYes
output_formatNojson

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds specifics about returned fields (status, is_completed, etc.) and warns about the presigned URL not being returned, which is useful beyond 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 a single paragraph, immediately states the purpose, and then provides clear detail. Every sentence adds value without redundancy.

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 explains return fields adequately for a tool without output schema, but fails to document the input parameters. For a two-parameter tool, this is a significant gap.

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

Parameters1/5

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

The input schema has 0% description coverage, and the tool description does not explain either parameter (extract_id, output_format). The agent receives no information about what extract_id expects or how output_format affects the response.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get details for a data extract job' and enumerates the returned fields. This differentiates it from sibling tools like create_data_extract and list_data_extracts.

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 tool vs alternatives, no prerequisites or exclusions. Only a note about the download URL not being returned, which is not usage guidance.

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

get_device_assignmentsGet Device AssignmentsA
Read-onlyIdempotent

Get device-to-policy and device-to-group assignments.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. Description adds no behavioral context, but annotations are sufficient.

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?

One concise sentence with no unnecessary words or 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?

For a simple read-only tool with one optional parameter and safety annotations, the description covers the core purpose. It could mention the return format or that it returns a list, but it is adequate.

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?

Single parameter 'output_format' with default 'json' is self-explanatory from the schema. Description adds no parameter details; with 0% schema description coverage, the description does not compensate, but the parameter is trivial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resources 'device-to-policy and device-to-group assignments', distinguishing it from sibling tools like get_device_by_uuid or list_devices.

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 provided on when to use this tool versus alternatives, nor any prerequisites or context for its use.

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

get_device_by_uuidGet Device by UUIDA
Read-onlyIdempotent

Get the near-raw device payload by UUID (canonical /servers endpoint). Integer policy codes carry a status_label sibling (up_to_date / pending / needs_remediation — only needs_remediation makes a device non-compliant; see the compliance rollup). uptime_minutes is sampled at the device's last full scan, so it can lag the current boot session.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_uuidYes
output_formatNojson

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds valuable behavioral context: it explains that integer policy codes include a status_label (with specific compliance interpretation) and that uptime_minutes is sampled at last full scan and may lag. This goes beyond annotations to clarify data semantics and freshness.

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 two sentences long and front-loaded with the core purpose. Every sentence adds relevant detail (status_label, uptime behavior) without redundancy or fluff.

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 no output schema, the description explains key response aspects (policy codes, uptime). However, it could provide a broader overview of the 'near-raw payload' structure or mention other important fields. Despite this, it offers sufficient context for a simple retrieval tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. However, the description does not explain the purpose or format of either parameter (device_uuid, output_format). It only indirectly references UUID in the tool name. No additional meaning is added for the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the 'near-raw device payload by UUID' via the canonical /servers endpoint. The verb 'get' and resource 'device payload by UUID' are specific and unambiguous, providing strong purpose clarity.

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 does not provide any guidance on when to use this tool versus alternative tools such as 'device_detail', 'get_device_full_profile', or 'list_devices'. No exclusions or context about tool selection are given.

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

get_device_full_profileGet Device Full ProfileA
Read-onlyIdempotent

Complete device profile combining device detail, inventory summary, packages, and policy assignments in a single call. Inventory is summarized with key values per category. Packages capped at max_packages (default 25). pending_commands entries carry command_type and scheduled_time (the queued exec_time). Use get_device_inventory or list_device_packages for full data.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_idYes
detail_limitNo
max_packagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metadataNoPagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint, destructiveHint, idempotentHint, openWorldHint. The description adds specific behavioral details: inventory is summarized, packages are capped, and pending_commands include command_type and scheduled_time.

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 sentences, each serving a purpose: purpose, details, and alternatives. It is front-loaded and concise with no fluff.

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 tool's complexity (combining multiple aspects) and the presence of an output schema, the description covers the key behavior: composite result, caps, and alternatives. It omits the detail_limit parameter but is otherwise 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 coverage is 0%, so the description must compensate. It explains max_packages default and purpose, and implicitly mentions device_id. However, it does not explain detail_limit, leaving one parameter undescribed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool combines device detail, inventory summary, packages, and policy assignments into a single call. It uses specific verbs and resources, and distinguishes from siblings like get_device_inventory or list_device_packages.

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

Usage Guidelines5/5

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

The description explicitly recommends using get_device_inventory or list_device_packages for full data, and explains the cap on packages (max_packages default 25) and the structure of pending_commands entries.

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

get_device_inventoryGet Device InventoryA
Read-onlyIdempotent

Retrieve detailed device inventory data including hardware, network, security, services, system, and user information. Optionally filter by category. Uses the Console API device-details endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
device_idYes

Output Schema

ParametersJSON 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 and idempotentHint=true. The description adds that it uses the 'Console API device-details endpoint', which is minor behavioral context. No contradictions.

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 sentences, front-loaded with key information. No unnecessary words. 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 output schema exists, the description covers the main data types and filter capability. It omits pagination or limits but is adequate for a straightforward retrieval tool.

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

Parameters2/5

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

Schema description coverage is 0%. The description only hints at the optional 'category' filter but does not explain the required 'device_id' parameter or provide format guidance. Insufficient compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Retrieve' and the resource 'detailed device inventory data', listing specific categories. It distinguishes from siblings like 'device_detail' by focusing on inventory.

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 tool versus alternatives. Among many device-related siblings, the description does not explain when to choose this over options like 'device_detail' or 'device_full_profile'.

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

get_device_metadata_fieldsGet Device Metadata FieldsC
Read-onlyIdempotent

Get available fields for device queries. Returns the field names and types supported by the advanced device search API.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive nature. The description adds that it returns field names and types, which aligns with annotations. No contradictions, but little additional behavioral context beyond what annotations provide.

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 clear sentences with no unnecessary words. Information is front-loaded and easy to parse.

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?

For a simple read-only metadata tool, the description conveys the purpose and return concept but omits parameter details and output format. It is adequate but not fully complete given the absence of output schema and parameter descriptions.

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

Parameters1/5

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

Schema description coverage is 0% for the single parameter 'output_format', and the description does not mention this parameter at all. The agent gets no explanation of what 'output_format' does or its allowed values beyond the schema definition.

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 ('Get') and resource ('available fields for device queries'), and mentions returning field names and types. It is clear but does not explicitly differentiate from the sibling 'get_searchable_fields', which may serve a similar purpose.

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 tool over alternatives. The description does not mention any prerequisites, context, or exclusions, leaving the agent to infer usage 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.

get_device_scheduled_windowsGet Device Scheduled WindowsB
Read-onlyIdempotent

Get upcoming scheduled maintenance periods for a specific device. Returns start/end times and window types. Optionally provide a future date limit (ISO 8601 UTC). start/end are derived occurrence times (the window stores dtstart+duration_minutes+rrule, not start/end); their timezone basis follows the window's use_local_tz.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
org_uuidNo
device_uuidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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

Adds value beyond annotations by explaining that start/end are derived from dtstart+duration_minutes+rrule (not stored), and timezone basis follows use_local_tz. Annotations already indicate read-only, idempotent, non-destructive; description supplements with system behavior details.

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 with clear, front-loaded purpose. The first sentence delivers main action and return values. Second sentence adds necessary detail without verbosity. Could be slightly more structured (e.g., bullet parameters) but remains efficient.

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?

Covers core functionality and derived-field behavior. Missing description for 'org_uuid' parameter. Output schema exists, so return values need not be explained. Annotation openWorldHint could be addressed, but not critical. Fairly complete for a read tool with annotations.

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

Parameters2/5

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

Schema description coverage is 0%, so description must compensate. Only the 'date' parameter is described (ISO 8601 UTC, optional). 'device_uuid' is implied by tool name but not elaborated; 'org_uuid' is not mentioned at all. Incomplete parameter 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?

The description clearly states it gets upcoming scheduled maintenance periods for a specific device, specifying return values (start/end times, window types) and optional date limit. It is specific about the verb and resource, but does not explicitly differentiate from sibling tools like get_group_scheduled_windows.

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 tool versus alternatives such as get_group_scheduled_windows or search_policy_windows. The description implies usage for device-specific windows but provides no exclusions or comparative context.

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

get_group_scheduled_windowsGet Group Scheduled WindowsA
Read-onlyIdempotent

Get upcoming scheduled maintenance periods for a server group. Returns start/end times and window types. Optionally provide a future date limit (ISO 8601 UTC). start/end are derived occurrence times (the window stores dtstart+duration_minutes+rrule, not start/end); their timezone basis follows the window's use_local_tz.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
org_uuidNo
group_uuidYes

Output Schema

ParametersJSON 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 indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds that 'start/end are derived occurrence times' (not stored directly) and that timezone follows the window's use_local_tz, which is valuable behavioral context beyond 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 concise: two sentences plus an additional clarifying sentence about derived times. Every sentence adds value without 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, the description needn't detail return values. It covers the core purpose, the date parameter, and a key behavioral nuance. However, it omits explanation of the 'org_uuid' parameter and doesn't elaborate on 'window types'. Overall, fairly complete but with 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 0%, so the description must compensate. It explains the 'date' parameter as an ISO 8601 UTC future limit, but does not clarify 'group_uuid' or 'org_uuid'. This adds partial meaning but leaves gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get upcoming scheduled maintenance periods for a server group.' It specifies the resource (server group) and the output (start/end times, window types). This distinguishes it from sibling tools like get_device_scheduled_windows and get_policy_window.

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 mentions optional usage of the 'date' parameter as a future date limit in ISO 8601 UTC, but does not provide explicit guidance on when to use this tool versus alternatives, nor does it specify conditions for not using it.

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

get_patch_tuesday_readinessGet Patch Tuesday ReadinessA
Read-onlyIdempotent

Combined view of pre-patch report, pending approvals, and patch policy schedules. Answers 'Are we ready for Patch Tuesday?' in a single call. Policy schedule_days bitmasks carry a schedule_days_decoded sibling; schedule_time is a bare HH:MM string with no timezone marker. Per-device prepatch_report.devices[].highest_severity uses the vocabulary critical/high/medium/low/none/no_known_cves/unknown (full enum per spec; live-observed on this tenant: no_known_cves, high, critical, unknown). The projection emits the string 'unknown' for absent/undetermined severity — it never emits JSON null. 'no_known_cves' (patches carry no CVE) and 'unknown' (severity absent/undetermined, NOT inherently high risk) are distinct states and are never collapsed.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idNo
detail_limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metadataNoPagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.

TDQS

A3.6/5.0
Behavior5/5

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

The description adds significant behavioral detail beyond annotations: bitmask sibling fields, timezone-less time strings, enum vocabulary for severity, and the distinct handling of 'unknown' vs 'no_known_cves'. No contradictions with readOnlyHint or idempotentHint.

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 description is front-loaded with purpose but becomes verbose with detailed enum documentation. It could be more concise, though the details are valuable. About 100 words, slightly above ideal.

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 output schema exists, the description compensates well for output behavior. However, it fails to document input parameters, which is a significant gap for a tool with 2 parameters and no schema coverage. The complexity is moderate, but completeness suffers.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain the two parameters (group_id, detail_limit). It only describes output behavior, leaving parameter semantics entirely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('get/view') and resource ('patch Tuesday readiness'), and distinguishes it as a combined view of pre-patch report, pending approvals, and patch policy schedules. This sets it apart from sibling tools like prepatch_report or patch_approvals_summary.

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 implies usage for checking readiness in a single call, but does not explicitly discuss when to use alternatives or when not to use it. The sibling list is long but no comparisons are made, so guidance is minimal.

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

get_policy_windowGet Policy WindowA
Read-onlyIdempotent

Retrieve details for a specific maintenance/exclusion window by UUID. Returns status (lowercase active | inactive) and recurrence (UPPERCASE ONCE | RECURRING on read).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_uuidNo
window_uuidYes

Output Schema

ParametersJSON 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 readOnlyHint, destructiveHint, idempotentHint, openWorldHint. The description adds value by noting the return format details (lowercase/uppercase). No contradictions.

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 concise sentences without fluff. Front-loaded with the action 'Retrieve details'. Every sentence adds value.

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 tool's simplicity, an output schema exists (covers return details). The description covers input and key output fields. Could mention potential errors or auth, but overall adequate for a retrieval tool.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. It explains window_uuid implicitly as the identifier, but does not explain the optional org_uuid parameter (its purpose, when to use, etc.). Minimal added meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves details for a specific maintenance/exclusion window by UUID and specifies the return values (status with lowercase, recurrence with uppercase). It distinguishes from sibling tools like search_policy_windows (which searches) and create/update/delete.

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 implies usage when you have the UUID and need details, but does not explicitly state when to use this vs alternatives (e.g., search_policy_windows). No exclusions or alternative tool names are provided.

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

get_saved_search_resultsGet Saved Search ResultsA
Read-onlyIdempotent

Execute a saved device search and retrieve its current device result set. Supports pagination via page + limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
output_formatNojson
saved_search_idYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint, openWorldHint, so the description's safety disclosure is minimal. It adds pagination support but no other behavioral details (e.g., rate limits, cache behavior).

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

Conciseness5/5

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

Two sentences: first states purpose, second mentions pagination. No extraneous information, perfectly concise.

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 4 parameters and no output schema, the description is missing explanation of 'output_format' and what the result set structure looks like. Adequate but not complete for an agent.

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?

With 0% schema description coverage, the description only explains 'page + limit' for pagination. It does not explain 'saved_search_id' or 'output_format', though the latter has a default. Partial compensation.

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?

Clearly states the verb 'execute' and 'retrieve' along with the resource 'saved device search results'. Distinguishes from siblings like 'get_saved_search' which retrieves the search definition.

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 tool versus alternatives like 'get_cached_search_results' or 'run_saved_search'. The description only states functionality without usage context.

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

get_searchable_fieldsGet Searchable FieldsA
Read-onlyIdempotent

List searchable device fields grouped by scope, with per-field type metadata. Richer than get_device_metadata_fields (a flat field-name array) — use this to construct typed advanced-search queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark tool as read-only and idempotent. Description adds behavioral details about output structure (grouped by scope, with type metadata), going beyond what annotations provide. No contradiction.

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 concise sentences that front-load the purpose and immediately add differentiating guidance. No wasted words.

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 read-only informational tool with one optional parameter and no output schema, the description sufficiently explains the return structure (grouped, typed). Sibling list provides context. Minor gap: no mention of output_format parameter.

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

Parameters2/5

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

Schema description coverage is 0% for the only parameter (output_format). The description does not mention this parameter or its default value or purpose, leaving the agent without guidance on how to use 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?

Clearly states verb 'list', resource 'searchable device fields', and adds structure 'grouped by scope, with per-field type metadata'. Directly differentiates from sibling 'get_device_metadata_fields' by noting it is richer and intended for constructing typed advanced-search queries.

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

Usage Guidelines5/5

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

Explicitly contrasts with sibling tool ('Richer than get_device_metadata_fields') and tells agent to use this for 'constructing typed advanced-search queries', providing clear when-to-use guidance.

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

get_search_scopesGet Search ScopesA
Read-onlyIdempotent

List available device-search scope options. Org-independent metadata describing the scopes (e.g., device, group, org) supported by the Advanced Device Search API.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering the safety and idempotency aspects. The description adds the context that it returns 'Org-independent metadata' and provides examples, but does not significantly expand beyond what annotations convey.

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 two sentences long, front-loaded with the primary action, and contains no redundant or extraneous information. Every word serves a 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?

Given the low complexity (no required parameters, no output schema, simple listing action), the description provides adequate context: it names the output (scope options), explains it's org-independent metadata, and gives examples. The only minor gap is not addressing the optional output_format parameter, but its default value mitigates the need for a full explanation.

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

Parameters2/5

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

The input schema has one parameter (output_format) with zero description coverage. The tool description does not mention the parameter at all, leaving the agent without guidance on its purpose or allowed values beyond the schema's type and default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists available device-search scope options, gives concrete examples (device, group, org), and specifically ties it to the Advanced Device Search API, which distinguishes it from other search-related siblings like get_searchable_fields or advanced_device_search.

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 implies usage for discovering available scopes but does not explicitly state when to use this tool versus alternatives or when not to use it. The context of 'Org-independent metadata' hints at a configuration/introspection role.

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

get_server_groupGet Server GroupA
Read-onlyIdempotent

Get detailed information about a specific Automox server group. refresh_interval is the agent check-in/scan cadence in minutes (live-verified; spec range 240-1440) — see metadata.field_notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false. Description adds context about 'refresh_interval' field in response, beyond annotations. No contradiction.

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, no verbosity. First sentence states purpose efficiently. Second sentence adds useful but somewhat tangential info. Could be more focused on parameters.

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?

Adequate for a simple get tool with output schema present. However, lacks differentiation from other 'get' siblings for different resources (e.g., get_device, get_zone). Not fully complete.

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

Parameters1/5

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

Single parameter 'group_id' has 0% schema description coverage. Description does not explain 'group_id' at all; instead discusses unrelated 'refresh_interval' output field. Fails to add value for parameter.

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?

Clearly states the action 'Get detailed information' and the resource 'specific Automox server group'. Distinguishes from sibling 'list_server_groups' by specificity.

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?

Implies usage when needing details of one group, but lacks explicit guidance on when not to use (e.g., for bulk listing use 'list_server_groups') or alternatives.

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

get_upload_formatsGet Upload FormatsA
Read-onlyIdempotent

Get supported CSV upload formats for vulnerability remediation action sets.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to repeat safety. It adds context about the purpose but does not elaborate on behavioral aspects like authentication or rate limits.

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 a single sentence with 10 words, front-loading the action and resource. No redundant 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?

For a simple tool with one optional parameter and no output schema, the description is nearly complete. The only gap is the lack of parameter explanation, but the annotations and simple schema partially compensate.

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

Parameters2/5

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

The description does not mention the 'output_format' parameter despite 0% schema description coverage. This leaves the agent without guidance on how to interpret or use the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'supported CSV upload formats' for 'vulnerability remediation action sets'. It unambiguously distinguishes the tool from siblings like 'upload_action_set' and 'get_action_set_detail'.

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 implies usage before uploading action sets but provides no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or context.

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

get_userGet UserA
Read-onlyIdempotent

Get a single user by numeric ID, including org/server-group membership and RBAC roles. Secrets are never surfaced.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
output_formatNojson

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. The description adds value by stating 'Secrets are never surfaced,' which is a behavioral guarantee beyond annotations. No contradictions.

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?

Single sentence, extremely concise, front-loaded with action and resource. Every word is meaningful; no filler or redundancy.

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 two parameters, no output schema, and many siblings, the description covers the main purpose and a safety note (secrets). However, it lacks details on output format and fails to guide parameter usage. Adequate but not comprehensive.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions 'numeric ID' for user_id but does not explain output_format (optional, default 'json') or its semantics. With two parameters and no schema descriptions, the description provides minimal added meaning.

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?

Description clearly states it retrieves a single user by numeric ID, including membership and roles, and distinguishes from sibling tools like list_users (list) and get_account_user (different scope). The verb 'Get' and resource 'user' are specific.

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

Usage Guidelines3/5

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

Usage context is implied (when you need a single user by ID), but no explicit when-not or alternatives among many sibling tools (e.g., list_users, get_account_user) are provided. The description lacks guidance on when to choose this over other user-related tools.

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

get_user_api_keyGet User API KeyA
Read-onlyIdempotent

Get one user API key by user ID and key ID. Returns metadata only — the secret is never exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYes
user_idYes
output_formatNojson

TDQS

A4.2/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=true, destructiveHint=false, idempotentHint=true), the description adds critical context: 'Returns metadata only — the secret is never exposed.' This informs the agent about the tool's safety and output limitations, which annotations alone do not convey.

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 a single, clear sentence with an additional clarifying statement. It is concise, front-loaded, and contains no extraneous 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?

For a simple get tool with no output schema, the description adequately states what the tool does and its key behavioral trait (metadata-only). However, it could specify what metadata includes or mention error handling (e.g., 'if found'), but the provided context is generally sufficient given the straightforward nature of the 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?

With 0% schema description coverage, the description must compensate. It explicitly mentions 'by user ID and key ID', mapping to the two required parameters. However, it omits the optional 'output_format' parameter, leaving its purpose unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get one user API key'), the resource ('user API key'), and the identification method ('by user ID and key ID'). It also distinguishes from siblings like 'list_user_api_keys' by specifying 'one' and from creation/deletion tools by its verb. The additional note about returning metadata only adds specificity.

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 implies usage for retrieving a specific API key metadata but does not explicitly state when to use this over alternatives like 'list_user_api_keys' or 'get_user'. No guidance on prerequisites or when not to use it is provided.

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

get_webhookGet WebhookB
Read-onlyIdempotent

Retrieve details for a specific Automox webhook subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_uuidNo
webhook_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, covering safety and idempotency. The description adds no additional behavioral context (e.g., permissions, rate limits). It does not contradict 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 a single, well-structured sentence that conveys the purpose without extraneous words. It is appropriately sized and front-loaded.

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 is simple (2 parameters, 1 required) and has an output schema. The description is basic but sufficient to understand the core operation. However, it could briefly mention what details are returned (e.g., webhook configuration).

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

Parameters1/5

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

Schema description coverage is 0% (no descriptions in input schema). The description does not explain what webhook_id or org_uuid represent, nor does it provide any semantic meaning beyond the parameter names. This is a critical gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves details for a specific webhook subscription, using a specific verb ('Retrieve') and resource. It distinguishes from sibling tools like list_webhooks (which lists all) and create_webhook/delete_webhook/update_webhook (which modify or list).

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 explicit guidance on when to use this tool vs alternatives (e.g., list_webhooks). The agent must infer that it uses a webhook_id to get a single item, but no when-not or context is provided.

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

get_worklet_detailGet Worklet DetailA
Read-onlyIdempotent

Get detailed information for a specific community worklet, including evaluation code, remediation code, and requirements.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
output_formatNojson

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare the tool as read-only, idempotent, non-destructive, and open-world. The description adds context about returned content but does not disclose additional behavioral traits like performance, pagination, or authentication requirements. With annotations, the burden is lower, but the description adds minimal behavioral value.

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 a single concise sentence with no redundancy. Every word adds value, and it is front-loaded with the core action.

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 detail tool with good annotations, the description covers what is returned (codes, requirements). It lacks explicit return format details, but the absence of an output schema makes this acceptable. Overall, near-complete for its complexity.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions returned content but does not explain the purpose or usage of the input parameters (item_id, output_format). This is inadequate for guiding parameter input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves detailed information for a specific community worklet, listing included components (evaluation code, remediation code, requirements). This distinguishes it from sibling tools like search_worklet_catalog which searches worklets.

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 implies usage for getting worklet details after identifying a worklet ID, but provides no explicit guidance on when to use this versus alternatives (e.g., search_worklet_catalog) or any exclusions.

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

get_zoneGet ZoneA
Read-onlyIdempotent

Get a single zone (organization) by UUID. The zone access_key is never surfaced.

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYes
output_formatNojson

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive nature. The description adds critical behavioral info: the zone access_key is never surfaced, which is a meaningful security caveat beyond 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?

Two concise sentences with no redundancy. The first sentence defines the primary purpose, the second adds a crucial behavioral note. Every sentence adds value.

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?

No output schema, so agents rely on description for return value info. The description notes the absence of access_key but does not describe other fields or error behavior. Adequate for a simple retrieval but incomplete.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate. It explains zone_id's role ('by UUID') but does not mention output_format at all, leaving half the parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), resource ('zone' with synonym 'organization'), and identifier method ('by UUID'). It distinguishes from siblings like list_zones and create_zone.

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 explicit guidance on when to use this tool versus alternatives like list_zones or list_zone_users. The mention of 'by UUID' implies a lookup but does not provide context for decision-making.

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

invite_user_to_accountInvite User to AccountC
Destructive

Invite a user to the Automox account with optional zone assignments.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes
request_idNo
zone_assignmentsNo
account_rbac_roleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

Annotations indicate destructiveHint=true, so the description doesn't add new behavioral insights. It does not mention side effects like sending invitation emails or permission requirements, leaving the agent underinformed.

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 description is a single concise sentence, but it achieves conciseness at the cost of omitting critical details. It is too brief to be maximally useful.

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

Completeness2/5

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

With 4 parameters, 0% schema coverage, and a potentially complex output schema, the description is insufficient. It lacks explanations for required fields and role semantics, making the tool hard to use correctly.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description only hints at zone_assignments. It fails to explain the 'email', 'account_rbac_role', or 'request_id' parameters, which are essential for correct invocation.

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 action 'Invite a user' and the resource 'Automox account', with optional zone assignments. It distinguishes from sibling tools like remove_user_from_account and list_users, though it could be more specific about the invitation mechanism.

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 tool versus alternatives such as update_user or remove_user_from_account. No context on prerequisites or when not to use it.

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

list_account_rbac_rolesList Account RBAC RolesB
Read-onlyIdempotent

List the RBAC roles available in the Automox account.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

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, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds no behavioral context beyond the annotation, so it is adequate but not enhanced.

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 a single sentence, concise and to the point, with no wasted words.

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?

For a simple list tool with one optional parameter and no output schema, the description is minimally complete but does not explain what the roles represent or the output format.

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

Parameters1/5

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

Schema description coverage is 0% for the single parameter 'output_format', and the description does not mention or explain this parameter. The description adds no value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'RBAC roles available in the Automox account'. It is specific and distinguishes from sibling tools that list other entities.

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 is provided on when to use this tool versus alternatives. There is no mention of contexts, prerequisites, or exclusions.

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

list_data_extractsList Data ExtractsB
Read-onlyIdempotent

List data extract jobs for the Automox organization. Returns each job's id, type (e.g. patch-history | api-activity), status, the is_completed readiness boolean, and whether a download link is available (has_download_url).

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds detail on which fields are returned, but does not disclose additional behavioral traits like rate limits or authentication needs, which are sufficiently covered by 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?

Two sentences, front-loaded with the action and resource, no extraneous words. Every sentence adds value.

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?

For a simple list tool with 1 optional parameter and no output schema, the description is mostly complete in explaining the return fields. However, it omits the parameter and any pagination/sorting info, which are minor gaps given the tool's simplicity and annotation coverage.

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

Parameters2/5

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

The input schema has 1 parameter (output_format) with 0% schema description coverage. The description does not mention this parameter, leaving the agent uninformed about the optional format choice. Since schema coverage is low, the description should compensate but fails to do so.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists data extract jobs, specifying the exact fields returned (id, type, status, is_completed, has_download_url). It distinguishes from sibling tools like 'get_data_extract' (single) and 'create_data_extract' via the verb 'list' and resource context.

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 tool versus alternatives, no mention of prerequisites, filtering, or pagination. The description implies it returns all jobs but does not clarify scope or limitations.

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

list_device_packagesList Device PackagesA
Read-onlyIdempotent

List software packages on a specific Automox device. Returns package name, version, installed (boolean install state), repo, is_managed, and severity. There is no patch-status field in the response; install state comes from the installed boolean. severity is one of critical/high/medium/low/no_known_cves or JSON null (live-verified); none/unknown exist per spec but were not observed live. JSON null means no severity assessment was recorded (not a safety claim); no_known_cves means scanned with no known CVEs. See metadata.field_notes.severity. By default returns the complete package set (auto-paginated), so it is reliable for 'is package X installed?' checks. Pass an explicit page to fetch a single page instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
device_idYes
output_formatNojson

TDQS

A4.1/5.0
Behavior5/5

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

Adds significant behavioral context beyond annotations: explains absence of patch-status field, details on severity values and null meaning, auto-pagination behavior, and page parameter effect. 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?

Well-structured and front-loaded with purpose. Each sentence adds value, though the description is moderately lengthy. Could be slightly more concise without losing meaning.

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?

Covers return fields, pagination, and severity semantics adequately. However, missing parameter descriptions for device_id, limit, output_format, and lacks error conditions or prerequisites. Adequate but with clear gaps.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate. It only partially describes 'page' (fetch single page) and does not explain device_id, limit, or output_format. Leaves major gaps for 3 out of 4 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists software packages on a specific Automox device, with specific verb 'list' and resource. It details the return fields (name, version, installed, etc.), distinguishing it from sibling tools like device_detail or list_devices.

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?

Provides explicit guidance that auto-pagination makes it reliable for 'is package X installed?' checks, and that passing an explicit `page` fetches a single page. However, it does not compare to alternatives like search_org_packages or state when not to use it.

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

list_devices_for_policiesList Devices for PoliciesA
Read-onlyIdempotent

List the devices currently targeted by one or more policies (by policy UUID) — blast-radius assessment before executing or changing a policy. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
policiesYes
output_formatNojson

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds 'Read-only' confirming no mutations and 'blast-radius assessment' explaining query intent. No contradictions.

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?

Extremely concise single sentence with dash separation. Every word earns its place. Front-loaded with action and resource.

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 no output schema, low parameter coverage, but simple tool. Description covers purpose, usage context, and read-only nature. Could mention output format options, but still complete enough for an agent.

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?

With 0% schema description coverage, description adds meaning for 'policies' parameter (by UUID) but does not explain 'output_format' parameter. Partial compensation, but still leaves gaps.

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?

Clearly states verb (List), resource (devices targeted by policies), and scope (by UUID). Distinguishes from sibling action tools like apply_policy_changes and execute_policy_now by specifying 'blast-radius assessment' 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?

Explicitly states usage context: 'before executing or changing a policy.' Implies blast-radius assessment use case, but does not explicitly list when not to use or name alternative tools.

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

list_eventsList EventsA
Read-onlyIdempotent

List Automox organization events with optional filters by policy, device, user, event name, or date range. For policy/patch events, data.status is the raw process exit code (arrives as string or int): '0' = success; negative values on Windows are NTSTATUS codes as signed 32-bit ints (e.g. '-1073741502' = 0xC0000142).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
user_idNo
end_dateNo
policy_idNo
server_idNo
count_onlyNo
event_nameNo
start_dateNo
output_formatNojson

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate the tool is read-only and non-destructive. The description adds specific behavioral details about the data.status field for policy/patch events, which is beyond 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?

Two sentences with no wasted words. The first sentence states the core purpose, the second provides a critical nuance. Very concise and 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?

The tool has 10 parameters and no output schema. The description explains filters but not pagination or count_only behavior, leaving some gaps for a complete understanding.

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 0% description coverage, so the description must compensate. It covers 5 of 10 parameters (policy_id, server_id, user_id, event_name, date range) but omits page, limit, count_only, and output_format. This adds some but not full meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists Automox organization events with optional filters, using specific verbs and resources. It distinguishes from sibling tools which are for other resources.

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 explains when to use the tool (to list events with filters) but does not explicitly state when not to use it or suggest alternatives. However, the context is clear enough for the agent.

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

list_global_api_keysList Global API KeysA
Read-onlyIdempotent

List global (account-scoped) API keys. Returns key metadata (name, enabled, expiry) only — secrets are never exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint. The description adds value by noting that secrets are never exposed, which is critical behavioral context for an API key listing tool. No contradictions.

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 sentences, front-loaded with the core action and scope. Every sentence adds value with no redundancy or wasted words.

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?

Describes return fields (name, enabled, expiry) and explicitly states secrets are not exposed. For a simple list tool with no output schema, this is adequate. Could mention pagination or format but not critical.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the single parameter (output_format). The parameter is simple with a default, but the description adds no meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list', the resource 'global (account-scoped) API keys', and specifies what is returned (metadata only, no secrets). It distinguishes from siblings like list_user_api_keys and list_org_api_keys by emphasizing account scope.

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?

No explicit guidance on when to use this tool vs alternatives like list_user_api_keys. The context of 'account-scoped' implies usage, but no direct when/when-not statements or explicit exclusions.

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

list_organizationsList OrganizationsA
Read-onlyIdempotent

List organizations visible to the API key, with device count, device limit, parent org, and trial end time. Useful for MSP/multi-org navigation, capacity posture, and trial warnings. A tier slug may be present per spec but has no defined feature ordering and is absent on some tenants — do not infer a paid-plan or capability ranking from it.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
output_formatNojson

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds value by detailing the returned fields (device count, limit, parent org, trial end time) and warning about the unreliable tier slug. This goes beyond what annotations 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 consists of two concise sentences that convey purpose, return fields, and a usage warning. It is front-loaded with the core action and avoids unnecessary words, though it could be slightly more structured.

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 3 parameters and no output schema, the description covers return fields and usage context. However, it omits critical details about pagination via page/limit and the effect of output_format. This leaves gaps for a list tool that likely returns paginated results.

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

Parameters1/5

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

The input schema has 3 parameters (page, limit, output_format) with 0% schema description coverage. The description does not mention these parameters at all, leaving the agent to infer their purpose from the schema alone, which lacks descriptions. This fails to compensate for the missing schema details.

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 explicitly states the verb 'List' and the resource 'organizations visible to the API key', and it lists specific fields returned. This clearly distinguishes it from sibling listing tools like list_devices or list_users, which target different resources.

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 provides direct usage context: 'Useful for MSP/multi-org navigation, capacity posture, and trial warnings.' It also warns against misinterpreting the tier field. However, it does not explicitly state when not to use this tool or mention alternatives.

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

list_org_api_keysList Org API KeysA
Read-onlyIdempotent

List API keys for the Automox organization. Returns key metadata (name, enabled, expiry) only — secrets are never exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description is not required to repeat safety. However, it adds valuable context by stating that only metadata (name, enabled, expiry) is returned and secrets are never exposed, which goes beyond 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?

Two sentences, front-loaded with the primary action and scope. The second sentence adds a critical clarification (no secrets exposed). No wasted words; every sentence earns its place.

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 tool's simplicity (one optional parameter, no output schema, no nested objects), the description is mostly complete. It lacks mention of pagination or rate limits, which might be expected for a list tool, but for the scope, it is adequate.

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

Parameters2/5

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

The input schema has one optional parameter (output_format) with 0% schema description coverage. The description does not mention this parameter at all. Although the parameter is simple and has a default, the description fails to add any meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List'), the resource ('API keys for the Automox organization'), and the scope (organization-level). It also specifies what is returned (metadata) and what is not (secrets). This differentiates it from sibling tools like list_global_api_keys and list_user_api_keys.

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?

While the title and description imply it is for organization-level keys, there is no explicit guidance on when to use this tool versus other API key listing tools (e.g., list_global_api_keys or list_user_api_keys). No when-not-to-use or alternative mentions are provided.

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

list_remediation_action_setsList Remediation Action SetsB
Read-onlyIdempotent

List vulnerability remediation action sets for the organization. Shows imported vulnerability data and remediation tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds that it shows imported vulnerability data and remediation tracking, which is consistent but does not disclose additional behavioral traits like pagination or scope.

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?

Single sentence efficiently communicates the purpose with no redundant words. Information is front-loaded and easy to parse.

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 low complexity (one optional parameter, no output schema), the description provides the essential purpose. However, it omits details about how results are returned (e.g., format, pagination) and lacks context for filtering or scoping.

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

Parameters2/5

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

Schema description coverage is 0%, but the description does not explain the 'output_format' parameter, its possible values, or how it affects behavior. The schema only provides type and default, leaving the agent without usage guidance.

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?

Description clearly states the tool lists vulnerability remediation action sets for the organization, specifying both the action (list) and the resource (remediation action sets). It is distinct from sibling tools like 'delete_action_set' or 'get_action_set_detail'.

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 tool versus alternatives such as 'get_action_set_detail' or other list tools. The description does not mention prerequisites, filtering, or scenarios where this tool is appropriate.

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

list_saved_searchesList Saved SearchesB
Read-onlyIdempotent

List saved device searches from the Advanced Device Search API. Returns saved search names, queries, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows it's a safe, idempotent read. The description adds return field details (names, queries, metadata) but does not disclose behavioral traits like pagination, rate limits, or auth requirements.

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 two short, front-loaded sentences with no unnecessary words. It efficiently conveys the action and return content.

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 list tool with one optional parameter and good annotations, the description covers purpose and return. It omits mention of the output_format parameter and any limits, but these are minor gaps given the tool's simplicity.

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

Parameters1/5

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

Schema description coverage is 0% (the single parameter 'output_format' has no description). The tool description does not mention this parameter at all, leaving the agent without context on its purpose or default behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'saved device searches', and specifies the return content (names, queries, metadata). It distinguishes from sibling tools like 'get_saved_search' and 'delete_saved_search'.

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 is provided on when to use this tool versus alternatives (e.g., 'get_saved_search' for a single search, or 'run_saved_search' to execute). The agent must infer usage 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.

list_server_groupsList Server GroupsB
Read-onlyIdempotent

List all Automox server groups with their device counts and assigned policies. refresh_interval is the agent check-in/scan cadence in minutes (live-verified; spec range 240-1440) — see metadata.field_notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
output_formatNojson

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. Description adds context about refresh_interval parameter (live-verified range), but does not explain pagination behavior or response size. Adds some value beyond annotations but not extensive.

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?

Two sentences, but the second sentence about refresh_interval seems misplaced and unclear whether it's about an input parameter or output field. Could be more concise by focusing on the core listing behavior and pagination.

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

Completeness2/5

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

Tool has 3 optional parameters and no output schema. Description tells what is returned but omits how to paginate or change output format. Lacks completeness given the need to guide agent on param usage. Incomplete.

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

Parameters2/5

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

Schema description coverage is 0%, so description must compensate. However, description does not explain the three parameters (page, limit, output_format). It mentions 'refresh_interval' which is not in the schema, causing confusion. Fails to add necessary parameter meaning.

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?

Clearly states it lists all Automox server groups with device counts and assigned policies. The verb 'List' and resource 'server groups' are specific. Distinguishes from siblings like get_server_group and list_devices.

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?

Implies usage for retrieving all server groups, but does not explicitly specify when to use this tool versus alternatives like get_server_group or how to choose between list tools. No exclusions or context provided.

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

list_user_api_keysList User API KeysA
Read-onlyIdempotent

List a user's API keys by user ID. Returns key metadata (name, enabled, expiry) only — secrets are never exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
user_idYes
output_formatNojson

TDQS

A3.9/5.0
Behavior4/5

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

Description adds beyond annotations: 'secrets are never exposed' and confirms read-only nature, aligning with readOnlyHint and idempotentHint. No contradictions.

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 concise sentences with no unnecessary words. Every sentence adds value by stating purpose and a key behavioral constraint.

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

Completeness2/5

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

Despite 4 parameters and no output schema, description omits pagination (page, limit) and output format. Incomplete for a list endpoint with multiple optional parameters.

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

Parameters2/5

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

Schema description coverage is 0%, yet description only explains user_id ('by user ID') and ignores page, limit, output_format. Fails to compensate for missing schema details on 3 of 4 parameters.

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?

Description clearly states verb 'list', resource 'user API keys', and specifies return scope (metadata only). Distinguishes from siblings like list_global_api_keys by requiring user_id.

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?

States 'by user ID', providing clear context for when to use. Does not explicitly mention when not to use or alternatives, but the context is sufficient for selection among similar list tools.

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

list_usersList UsersA
Read-onlyIdempotent

List users in the organization with name, email, and RBAC roles. Secrets (e.g. intercom_hmac) are never surfaced.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
output_formatNojson

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metadataNoPagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds value by stating that secrets (e.g., intercom_hmac) are never surfaced, a behavioral guarantee not captured by annotations. This enhances transparency without contradiction.

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 two sentences with zero wasted words. The main action is stated first, followed by a critical security note. It is optimally concise for the information provided.

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 3 parameters, no required ones, and an output schema exists. The description covers output content (name, email, roles) and a security constraint. However, it omits information about pagination (page, limit) and output_format, which are important for usage. With output schema present, the agent can infer return structure, but the description still misses pagination context.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate but does not. The parameters (page, limit, output_format) are not explained; the description only mentions output fields. This leaves the agent without guidance on how to use pagination or format controls, severely limiting parameter comprehension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists users and specifies included fields (name, email, RBAC roles). It also highlights that secrets are excluded, distinguishing it from potential leaks. Among siblings like list_organizations or list_devices, this is specific and unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for viewing organization users but provides no explicit guidance on when to use this tool over alternatives (e.g., get_user for a single user, or search-based tools). No when-not-to-use or alternative recommendations are given, leaving the agent to infer context.

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

list_webhook_deliveriesList Webhook DeliveriesA
Read-onlyIdempotent

List recent delivery attempts (status, latency, error) for a webhook -- delivery troubleshooting. Results are newest-first and cursor-paginated; optional startDate/endDate filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
end_dateNo
org_uuidNo
start_dateNo
webhook_idYes
output_formatNojson

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds valuable behavioral details: results are newest-first and cursor-paginated, with optional date filters. No contradictions.

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 sentences with clear front-loading of purpose and concise addition of ordering, pagination, and optional filters. Every word adds value; no redundancy.

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 the tool has 7 parameters, no output schema, and the description covers only main purpose and two parameters, it is partially complete. It mentions returned fields (status, latency, error) but omits many parameters and does not describe return format. Acceptable but not comprehensive.

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

Parameters2/5

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

Schema description coverage is 0%, so the description bears the burden of explaining parameter semantics. It only mentions webhook_id implicitly (via 'for a webhook') and startDate/endDate filters explicitly, but ignores org_uuid, limit, cursor, and output_format. This leaves 4 of 7 parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists recent delivery attempts for a webhook, including specific fields (status, latency, error) and its use for troubleshooting. It distinguishes from sibling tools like list_webhooks (which lists webhooks themselves) and test_webhook (which tests a webhook).

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 explicitly ties the tool to 'delivery troubleshooting', indicating it should be used to investigate delivery issues. While it doesn't list alternatives or when not to use, the purpose is clear enough for an agent to select it appropriately.

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

list_webhook_event_typesList Webhook Event TypesA
Read-onlyIdempotent

List all available Automox webhook event types with descriptions. Use this to see which events can trigger webhook deliveries.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows this is a safe read operation. The description adds minimal behavioral context (returns all available types with descriptions), but no extra disclosures are needed beyond 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 extremely concise with two sentences, no wasted words. The first sentence front-loads the action and resource, the second adds the use case.

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 listing tool with rich annotations, the description provides all necessary context: what it lists and why. The presence of an output schema further reduces the burden on the description.

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 input schema has zero parameters with 100% coverage. No parameter documentation is needed. The description does not add parameter details, which is appropriate given the absence of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'webhook event types', and explicitly mentions the purpose: 'see which events can trigger webhook deliveries'. This distinguishes it from siblings like list_webhooks.

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 provides clear usage context: 'Use this to see which events can trigger webhook deliveries.' It does not specify alternatives, but given the simplicity and zero parameters, the guideline is sufficient.

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

list_webhooksList WebhooksB
Read-onlyIdempotent

List all webhook subscriptions for the Automox organization. Supports cursor-based pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
org_uuidNo
output_formatNojson

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true, covering safety and idempotency. The description adds cursor-based pagination detail, which is useful but limited.

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 short sentences, no unnecessary words, directly state the tool's function and a key feature (pagination).

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 covers listing all webhooks and pagination, but lacks details on output format handling, the role of org_uuid, and how results are scoped. No output schema means more burden on description.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should explain parameters. Only 'cursor-based pagination' hints at limit and cursor, but org_uuid and output_format are not explained. No parameter descriptions are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (list), resource (webhook subscriptions), and scope (for the Automox organization). It distinguishes itself from siblings like list_webhook_deliveries and list_webhook_event_types by focusing on subscriptions.

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 explicit when-to-use or when-not-to-use guidance is provided. It mentions pagination but does not contrast with get_webhook (single) or other webhook operations.

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

list_zonesList ZonesB
Read-onlyIdempotent

List the zones (organizations) in the Automox account.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
output_formatNojson

TDQS

B3/5.0
Behavior2/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint, openWorldHint. The description adds no behavioral context beyond 'list', such as pagination, permissions, or rate limits.

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

Conciseness4/5

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

Single sentence, no wasted words. However, it could be slightly more structured by hinting at parameters or output.

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

Completeness2/5

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

No output schema and no description of return values or pagination. For a list tool, more context is needed to understand the response format and handling of large datasets.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention any parameters. It provides no additional meaning beyond the schema itself, which is very minimal.

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 title 'List Zones' and description 'List the zones (organizations) in the Automox account' clearly state the action and resource. It is distinct from sibling tools like 'get_zone' (single zone) and 'list_zones_for_user' (filtered).

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 implies usage for listing all zones but does not explicitly mention when to use this versus alternatives like 'list_zones_for_user' or 'get_zone'. No when-not or alternative guidance is provided.

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

list_zones_for_userList Zones for UserB
Read-onlyIdempotent

List the zones (organizations) a given user belongs to.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
output_formatNojson

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds no new behavioral context beyond confirming it is a list operation. No contradictions.

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?

Single sentence, no fluff, front-loaded with purpose. Efficiently conveys the core functionality.

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?

Tool is simple with rich annotations, but lacks output schema and parameter details. Description is adequate for a read-only operation but does not fully address the complexity of sibling tools or output behavior.

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

Parameters2/5

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

Input schema has 0% description coverage. The description does not elaborate on parameters (user_id and output_format). While user_id is self-explanatory, output_format (default 'json') lacks explanation. Schema dependency is high, but description fails to compensate.

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 verb 'List' and the resource 'zones (organizations) a given user belongs to'. It distinguishes from sibling tools like list_zones (all zones) and list_zone_users (users in a zone) by specifying the user scope. However, it does not explicitly differentiate itself.

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 explicit guidance is provided on when to use this tool versus alternatives. The context is implied but not stated. It does not mention when not to use it or any prerequisites.

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

list_zone_usersList Zone UsersC
Read-onlyIdempotent

List the users assigned to a given zone (by zone UUID).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
zone_idYes
output_formatNojson

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds little beyond stating it's a list operation. It doesn't disclose pagination behavior, sorting, or result structure.

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 description is very concise, but it sacrifices necessary detail for brevity. It is front-loaded but incomplete.

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

Completeness2/5

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

For a tool with 4 parameters, no output schema, and no parameter descriptions, the single-sentence description is insufficient to guide correct invocation.

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

Parameters1/5

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

With 0% schema description coverage, the description should explain parameters. It only implicitly refers to zone_id but provides no details on page, limit, or output_format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list), resource (users), and identifier (zone UUID). It distinctively separates from sibling tools like 'list_users' and 'list_zones_for_user'.

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 provides no guidance on when to use this tool over alternatives, such as 'list_users' for all users or 'list_zones_for_user' for zones assigned to a user.

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

noncompliant_reportNoncompliant ReportA
Read-onlyIdempotent

Retrieve the Automox non-compliant devices report showing devices that need attention due to policy failures or missing patches. Each failing policy includes 'reason_for_fail' (upstream failure text, may be truncated), 'severity', and 'type' so you can state why a device is non-compliant and prioritize across devices.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
group_idNo
output_formatNojson

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metadataNoPagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, indicating a safe read operation. The description adds value by disclosing that the report includes fields like 'reason_for_fail' (with truncation warning), 'severity', and 'type', which aids in understanding the output. No contradiction.

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 two sentences long with no fluff. The first sentence states the action and purpose, the second lists key fields. Information is front-loaded and every sentence contributes meaning.

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 adequately covers what the report returns but lacks guidance on input parameters (e.g., how to filter by group, pagination). An output schema exists but is not shown; the agent still needs parameter usage context. Given the complexity of 4 parameters, the description is incomplete.

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

Parameters2/5

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

Schema description coverage is 0%, meaning no parameter details are provided in the schema. The description does not mention any of the four parameters (group_id, limit, offset, output_format) or their effects. The agent must infer from parameter names alone, which is insufficient for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a specific resource (the non-compliant devices report) and explains its purpose (showing devices needing attention due to policy failures or missing patches). It distinguishes itself from siblings like 'devices_needing_attention' by detailing the report's content.

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 implies usage for checking non-compliant devices and mentions fields for prioritization, but does not explicitly state when to use this tool versus alternatives like 'devices_needing_attention' or 'get_compliance_snapshot'. No exclusions or prerequisites are given.

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

patch_approvals_summaryPatch Approvals SummaryA
Read-onlyIdempotent

Summarize patch approvals awaiting decision. Each approval covers one software package (title, software.version/os_family, CVE ids under cves) for a specific policy; manual_approval is true = approved, false = rejected, null = awaiting decision. The upstream record has no severity field, so severity_breakdown buckets approvals without one as 'unspecified' — use the CVE ids to judge urgency.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNo
output_formatNojson

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metadataNoPagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable context: that the upstream record has no severity field so severity_breakdown buckets as 'unspecified', and advises using CVE IDs to judge urgency. 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.

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose. It efficiently packs essential details about the approval structure and severity handling without 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, description does not need to detail return format. It covers the main behavioral aspects but lacks parameter documentation. Overall, it is fairly complete for a read tool with good annotations, but missing param info leaves a gap.

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

Parameters2/5

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

With 0% schema description coverage for 3 parameters (status, limit, output_format), the description must explain them. It does not: status usage is implied but not explicit (e.g., possible values), limit and output_format are unmentioned. The description compensates somewhat by explaining output fields, but parameter semantics are poorly covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Summarize patch approvals awaiting decision.' It also explains the fields (title, version, CVE ids, manual_approval) and distinguishes from sibling 'decide_patch_approval' by focusing on summarization versus decision-making.

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

Usage Guidelines4/5

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

The description implies usage for reading summaries of pending approvals, but does not explicitly state when to use this tool versus 'decide_patch_approval' or other sibling tools. However, the context is clear, and the description provides enough detail for appropriate selection.

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

policy_catalogPolicy CatalogA
Read-onlyIdempotent

List Automox policies with type and status summaries. schedule_days is a bitmask (decoded alongside as schedule_days_decoded); schedule_time is a bare HH:MM string with no timezone marker — device-local vs. org time depends on policy configuration, so the timezone cannot be inferred from this field alone.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
include_statsNo
output_formatNojson
include_inactiveNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, idempotent. Description adds valuable context about schedule_days bitmask and schedule_time timezone ambiguity beyond 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?

Two sentences: first sentence states purpose, second provides critical field-level detail. No wasted words.

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?

Adequate for a simple list tool, but lacks explanation of output shape and parameter defaults. OpenWorldHint and no output schema leave some gaps.

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

Parameters2/5

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

Schema has 0% parameter description coverage. Description does not explain input parameters (limit, page, etc.), only mentions output field quirks. Fails to compensate for low coverage.

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?

Description clearly states the tool lists Automox policies with type and status summaries, distinguishing it from sibling tools like clone_policy, delete_policy, or policy_detail.

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?

Implied usage for listing policies, but no explicit when-to-use or when-not-to-use compared to alternatives such as policy_detail or policy_compliance_stats.

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

policy_compliance_statsPolicy Compliance StatsA
Read-onlyIdempotent

Retrieve per-policy compliance statistics for the organization. compliance_rate_percent is computed over evaluated devices (compliant + noncompliant) and is null when none have been evaluated; pending devices do not count against compliance and are reported separately via pending_devices / pending_rate_percent over all targeted devices.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds valuable behavioral context by explaining that 'compliance_rate_percent' is computed only over evaluated devices and is null when none evaluated, and that pending devices are reported separately. This goes beyond 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 two sentences, front-loaded with purpose, then explains the key statistical detail. No unnecessary words; every sentence adds value.

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 no parameters but a likely rich output schema, the description covers the essential behavioral aspects: null handling for compliance_rate_percent and separate reporting of pending devices. It does not discuss ordering or pagination, but for a stats tool this is adequate.

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?

No parameters exist (0 params), so baseline is 4 per instructions. The description does not need to add parameter details since the schema is empty.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve per-policy compliance statistics for the organization,' specifying the verb (retrieve), resource (per-policy compliance statistics), and scope (organization). It distinguishes itself from sibling tools like 'get_compliance_snapshot' by focusing on per-policy stats.

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 does not explicitly state when to use this tool versus alternatives such as 'get_compliance_snapshot' or 'noncompliant_report.' While it implies usage for per-policy stats, it lacks explicit guidance on context or exclusions.

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

policy_detailPolicy DetailB
Read-onlyIdempotent

Retrieve configuration and recent history for a policy.

ParametersJSON Schema
NameRequiredDescriptionDefault
policy_idYes
include_recent_runsNo

Output Schema

ParametersJSON 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 cover readOnly, destructive, idempotent, and openWorld hints. The description adds that it includes 'recent history', which is helpful context beyond annotations. No contradictions.

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 a single sentence with no unnecessary words. However, it could be more informative by including parameter hints without becoming verbose.

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 an output schema exists and annotations are rich, the description is minimally adequate. However, it does not explain what 'configuration' or 'recent history' entails, leaving some ambiguity.

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

Parameters2/5

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

Schema documentation coverage is 0%, so the description should compensate. It does not explain what policy_id is or how include_recent_runs affects the result. It provides no semantic meaning for the parameters.

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 'Retrieve configuration and recent history for a policy' with a specific verb and resource. However, it does not differentiate from other policy read tools like policy_history_detail or policy_catalog, so it loses some points for sibling distinction.

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?

No explicit when, when-not, or alternative tools are mentioned. The readOnlyHint and idempotentHint imply safe usage, but there is no guidance on when to use this versus other policy retrieval tools.

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

policy_execution_countsPolicy Execution CountsA
Read-onlyIdempotent

List fleet-wide policy execution counts over a time window: one row per policy with its run count, in a single round-trip. Answers 'which policies ran most last quarter?' without per-policy calls or client-side aggregation. Distinct from policy_run_count (single aggregate) and policy_runs_for_policy (per-run records for one policy).

ParametersJSON Schema
NameRequiredDescriptionDefault
end_timeNo
start_timeNo
output_formatNojson

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds behavioral context beyond annotations: it mentions 'in a single round-trip' (efficiency) and 'one row per policy' (aggregation). This is sufficient and consistent with annotations, though more detail on potential time range limits could improve transparency.

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

Conciseness5/5

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

The description is concise at three sentences: first sentence states the core function, second gives a concrete example question, and third distinguishes from siblings. Every sentence adds value without redundancy, and the key action is 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?

Given the tool has 3 parameters, 0% schema coverage, and no output schema, the description is adequate but incomplete. It explains the return format (one row per policy with run count) and efficiency, but lacks details on parameter formats, null handling, and output structure, making it minimally viable for a simple list tool.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate but only vaguely references 'over a time window' for start_time/end_time and does not explain output_format or default behaviors. The schema has no descriptions, so the tool definition fails to provide parameter-level guidance beyond the implied time range.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists fleet-wide policy execution counts over a time window with one row per policy and run count. It explicitly distinguishes from siblings policy_run_count (single aggregate) and policy_runs_for_policy (per-run records for one policy), making the tool's specific resource and action clear.

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

Usage Guidelines5/5

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

The description gives explicit guidance on when to use: to answer questions like 'which policies ran most last quarter?' without per-policy calls or client-side aggregation. It also names two alternatives and clarifies that this tool is for fleet-wide aggregated counts, leaving no ambiguity about context.

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

policy_execution_timelinePolicy Execution TimelineB
Read-onlyIdempotent

Review recent executions for a policy. Each execution's device_outcomes are device counts per outcome (not run statuses); a run with no successes or failures but pending/not_included/remediation_not_applicable completed as a benign no-op or is still in progress, not a failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
org_uuidNo
policy_uuidYes
report_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds important behavioral context: it clarifies that device_outcomes are aggregated counts, not run statuses, and explains how to interpret runs with no successes/failures. This goes beyond 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?

Two concise sentences. The first sentence front-loads the primary purpose. The second sentence adds necessary clarifying detail without excess. Every word earns its place.

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

Completeness2/5

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

Despite having an output schema, the description is incomplete. It explains only the output interpretation for device_outcomes. It omits any parameter documentation (4 parameters, 1 required) and does not describe the overall structure of the response. Important usage context is missing.

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

Parameters1/5

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

The input schema has 4 parameters (policy_uuid, org_uuid, report_days, limit) with 0% documentation coverage. The description does not explain any parameter semantics, purpose, or constraints, leaving the agent without critical information to invoke the tool correctly.

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 the tool reviews recent executions for a policy, which is a clear verb+resource. It adds nuance about device_outcomes being counts per outcome, not run statuses, partially distinguishing it from sibling tools like policy_run_detail_v2, but does not explicitly differentiate from all related tools.

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 tool versus alternatives, no prerequisites or exclusions. The description only explains output interpretation, leaving the agent to infer usage context from the name and siblings.

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

policy_health_overviewPolicy Health OverviewB
Read-onlyIdempotent

Summarize recent Automox policy activity. status_breakdown counts RUNS by overall result; the 'no_success_or_failure' bucket means every device was pending/not_included/remediation_not_applicable (a benign no-op or still in progress), not an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_runsNo
org_uuidNo
window_daysNo
top_failuresNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

The annotations already indicate a safe read operation (readOnlyHint=true), and the description adds value by clarifying the 'no_success_or_failure' bucket, explaining it is benign. No contradictions 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.

Conciseness5/5

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

The description is two concise sentences. The first states the purpose, the second explains a potentially confusing field. No wasted words.

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 covers the tool's high-level purpose and one field. However, it lacks parameter details, which are important for correct invocation. With an output schema present, return values are handled, but parameter guidance is missing.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention any of the 4 parameters (org_uuid, window_days, top_failures, max_runs) or their meaning. This is a critical gap for a tool with optional parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Summarize recent Automox policy activity.' It also explains the meaning of a key field, distinguishing it from sibling policy tools like policy_detail or policy_compliance_stats.

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 does not provide guidance on when to use this tool versus alternatives. There is no mention of use cases, prerequisites, or exclusions. Siblings include many policy-related tools, but no comparative advice is given.

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

policy_history_detailPolicy History DetailB
Read-onlyIdempotent

Get policy history details by UUID, including run history and status. Each run's device_outcomes are device counts per outcome, not run statuses.

ParametersJSON Schema
NameRequiredDescriptionDefault
policy_uuidYes
output_formatNojson
recent_runs_limitNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already indicate a safe read operation (readOnlyHint, destructiveHint=false, idempotentHint=true). The description adds valuable context by clarifying that 'Each run's device_outcomes are device counts per outcome, not run statuses,' which prevents misinterpretation. No contradictions 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.

Conciseness5/5

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

The description is extremely concise at two sentences. The first sentence states the core purpose, and the second adds a critical behavioral detail. No superfluous content.

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 tool's complexity (3 parameters, no output schema) and strong annotations, the description covers the essential purpose and a key nuance. It omits details like return format or parameter descriptions, but is largely complete for a simple read operation.

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

Parameters2/5

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

Schema coverage is 0% and the description does not mention any parameters. The input schema defines policy_uuid, recent_runs_limit, and output_format, but the description adds no meaning beyond the schema. For a tool with three parameters, this is insufficient.

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 tool's purpose: 'Get policy history details by UUID, including run history and status.' It uses a specific verb and resource, but does not explicitly differentiate from sibling tools like policy_detail or policy_run_detail_v2.

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 tool versus alternatives such as policy_detail or policy_runs_by_policy. The description implies usage when a policy UUID is known, but fails to provide context for when not to use it.

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

policy_run_countPolicy Run CountA
Read-onlyIdempotent

Get aggregate policy execution counts. Optionally filter by number of days to look back.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
output_formatNojson

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds filtering behavior but does not disclose other traits beyond what annotations provide.

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 a single concise sentence that front-loads the key action and resource, with no wasted words.

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?

For a simple tool with optional params and no output schema, the description is adequate but could be more complete by explaining the output_format parameter.

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 description explains the 'days' parameter but does not mention the 'output_format' parameter. With 0% schema coverage, it partially compensates.

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 it returns aggregate policy execution counts with optional day filtering. However, it does not distinguish itself from the sibling tool 'policy_execution_counts', which might have a similar purpose.

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 implies usage for getting counts filtered by days but provides no guidance on when not to use it or alternatives like 'policy_execution_counts'.

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

policy_run_detail_v2Policy Run Detail v2A
Read-onlyIdempotent

Get detailed per-device results for a specific policy run. Uses UUID-based queries and supports device name filtering. exit_code is the raw process exit code from the policy script (0 = success; negative values on Windows are NTSTATUS codes as signed 32-bit ints); result_status is the lowercase per-device outcome (e.g. success, failed).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sortNo
limitNo
exec_tokenYes
device_nameNo
policy_uuidYes
output_formatNojson
result_statusNo

TDQS

A3.8/5.0
Behavior4/5

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

The description adds value beyond annotations by explaining the meaning of exit_code (raw process exit code, NTSTATUS handling) and result_status (lowercase per-device outcome). Annotations already declare readOnlyHint=true and idempotentHint=true, so no contradiction. The description provides behavioral context but could mention pagination behavior.

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

Conciseness5/5

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

The description is very concise: two sentences for purpose and context, plus two inline explanations for key response fields. It is front-loaded with the main action and avoids unnecessary words.

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?

While the purpose is clear, the description lacks details on response format (no output schema), pagination, and parameter semantics for 6 of 8 parameters. Given the tool's complexity and number of parameters, more completeness is needed for an agent to invoke it correctly.

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

Parameters2/5

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

With 0% schema description coverage, the description bears full burden for parameter clarity. It only partially covers parameters: mentions device_name filtering and the role of policy_uuid/exec_token as UUIDs. It does not explain sort, result_status filter, page, limit, or output_format. This is insufficient for 8 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets detailed per-device results for a specific policy run. It uses a specific verb ('Get') and identifies the resource, distinguishing it from siblings like policy_runs_v2 (which lists runs) and policy_run_results (which may be aggregated).

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 implies usage by mentioning UUID-based queries and device name filtering, but it does not explicitly state when to use this tool versus alternatives like policy_runs_v2 or policy_execution_counts. No context on exclusions or prerequisites is provided.

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

policy_run_resultsPolicy Run ResultsB
Read-onlyIdempotent

Retrieve per-device results and output for a specific policy execution token. exit_code is the raw process exit code from the policy script (0 = success; negative values on Windows are NTSTATUS codes as signed 32-bit ints, e.g. -1073741502 = 0xC0000142); result_status is the lowercase per-device outcome string.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sortNo
limitNo
org_uuidNo
exec_tokenYes
device_nameNo
policy_uuidYes
result_statusNo
max_output_lengthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already indicate this is a safe, idempotent, read-only operation. The description adds value by explaining the semantics of the output fields: `exit_code` (including a note about NTSTATUS codes on Windows) and `result_status`. This helps the agent interpret results correctly, though it does not disclose other behavioral details like error handling or data freshness.

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 consists of two sentences, with the primary action stated first and technical details provided in the second sentence. It is well-structured, efficient, and avoids redundancy.

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

Completeness2/5

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

Given 9 input parameters, none are described in the schema, and the description only explains the two required ones implicitly. No details on optional parameters, pagination, or filtering logic. The presence of an output schema mitigates the need to describe return values, but input parameter information is critically lacking.

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

Parameters1/5

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

With 0% schema description coverage, the description bears the full burden of explaining parameters, but it only indirectly mentions `policy_uuid` and `exec_token` via the phrase 'specific policy execution token'. No details are provided about optional parameters like `sort`, `result_status`, `device_name`, `page`, `limit`, `max_output_length`, leaving the agent with no guidance on their meaning or usage.

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 starts with 'Retrieve per-device results and output for a specific policy execution token', which clearly states the action (retrieve) and resource (per-device policy run results). This distinguishes it from sibling tools like policy_runs_v2 which likely return aggregated data.

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 provides no guidance on when to use this tool versus alternative policy run tools. It does not specify prerequisites, exclusions, or context for selection, leaving the agent to infer from the 'per-device' qualifier.

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

policy_runs_by_policyPolicy Runs by PolicyA
Read-onlyIdempotent

Get policy runs grouped by policy for cross-policy comparison. Shows which policies have been running and their aggregate results.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNojson

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that results are 'aggregate,' but does not detail pagination, limits, or return structure. Some context is added but not extensive.

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 sentences, front-loaded with purpose, no fluff. Every sentence serves a clear role.

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?

No output schema exists, but the description does not detail what 'aggregate results' includes (e.g., which metrics). While simple, it lacks content for an agent to fully understand the output.

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

Parameters1/5

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

Schema description coverage is 0%, meaning the description does not explain the single parameter (output_format). With no compensation, the agent receives no extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves policy runs grouped by policy for cross-policy comparison, distinguishing it from siblings like policy_runs_for_policy. The verb 'get' and resource 'policy runs' are specific.

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 says 'for cross-policy comparison,' which gives context on when to use it. However, it does not explicitly exclude other tools like policy_runs_for_policy for single-policy queries.

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

policy_runs_for_policyPolicy Runs for PolicyA
Read-onlyIdempotent

Get execution runs for a specific policy by UUID. Optionally filter by number of days and sort order. Each run's device_outcomes are device counts per outcome, not run statuses.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
policy_uuidYes
report_daysNo
summary_onlyNo
output_formatNojson

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the tool read-only and idempotent. The description adds critical context that device_outcomes are counts per outcome, not run statuses, preventing misinterpretation. No contradictions.

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 concise sentences with no filler. Key information is front-loaded: action, resource, and a specific clarification about output data.

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

Completeness2/5

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

Despite lacking output schema, the description provides a useful clarification. However, it fails to cover most parameters and their meanings, which is necessary given the 0% schema coverage and moderate complexity (5 params).

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. It only mentions report_days and sort by implication, ignoring summary_only and output_format. Users get minimal guidance on 3 out of 5 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets execution runs for a specific policy by UUID, with optional filters. It distinguishes from siblings by specifying the focus on a single policy and clarifying the meaning of device_outcomes.

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 mentions optional filters but does not explicitly state when to use this tool over siblings like policy_runs_v2 or policy_runs_by_policy. It implies usage for a specific policy but lacks exclusion cues.

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

policy_runs_v2Policy Runs v2A
Read-onlyIdempotent

List policy runs with time-range filtering, policy name/type filters, and result status filtering. Uses the Policy History v2 API for richer data than the standard policy execution timeline. Each run's device_outcomes (pending/success/failed/not_included/remediation_not_applicable/blocked) are DEVICE COUNTS per outcome for that run, not run statuses. result_status filters with any-device-with-this-outcome semantics: a run matches when AT LEAST ONE device had that outcome — it does NOT mean every device did (live-verified 2026-06-05: result_status='failed' returns runs with 1 failed device alongside 200+ not-failed). The same run can match multiple result_status values.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sortNo
limitNo
end_timeNo
start_timeNo
policy_nameNo
policy_typeNo
policy_uuidNo
output_formatNojson
result_statusNo

TDQS

A3.8/5.0
Behavior4/5

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

The description discloses critical behavioral details: device_outcomes are device counts per outcome, not run statuses, and result_status matches any device with that outcome (single-device semantics). This adds value beyond the readOnlyHint annotation. However, it does not mention pagination behavior or total result counts.

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 a single cohesive paragraph that front-loads the main purpose and then clarifies key semantics. It is efficient but could benefit from bullet points or separate sections for clarity.

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 the 10 parameters and no output schema, the description covers core filtering but lacks details on pagination, output format, and the response structure. It explains result_status well but leaves other parameters undocumented.

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?

With 0% schema coverage, the description must compensate. It explains semantics for result_status and implies time-range and policy filtering. But it omits descriptions for policy_uuid, sort, page, limit, and output_format, leaving significant gaps despite the detailed result_status logic.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists policy runs with time-range, policy name/type, and result status filtering. It distinguishes itself from the standard policy execution timeline by referencing the Policy History v2 API for richer data, providing a specific verb and resource.

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 implies preference over the standard timeline for richer data but does not explicitly specify when to use this tool versus alternatives like policy_execution_timeline or policy_run_detail_v2. No when-not or explicit comparisons are provided.

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

prepatch_reportPrepatch ReportA
Read-onlyIdempotent

Retrieve the Automox pre-patch readiness report showing devices with pending patches before the next scheduled patch window. Per-device 'highest_severity' distinguishes 'no_known_cves' (patches carry no associated CVE — benign) from 'unknown' (severity undetermined). 'compliant' follows the platform rule: a device is non-compliant only when a policy needs remediation; pending work alone does not count against it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
group_idNo
output_formatNojson

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metadataNoPagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.

TDQS

A4/5.0
Behavior5/5

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

The description goes beyond annotations by explaining the meaning of 'highest_severity' values ('no_known_cves' vs 'unknown') and the compliance rule (non-compliant only when policy needs remediation). These are important behavioral traits not captured in 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?

Two sentences with no fluff. The first sentence establishes purpose and scope, the second adds critical output semantics. Every word 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?

The description explains output semantics well but omits any guidance on input parameters. Given the existence of an output schema and four undocumented parameters, this is a noticeable gap.

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

Parameters1/5

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

The description does not reference any of the four parameters (group_id, limit, offset, output_format). With 0% schema description coverage, the description must compensate but fails to provide guidance on how to use parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the Automox pre-patch readiness report, specifying the scope (devices with pending patches before the next scheduled patch window). This distinguishes it from sibling tools like noncompliant_report or patch_approvals_summary.

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 provides clear context for when to use this tool (pre-patch window) but does not explicitly state when not to use it or mention alternatives like compliance snapshots. The context is enough for a user familiar with the domain.

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

preview_policy_device_filtersPreview Policy Device FiltersA
Read-onlyIdempotent

Dry-run: preview which devices a policy's targeting would resolve to, before creating or updating the policy. Read-only — nothing is created or changed. server_groups is REQUIRED when device_filters is provided (the upstream preview cannot evaluate a filter-only target): pass the groups the policy will be assigned to, and the device_filters clauses ({field, op, value}) are applied within that scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
output_formatNojson
server_groupsNo
device_filtersNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description reinforces 'Read-only — nothing is created or changed' and adds critical context about the server_groups requirement when device_filters are used. 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.

Conciseness5/5

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

Two sentences, no wasted words. First sentence provides high-level purpose, second explains a key constraint. Efficient and well-structured.

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 covers core usage and constraint but does not describe return values (expected output). For a preview tool, describing the response format (e.g., list of device IDs/details) would improve completeness. Output schema is absent, so description should fill 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 coverage is 0%, so description must compensate. It explains device_filters as clauses {field, op, value} and server_groups as required when device_filters provided. However, it does not describe page, limit, or output_format. These are common but without description, the agent lacks full parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Dry-run: preview which devices a policy's targeting would resolve to, before creating or updating the policy.' This specifies the verb (preview), resource (devices for policy targeting), and context (before create/update). It distinguishes from sibling tools like apply_policy_changes or create_policy.

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 explicitly says 'server_groups is REQUIRED when device_filters is provided' and explains why. It also implies usage before creating/updating a policy. While it doesn't mention alternatives for when not to use, the constraint is clear and helpful.

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

refresh_saved_search_cacheRefresh Saved Search CacheA
Idempotent

Force a re-cache of a saved device search's results when they may be stale. Triggers server-side recomputation; returns once queued.

ParametersJSON Schema
NameRequiredDescriptionDefault
search_idYes
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

The description adds valuable behavioral context beyond annotations: 'triggers server-side recomputation; returns once queued' informs the agent that the call is asynchronous and returns immediately after queuing. Annotations already indicate idempotentHint=true and non-destructive nature; description complements this without contradiction.

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 extremely concise: two sentences front-load the main action and then add a critical behavioral note. No superfluous information.

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?

While the description covers purpose and behavior, it omits parameter details and does not mention return values (though output schema exists). For a simple tool with two parameters, the omission of parameter semantics makes it slightly incomplete.

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

Parameters2/5

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

Schema has 0% description coverage and the description provides no explanation of the two parameters ('search_id' and 'request_id'). This leaves the agent without guidance on what each parameter represents, which is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('force a re-cache'), the resource ('saved device search results'), and the condition ('when they may be stale'). It distinguishes from similar tools like 'run_saved_search' or 'get_cached_search_results' by specifying forced recomputation.

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 implies usage 'when they may be stale' but does not explicitly state when not to use or provide alternative tools. The context is clear but lacks full guidance on selection.

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

remove_user_from_accountRemove User from AccountB
DestructiveIdempotent

Remove a user from the Automox account by UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already provide destructiveHint=true and idempotentHint=true. Description adds 'remove' which aligns, but no additional behavioral details such as required permissions or impact on user's devices.

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?

Single sentence, no verbosity. Essential information front-loaded. Perfectly concise.

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?

Low complexity (2 params, 1 required) and output schema exists, but description omits return value and doesn't confirm whether removal is reversible or what happens on success.

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

Parameters2/5

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

Schema coverage is 0%. Description does not explain the optional 'request_id' parameter. Only 'user_id' is obvious from context. Agent lacks clarity on purpose of request_id.

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?

Description clearly states verb 'Remove', resource 'user from Automox account', and identifier 'by UUID'. It distinguishes from siblings like 'invite_user_to_account' and 'update_user', but could clarify if user is deleted or just disassociated.

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 tool versus alternatives like 'invite_user_to_account' or 'list_users'. Also no preconditions or effects mentioned.

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

rotate_webhook_secretRotate Webhook SecretA
Destructive

Rotate the signing secret for an Automox webhook. The old secret is immediately invalidated. Save the new secret — it is only shown once.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_uuidNo
request_idNo
webhook_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

The description provides key behavioral details beyond annotations: old secret is immediately invalidated and new secret is only shown once. This adds critical context for the agent about side effects and return value handling.

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 concise sentences, no wasted words, front-loaded with the action. 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?

Covers essential behavioral aspects for a simple mutation tool. Minor gap: no parameter explanations. But output schema exists (though not shown) and description hints at return. Adequate for the complexity.

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

Parameters2/5

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

With 0% schema description coverage, the description should explain parameters but does not. Parameters (webhook_id, org_uuid, request_id) are not mentioned, leaving the agent to infer their meaning from context.

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+resource ('Rotate the signing secret for an Automox webhook') and clearly distinguishes from sibling tools like create_webhook, update_webhook, and delete_webhook. It states the exact action and what changes.

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?

No explicit when-to-use vs alternatives is given, but the purpose is clear enough that an agent can infer when to call this tool. It does not mention when not to use it or compare to other webhook-related tools.

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

search_devicesSearch DevicesA
Read-onlyIdempotent

Search Automox devices by hostname (including custom name), IP, tag, severity of missing patches, or patch status (only 'missing' is supported). The severity filter is passed upstream to scope the result set (the requested values are echoed in metadata.filters.severity); it narrows the candidate set but does NOT guarantee every returned device currently has an outstanding patch at that severity (live, ~41% of severity=critical results report zero outstanding patches — likely already remediated or reassessed since the index was built). Per-device pending_patches is the device's total outstanding-patch count and is NOT scoped to the severity filter, so do not read it as the count matching the requested severity.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
limitNo
managedNo
group_idNo
severityNo
ip_addressNo
patch_statusNo
output_formatNojson
hostname_containsNo

TDQS

A4.2/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=true), the description frankly reveals that the severity filter does not guarantee returned devices currently have outstanding patches at that severity, with a live statistic. It also clarifies that pending_patches is total count not scoped to severity. This transparency adds significant value and does not contradict 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 four sentences, each contributing essential information. The first sentence states purpose, the latter three provide critical behavioral context. No redundant text, though it is somewhat lengthy; the details justify the length.

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 the tool has 9 parameters and no output schema, the description explains key filters but omits details on managed, group_id, limit, and output_format. It also does not describe the output structure or pagination. The behavioral warnings partially compensate, leaving some completeness 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?

The schema has 0% description coverage, so the description must compensate. It explains hostname, IP, tag, severity (with behavioral detail), and patch_status (only 'missing'). However, parameters like managed, group_id, limit, and output_format are not described, leaving gaps. The provided explanations add meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Search Automox devices' and lists specific filter criteria (hostname, IP, tag, severity, patch status). It distinguishes this tool from siblings like list_devices and advanced_device_search by detailing the supported search parameters.

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 provides explicit guidance on using the tool for searching devices with various filters and includes important caveats about severity filter behavior and pending_patches interpretation. However, it does not explicitly mention alternatives or when not to use it, though the sibling list suggests different use cases.

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

search_org_packagesSearch Org PackagesA
Read-onlyIdempotent

Search software packages across the Automox organization. Filter by managed status (include_unmanaged) or install state (awaiting: true = available but not installed, false = already installed -- per spec; note this is inverted from a naive reading of the word). awaiting is a request filter only, NOT a field in the response. Returns package name, version, is_managed, and severity. severity vocabulary is the same as list_device_packages: critical/high/medium/low/no_known_cves or JSON null observed live, with none/unknown present in the spec enum but unobserved. See metadata.field_notes.severity. The endpoint returns a bare list with no total, so returned_package_count is the count of packages on THIS page only (NOT a fleet-wide org total); when metadata.pagination.has_more is true, increment page to enumerate the rest.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo
awaitingNo
output_formatNojson
include_unmanagedNo

TDQS

A4.6/5.0
Behavior5/5

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

Discloses important behavioral details beyond annotations: inverted semantics of `awaiting`, that `returned_package_count` is per-page not fleet-wide, and severity vocabulary details including unobserved spec values. 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?

The description is information-dense but somewhat lengthy. It front-loads the main purpose and then provides necessary details. Could be slightly more concise, but every sentence adds value.

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 no output schema and 0% schema coverage, the description covers most aspects: filters, pagination, response fields. However, it does not describe the `output_format` parameter or provide a structured response schema, leaving some gaps.

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

Parameters5/5

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

With 0% schema coverage, the description fully compensates by explaining the meaning and behavior of `awaiting`, `include_unmanaged`, and pagination-related parameters. It adds significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches software packages across the Automox organization, with specific filters and return fields. This distinguishes it from sibling tools like list_device_packages and search_devices.

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?

Provides guidance on pagination and notes that `awaiting` is a request filter only. It explains severity vocabulary reference but does not explicitly state when to avoid using this tool in favor of alternatives.

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

search_policy_windowsSearch Policy WindowsA
Read-onlyIdempotent

Search and list maintenance/exclusion windows for the Automox organization. Supports filtering by group UUIDs, status (active/inactive), and recurrence type (recurring/once). The recurrences filter is case-insensitive — tokens are coerced to the spec's UPPERCASE enum (ONCE/RECURRING) before sending, since the upstream expects uppercase (per spec, not live-verified). Supports pagination via page/size.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNo
sortNo
org_uuidNo
statusesNo
directionNo
group_uuidsNo
recurrencesNo
output_formatNojson

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already provide read-only, idempotent, and non-destructive hints. The description adds valuable context about case-insensitive recurrence filtering and coercion behavior, which goes beyond annotations. However, it does not discuss potential limitations or response format.

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

Conciseness5/5

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

The description is concise (two sentences), front-loaded with the main purpose and filtering options, and includes a technical nuance in the second sentence. No extraneous information.

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 9 optional parameters and no output schema, the description covers the main functionality and a behavioral detail but misses several parameters (org_uuid, sort, direction) and does not note that all params are optional. It is adequate but not fully 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?

With 0% schema description coverage, the description must compensate. It explains group_uuids, statuses, recurrences, and pagination, but omits org_uuid, sort, and direction. It adds meaning beyond the schema for covered params but is incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches and lists maintenance/exclusion windows, specifying the resource (policy windows) and scope (Automox organization). It distinguishes from siblings like get_policy_window (single retrieval) by emphasizing listing and filtering capabilities.

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 tool versus alternatives such as get_policy_window or other search tools. The description implies usage for filtered searches but does not explicitly state context or exclusions.

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

search_worklet_catalogSearch Worklet CatalogA
Read-onlyIdempotent

Search the Automox community worklet catalog. Returns worklet names, descriptions, categories, OS compatibility, and trust/availability signals (verified boolean, access tier such as premium, license_required). Catalog items have no status field. Use to discover pre-built evaluation and remediation scripts.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
output_formatNojson

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context beyond annotations by detailing the returned signals (verified, access tier, license_required) and noting that catalog items have no status field. No contradictions.

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 two sentences long, front-loading the core action and return fields, followed by a usage phrase. Every sentence earns its place with no wasted words.

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 search tool with readOnly and idempotent annotations and no output schema, the description lists key return fields and a behavioral note (no status field). It lacks pagination details but is otherwise complete for discovering worklets.

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

Parameters2/5

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

Schema description coverage is 0% with two parameters (query, output_format). The description does not explain their meaning or usage, relying solely on the schema. It fails to compensate for the lack of schema documentation, leaving the agent without guidance on parameter values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches the Automox community worklet catalog and lists specific return fields (names, descriptions, categories, OS compatibility, trust/availability signals). The verb 'search' and resource 'community worklet catalog' are specific and distinguish it from sibling tools like search_org_packages.

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 explicitly states when to use: 'Use to discover pre-built evaluation and remediation scripts.' It provides clear context but does not mention when not to use or offer alternatives, though the purpose is well-defined.

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

splashtop_device_statusSplashtop Device StatusA
Read-onlyIdempotent

List Splashtop installation and registration status for a device. Returns installation_status, registration_status, install_time, and any install error. Per the API spec (not live-verified by this server): installation_status=true means the client install completed (install_time is set); registration_status=true means the device has registered with Splashtop (a device identifier exists). These are independent — a device can be installed but not yet registered, so check both before assuming remote control is usable.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_uuidYes
output_formatNojson

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, etc. The description adds valuable context about the independence of installation and registration status, and notes the API spec is not live-verified, which is beyond what annotations provide.

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 sentences, front-loaded with the main action, and each sentence adds value. No redundancy or fluff.

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?

While the description covers the returned fields and their interpretation, it omits parameter details and does not mention the return format (given no output schema). Adequate for a simple tool but incomplete considering zero schema coverage.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description does not explain any parameters (e.g., device_uuid required, output_format default 'json'). The agent must infer from context, which is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'Splashtop installation and registration status for a device'. It distinguishes from sibling tools like splashtop_connect or splashtop_install by focusing solely on status retrieval.

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 advises checking both statuses before assuming remote control is usable, implying a use case. However, it does not explicitly compare to alternatives like splashtop_session_status or provide 'when to use' vs 'when not to use'.

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

splashtop_force_disconnectSplashtop Force DisconnectA
DestructiveIdempotent

Force-disconnect ALL active Splashtop sessions on a device. Interrupts any in-progress operator work. Use sparingly.

ParametersJSON Schema
NameRequiredDescriptionDefault
os_familyYes
request_idNo
device_uuidYes

Output Schema

ParametersJSON 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 indicate destructiveHint=true and readOnlyHint=false. The description adds that it interrupts in-progress work, which is valuable beyond the annotations. However, it does not cover idempotency (idempotentHint=true) or potential side effects.

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 extremely concise with two sentences, front-loading the key action and warnings. No unnecessary words.

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

Completeness2/5

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

Given the destructive nature and zero parameter documentation, the description is insufficient. It does not explain return values (despite output schema existing) or provide enough context for safe use beyond 'use sparingly.'

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no information about the parameters (device_uuid, os_family, request_id). The agent cannot infer what these parameters mean or how to use them correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Force-disconnect ALL active Splashtop sessions on a device' with a specific verb and resource. It distinguishes from sibling tools like splashtop_initiate_connection or splashtop_session_status by focusing on disconnection.

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 warns to 'use sparingly' and notes it 'interrupts any in-progress operator work,' implying when to use with caution. However, it does not explicitly state when not to use or provide alternative tools for non-forced disconnection.

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

splashtop_get_attended_accessSplashtop Get Attended AccessA
Read-onlyIdempotent

Get the current attended-access requirement for a device. When requiredAttendedAccess is true, the end user must approve before a remote-control session can start.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_uuidYes
output_formatNojson

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds behavioral context by explaining that when requiredAttendedAccess is true, end-user approval is needed. This adds value beyond 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?

Two concise sentences, no wasted words. The first sentence states the action, the second explains the key behavior. Efficient and easy to parse.

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 explains the meaning of the boolean result but does not specify the full return structure (e.g., object format). Parameters are undocumented. While annotations cover safety, the overall completeness is adequate but has gaps.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description does not explain the two parameters (device_uuid and output_format). The description fails to compensate for the lack of schema documentation, leaving the agent unclear about required inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get the current attended-access requirement for a device') and distinguishes it from sibling tools like splashtop_set_attended_access by using 'get' vs 'set'. It also explains the meaning of the boolean result.

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 implicitly indicates usage for reading vs writing by using 'Get', but does not explicitly state when to use this tool over alternatives or provide exclusions. The context is clear but lacks explicit guidance.

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

splashtop_initiate_connectionSplashtop Initiate ConnectionA
Destructive

Generate a Splashtop deeplink (splashtop-sos://...) for an operator to start a remote-control session. The API does NOT start the session itself — the operator must open the returned URL in their local Splashtop RMM App, and end-user consent still applies if attended access is enabled on the device.

ParametersJSON Schema
NameRequiredDescriptionDefault
os_familyYes
request_idNo
device_uuidYes
account_typeNo
connection_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

Despite annotations marking destructiveHint=true, the description adds valuable behavioral context: the API does not start the session, the operator must manually open the returned URL, and end-user consent still applies. This goes beyond annotations and clarifies the actual side effects, making it highly transparent.

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 two sentences long, front-loaded with the core purpose, and every sentence adds critical information. No filler or repetition.

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 covers purpose, behavior, and consent requirements, but lacks parameter documentation entirely. Given the tool's complexity (5 parameters, output schema exists) and the high number of sibling tools, the missing parameter explanations leave the description incomplete for an AI agent to invoke correctly without additional schema descriptions.

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

Parameters1/5

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

Schema description coverage is 0%, but the description provides no explanation for any of the 5 parameters (3 required). Essential fields like device_uuid, os_family, and connection_type are not described, leaving the agent without guidance on how to populate these inputs correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates a Splashtop deeplink for remote-control sessions, specifies the URL scheme (splashtop-sos://), and explicitly distinguishes that the API does not start the session itself. This provides a specific verb+resource and differentiates from sibling tools that perform other actions like installation or force disconnect.

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 gives strong usage context by explaining the deeplink generation and that the operator must open the URL in the Splashtop RMM App. It also mentions end-user consent applies. However, it does not explicitly name alternative tools or provide when-not-to-use guidance, missing some direct contrast with siblings.

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

splashtop_installSplashtop InstallA
Destructive

Install the Splashtop RMM client on a device. The install runs asynchronously. Use 'request_permission' to control whether the user is prompted at install time (distinct from per-session attended access). Requires a Remote Control subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault
os_familyYes
request_idNo
device_uuidYes
account_typeNo
organization_uuidNo
request_permissionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already indicate destructiveHint: true and readOnlyHint: false. The description adds valuable behavioral context: the install runs asynchronously and the distinction between request_permission and per-session attended access. This goes beyond what annotations provide. However, it does not disclose potential side effects like system modifications or reboot 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?

Comprises two clear, front-loaded sentences with no filler. Efficiently conveys the core action and key nuances. Could be slightly improved by separating the asynchronous note into its own sentence or bullet for clarity, but overall well-structured.

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

Completeness2/5

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

Given the tool has 6 parameters (2 required), a destructive nature, and many sibling tools, the description is incomplete. It fails to explain required parameters like os_family (valid values?), device_uuid format, and how organization_uuid or account_type affect behavior. The asynchronous nature and permission control are addressed, but overall coverage is sparse for such a complex tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only explains the request_permission parameter, clarifying its role in user prompting vs. attended access. Other parameters (device_uuid, os_family, organization_uuid, account_type, request_id) are left unexplained, leaving gaps for a tool with 6 parameters.

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?

Clearly states it installs the Splashtop RMM client on a device. The verb 'Install' and resource 'Splashtop RMM client' are specific. Among sibling tools like splashtop_uninstall and splashtop_device_status, this description unambiguously identifies the installation action.

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 some implicit guidance by mentioning asynchronous execution, the request_permission parameter, and the requirement of a Remote Control subscription. However, it does not explicitly state when to use this tool versus alternatives (e.g., when not to use it, or contrasts with other Splashtop operations). The usage context is implied but not fully elaborated.

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

splashtop_session_statusSplashtop Session StatusA
Read-onlyIdempotent

List active Splashtop session capacity for a device. Returns can_start_new_session, current_sessions, and max_sessions. can_start_new_session reflects capacity only — per the spec examples it is true exactly when current_sessions < max_sessions. It is independent of attended-access consent: when attended access is enabled (see splashtop_get_attended_access) the end user must still approve before a session starts, so capacity alone is not sufficient to conclude a session can begin.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_uuidYes
account_typeNo
output_formatNojson

TDQS

A3.9/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint: true, destructiveHint: false), the description clarifies that can_start_new_session is simply a capacity indicator (current_sessions < max_sessions) and is independent of attended-access consent. This adds valuable behavioral context beyond what annotations provide.

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 a single, well-structured paragraph. It front-loads the core purpose and return fields, then adds clarifying behavioral notes. Every sentence adds value with no 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?

For a simple read-only status tool, the description covers the return fields and a key behavioral nuance (capacity vs. actual session start). Though parameters are undocumented, the tool is straightforward; the description is nearly complete for its complexity.

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

Parameters2/5

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

The input schema has 3 parameters with 0% description coverage. The tool description does not explain any parameter meanings, defaults, or acceptable values. Given the schema description coverage is low (0%), the description fails to compensate, leaving the agent to infer from parameter names and types alone.

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 explicitly states 'List active Splashtop session capacity for a device' and names the returned fields (can_start_new_session, current_sessions, max_sessions). It distinguishes this tool from siblings like splashtop_get_attended_access and splashtop_device_status by focusing on capacity limits.

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 implies usage for checking session capacity but does not explicitly say when to use versus alternatives. It provides a caveat about attended access dependency, which guides the agent that additional checks may be needed, but lacks explicit when-not or alternative tool recommendations.

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

splashtop_set_attended_accessSplashtop Set Attended AccessA
DestructiveIdempotent

Enable or disable the end-user consent requirement for Splashtop sessions on a device. Setting this to false allows unattended sessions — review your organization's policy before doing so.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idNo
device_uuidYes
required_attended_accessYes

Output Schema

ParametersJSON 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 indicate destructiveHint=true and readOnlyHint=false, aligning with the description's caution about allowing unattended sessions. The description adds context about policy review and what the change entails, beyond what annotations provide.

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 sentences with no fluff. First sentence states purpose, second provides caution. Efficient and front-loaded.

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 is simple with an output schema and annotations. The description covers the core effect and policy concern. It could mention the bulk sibling or the get sibling for completeness, but given the output schema, the agent can infer return values.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description only indirectly explains the required_attended_access parameter by mentioning end-user consent requirement. It does not explain device_uuid or request_id, so the description fails to compensate for missing schema descriptions.

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?

Description clearly states the verb (enable/disable) and the resource (end-user consent requirement for Splashtop sessions on a device). It distinguishes from sibling tools like splashtop_get_attended_access (get vs. set) and splashtop_set_bulk_attended_access (single device vs. bulk).

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 warns about reviewing organization policy before setting to false, implying when to use with caution. However, it does not explicitly state when to use this tool over alternatives (e.g., for checking current state use splashtop_get_attended_access).

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

splashtop_set_bulk_attended_accessSplashtop Set Bulk Attended AccessA
DestructiveIdempotent

Bulk-set the attended-access requirement across many devices. Setting required_attended_access=false on a list disables end-user consent on all of them at once — confirm before use.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idNo
device_uuidsYes
required_attended_accessYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Adds value beyond annotations by explaining that setting false disables end-user consent and warns of irreversible effect. Annotations already indicate destructive and idempotent nature; description complements with specific 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.

Conciseness5/5

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

Two sentences, front-loaded with purpose, followed by a warning. No wasted words.

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 output schema exists and tool is moderate complexity, description covers purpose, effect, and warning. Could mention idempotency or return values, but not essential.

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?

With 0% schema coverage, description partially compensates by explaining the meaning of device_uuids and required_attended_access. Does not cover optional request_id parameter or formatting. Adequate but not excellent.

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?

Clearly states it bulk-sets attended-access requirement across many devices. Distinguishes from singular sibling by specifying 'bulk-set'. Provides concrete example of setting false to disable consent.

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?

Implies usage for multiple devices but no explicit when-to-use or when-not. The warning 'confirm before use' provides some guidance but does not name alternatives like splashtop_set_attended_access for single device.

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

splashtop_uninstallSplashtop UninstallB
DestructiveIdempotent

Uninstall the Splashtop RMM client from a device and delete its registration + attended-access setting. Permanent.

ParametersJSON Schema
NameRequiredDescriptionDefault
os_familyYes
request_idNo
device_uuidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already indicate destructiveness and idempotence. The description adds context by specifying what is destroyed ('registration + attended-access setting') and emphasizes permanence, providing useful behavioral details beyond 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 a single sentence that is clear and to the point. It could possibly be more concise, but it is effective without unnecessary words.

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

Completeness2/5

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

While the description covers the tool's core purpose and annotations provide safety info, it lacks usage guidelines and parameter explanations. For a destructive operation, more guidance on prerequisites or effect is expected.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any of the three parameters (device_uuid, os_family, request_id). Without parameter details, the agent cannot determine how to correctly invoke the tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Uninstall' and the resource 'Splashtop RMM client', and specifies what is deleted (registration and attended-access setting). It distinguishes from siblings like splashtop_install and splashtop_get_attended_access by focusing on removal.

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 explicit guidance on when to use this tool compared to alternatives like disabling or updating. The word 'Permanent' implies irreversibility but does not provide context for selection among sibling tools (e.g., splashtop_force_disconnect).

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

test_webhookTest WebhookA
Destructive

Send a test delivery to an Automox webhook endpoint. Returns success status, HTTP status code, and response time.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_uuidNo
request_idNo
webhook_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

The description mentions it sends a test delivery (side effect), and returns success, HTTP status, and response time. This adds behavioral context beyond the annotations (destructiveHint: true). It is sufficiently transparent about what the tool does.

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 extremely concise—two sentences, no redundant information. Every word adds value, and the key action and return values are 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?

While an output schema exists (not shown), the description covers return values. However, missing parameter descriptions and lack of usage guidelines make it incomplete for a 3-parameter tool with no schema descriptions.

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

Parameters1/5

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

Schema documentation coverage is 0%, so the description must explain parameters. It does not describe webhook_id, org_uuid, or request_id at all, leaving the agent without guidance on how to use them. This is a critical gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Send a test delivery to an Automox webhook endpoint', specifying a specific action (send test) and resource (webhook). It distinguishes this from sibling tools like create_webhook, delete_webhook, etc., which have different purposes.

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 does not explicitly state when to use this tool versus alternatives, nor does it provide context like prerequisites or cases when it should not be used. The purpose is clear but no guidance on selection.

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

update_deviceUpdate DeviceA
Idempotent

Update a single device's mutable attributes: custom_name, server_group_id, exception (policy-enforcement exclusion), tags, and ip_addrs. Fills the single-device gap that batch_update_devices (tags-only, bulk) does not cover — e.g. renaming a device or moving it to a server group. Supply only the fields you want to change; at least one is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
ip_addrsNo
device_idYes
exceptionNo
request_idNo
custom_nameNo
server_group_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate the tool is not read-only (readOnlyHint: false), not destructive, and idempotent. The description adds that it updates mutable attributes but does not disclose behavior beyond that, such as what happens if the device is not found or if invalid values are provided. It is consistent with annotations but adds limited behavioral context.

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 two concise sentences. The first front-loads the action and lists the attributes. The second provides use-case context and a constraint. No unnecessary words or repetition. It is well-structured for quick parsing.

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 the tool has 7 parameters (one required), 0% schema coverage, and an output schema, the description adequately covers purpose and usage but lacks details on prerequisites (e.g., device must exist), error cases, or expected behavior for invalid inputs. It does not explain the return value, but the output schema may cover that. Overall, it is sufficient but not exhaustive.

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 input schema has 0% description coverage, so the description must compensate. It lists the modifiable parameters and provides high-level context (e.g., exception is a policy-enforcement exclusion) and examples. However, it does not explain each parameter in detail—for instance, the format of ip_addrs or valid values for server_group_id. The description adds some meaning but is not comprehensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (update) and resource (single device), lists the mutable attributes (custom_name, server_group_id, exception, tags, ip_addrs), and distinguishes itself from the sibling batch_update_devices tool by highlighting the single-device gap. It includes concrete use-case examples like renaming a device or moving it to a server group.

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 explicitly tells when to use this tool versus batch_update_devices, noting that batch only handles tags and is bulk. It also states that only fields to change should be supplied and that at least one is required. However, it does not explicitly mention situations where this tool should not be used (e.g., when updating many devices at once).

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

update_global_api_keyUpdate Global API KeyA
DestructiveIdempotent

Enable or disable a global (account-scoped) API key by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYes
is_enabledYes
request_idNo

Output Schema

ParametersJSON 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 indicate destructiveHint=true, idempotentHint=true, and readOnlyHint=false, which aligns with the description. The description adds no additional behavioral context beyond these annotations, such as permission requirements or side effects. It does not contradict 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 a single sentence of 12 words, front-loaded with the action and resource. Every word is necessary, and there is no redundancy or fluff.

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 tool's simplicity (toggle enable/disable), an output schema exists so return values need not be described. The description covers the essential purpose. It could note that only the enabled status is updated, but the title and sibling tools make this clear. Adequately complete for the task.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only implicitly explains key_id (by ID) and is_enabled (enable/disable). The optional request_id parameter is not mentioned at all. The description adds minimal value beyond what the schema implies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'enable or disable' a 'global (account-scoped) API key' identified 'by ID'. This is specific and distinguishes the tool from siblings like create_global_api_key, delete_global_api_key, and list_global_api_keys.

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 provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites, exclusions, or when not to use it. It simply states the action without contextual usage advice.

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

update_policy_windowUpdate Policy WindowA
DestructiveIdempotent

Update an existing maintenance window. Only dtstart is required; all other fields are optional for partial updates. status is lowercase active | inactive; recurrence is lowercase once | recurring on input. The 'rrule' field does NOT accept generic RFC 5545; the upstream validator enforces exactly two grammars (live-verified 2026-06-05). For recurrence=once: FREQ=DAILY;UNTIL=YYYYMMDDTHHMMSSZ (compact UNTIL, no COUNT). For recurrence=recurring: FREQ=YEARLY;BYMONTH=<1-12>;BYDAY=<+N weekday> only — no other FREQ values, no WEEKLY.

ParametersJSON Schema
NameRequiredDescriptionDefault
rruleNo
statusNo
dtstartYes
org_uuidNo
recurrenceNo
request_idNo
group_uuidsNo
window_nameNo
window_typeNo
window_uuidYes
use_local_tzNo
duration_minutesNo
window_descriptionNo

Output Schema

ParametersJSON 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 indicate readOnlyHint=false, destructiveHint=true, idempotentHint=true. The description adds behavioral details: partial update semantics, case requirements for status and recurrence, and specific rrule validation grammars. 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?

Description is concise yet detailed, front-loading the main purpose. Each sentence adds value, especially the specific rrule format constraints. Slightly lengthy but justified by complexity.

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 13 parameters, 2 required, no enums, and output schema existence, description covers critical update semantics and rrule constraints. Missing some context like need for valid window_uuid, but overall adequate for moderately complex 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?

Schema coverage is 0%, so description must compensate. It adds meaning for key parameters: dtstart (required), status (lowercase), recurrence (lowercase), rrule (specific grammars). However, it does not describe other parameters like window_uuid, org_uuid, etc., which are self-explanatory but still needed. Baseline 3 is 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 clearly states 'Update an existing maintenance window', specifying the verb 'update' and the resource 'maintenance window'. It also distinguishes from sibling tools like create_policy_window and delete_policy_window by indicating it updates an existing window and mentions partial updates.

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 notes that only dtstart is required and other fields are optional for partial updates, implying usage context. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide when-not-to-use guidance or prerequisites.

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

update_server_groupUpdate Server GroupB
DestructiveIdempotent

Update an existing Automox server group. refresh_interval is the agent check-in/scan cadence in minutes (live-verified; spec range 240-1440).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
notesNo
group_idYes
policiesNo
ui_colorNo
request_idNo
refresh_intervalYesAgent check-in/scan cadence in minutes (live-verified; spec range 240-1440)
parent_server_group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true, so the description is not required to cover that. It adds context about refresh_interval (live-verified, range 240-1440), but does not disclose other behavioral aspects like side effects or permissions.

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 exceptionally concise with two sentences. The first sentence states the core purpose, and the second adds a critical parameter detail. No wasted words.

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

Completeness2/5

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

While the output schema exists, the description is incomplete given the tool's complexity (8 parameters, 4 required). It only covers refresh_interval, leaving agents uninformed about other required fields like group_id and name.

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

Parameters2/5

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

Schema description coverage is only 13%, leaving most parameters undocumented. The description only adds meaning for refresh_interval, repeating the schema info. It does not explain group_id, name, parent_server_group_id, ui_color, notes, policies, or request_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'existing Automox server group', distinguishing it from sibling tools like create_server_group and delete_server_group. The additional detail about refresh_interval further clarifies the tool's purpose.

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 provides no guidance on when to use this tool versus alternatives such as create_server_group or other mutation tools. It fails to mention prerequisites or when not to use it.

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

update_userUpdate UserA
DestructiveIdempotent

Update a user's profile fields (firstname, lastname, email, tfa_type) by user ID. Passwords cannot be set through this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
user_idYes
lastnameNo
tfa_typeNo
firstnameNo
request_idNo

Output Schema

ParametersJSON 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?

The description adds value beyond annotations by specifying which fields are updatable and the limitation on passwords. Annotations indicate destructiveHint=true (modification) and idempotentHint=true, but the description provides concrete behavioral constraints. It does not address openWorldHint side effects, but the disclosed constraints are useful for an agent.

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 sentences, no redundancy. The first sentence communicates the core purpose and scope, the second adds a critical limitation. Every word 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?

The description covers core functionality and a key limitation, but does not explain update semantics (e.g., whether omitting a field leaves it unchanged or sets it to null), possible errors, or side effects. Given the presence of an output schema and 6 parameters, additional context on behavior would improve 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 0%, so the description must compensate. It lists four optional fields (firstname, lastname, email, tfa_type) but does not explain their semantics or validation. It omits explanation for user_id and request_id. The fields are self-explanatory, but the description adds minimal semantic value beyond names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Update), the resource (user's profile fields), and specifies which fields (firstname, lastname, email, tfa_type). It also explicitly excludes password setting, which distinguishes it from potential related tools. The title 'Update User' aligns, and among many sibling update tools, this one is specific to user profile updates.

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 identifies the required identifier (user_id) and notes that passwords cannot be set, but does not explicitly state when to use this tool versus alternatives. It provides clear context for updating profile fields, but lacks explicit when-not-to-use scenarios or mention of alternative tools for password changes.

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

update_user_api_keyUpdate User API KeyB
DestructiveIdempotent

Enable or disable a user API key by user ID and key ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYes
user_idYes
is_enabledYes
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate destructive (destructiveHint=true) and idempotent (idempotentHint=true). Description confirms action but adds no new behavioral insights. No contradiction.

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?

Single sentence, front-loaded with essential info. No verbose or irrelevant content.

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

Completeness2/5

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

Minimal for a mutation tool with 4 parameters and output schema. Lacks return value description, prerequisites, or side effects. Underwhelming given destructiveHint=true.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. Only mentions 'user ID and key ID' and 'enable or disable' (mapping to is_enabled). No explanation of request_id or parameter roles/formats.

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?

Clearly states the verb 'Enable or disable' and the resource 'user API key', with identification via 'user ID and key ID'. Differentiates from siblings like create, delete, get, list.

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 tool versus alternatives (e.g., create_user_api_key or delete_user_api_key). Missing context for enabling/disabling vs other operations.

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

update_webhookUpdate WebhookA
DestructiveIdempotent

Update an existing Automox webhook. Only provided fields are changed (partial update). Can update name, URL, enabled status, or event types.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
nameNo
enabledNo
org_uuidNo
request_idNo
webhook_idYes
event_typesNo

Output Schema

ParametersJSON 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?

Adds detail beyond annotations by confirming partial update and listing modifiable fields. No contradiction with annotations (destructiveHint, idempotentHint).

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 efficient sentences, front-loaded with action and then specifics, no unnecessary words.

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 moderate complexity, annotations, and presence of output schema, the description captures core partial update behavior but could explain optional org_uuid and request_id usage.

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?

Description covers 4 of 7 parameters (name, url, enabled, event_types) despite 0% schema coverage, adding meaningful context for those fields, but omits webhook_id, org_uuid, and request_id.

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?

Clearly states action 'update' on resource 'existing Automox webhook', lists updatable fields, and distinguishes from sibling tools like create_webhook or delete_webhook.

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?

Specifies partial update behavior ('only provided fields are changed'), providing context for use, but does not explicitly mention prerequisites or alternatives.

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

upload_action_setUpload Action SetA
Destructive

Upload a CSV-based vulnerability remediation action set. Provide the CSV as text in csv_content; source selects the format (generic | qualys | tenable | crowd-strike | rapid7). Call get_upload_formats first to see the required columns per source. The filename becomes the action set's display name. Returns the created action set (status is usually 'building' — processing is async).

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNogeneric
filenameNoaction-set.csv
request_idNo
csv_contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description mentions 'Returns the created action set (status is usually 'building' — processing is async)', disclosing that processing is asynchronous. This adds context beyond annotations (destructiveHint=true, readOnlyHint=false). 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.

Conciseness5/5

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

The description is only three sentences, front-loading the purpose, then covering parameters and return behavior. Every sentence is necessary and concise, with no redundancy.

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 tool's complexity (upload with format selection, async processing), the description provides all needed context: prerequisite, parameter meanings, async behavior. An output schema exists, so return details are covered. It is complete for agent use.

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?

Despite 0% schema description coverage, the description explains that csv_content is the CSV text, source selects format (listing examples), and filename becomes display name. It does not explain request_id, but the three key parameters are well-described, adding value beyond the schema.

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 starts with 'Upload a CSV-based vulnerability remediation action set', which clearly states the action (upload), resource (action set), and input format (CSV). The sibling tools include get_action_set_detail, delete_action_set, etc., making this tool distinct as the creation/upload tool.

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 advises to 'Call get_upload_formats first to see the required columns per source', providing a clear prerequisite. It explains the purpose of each parameter (csv_content, source, filename). Though it does not explicitly state when not to use, the guidance is sufficient for an AI agent to use it correctly.

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. Dates show when Glama detected each change.

  1. 7 tool updatesv2.2.9
    • Removedadvanced_device_search
    • Removedaudit_trail_user_activity
    • Removeddevices_needing_attention
    • Removedexecute_device_command
    • Removedget_device_inventory_categories
    • Removedlist_devices
    • Removedlist_searches_for_device
  2. 1 tool updatev2.2.2
    • Changeddiscover_capabilities1 field changed
      • addedInput schema / properties / list_all_tools
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
  3. 70 tool updatesv2.2.0
    • Changedadvanced_device_search1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedapply_policy_changes3 fields changed
      • addedOutput schema / description
        Added value: +"Structured output of the ``apply_policy_changes`` tool."
      • addedOutput schema / properties
        Added value: +{
        +  "data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "properties": {
        +          "operations": {
        +            "anyOf": [
        +              {
        +                "items": {
        +                  "additionalProperties": true,
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Per-operation result; each carries action, policy fields, and request body",
        +            "title": "Operations"
        +          },
        +          "preview": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "True when no write was performed (dry-run review)",
        +            "title": "Preview"
        +          }
        +        },
        +        "title": "PolicyChangeData",
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "metadata": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null,
        +    "description": "Pagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.",
        +    "title": "Metadata"
        +  }
        +}
      • addedOutput schema / title
        Added value: +"PolicyChangeResult"
    • Changedaudit_events_ocsf1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedaudit_trail_user_activity1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedcreate_server_group1 field changed
      • addedInput schema / properties / refresh_interval / description
        Added value: +"Agent check-in/scan cadence in minutes (live-verified; spec range 240-1440)"
    • Changeddevice_search_typeahead1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changeddevices_needing_attention1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_account1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_account_user1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_action_set_detail1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_action_set_issues1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_action_set_solutions3 fields changed
      • addedOutput schema / description
        Added value: +"Structured output of the ``get_action_set_solutions`` tool."
      • addedOutput schema / properties
        Added value: +{
        +  "data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "properties": {
        +          "action_set_id": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Action Set Id"
        +          },
        +          "solutions": {
        +            "anyOf": [
        +              {
        +                "items": {
        +                  "additionalProperties": true,
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Remediation solutions (verbatim): each has vulnerabilities and target devices",
        +            "title": "Solutions"
        +          },
        +          "total_solutions": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Total Solutions"
        +          }
        +        },
        +        "title": "ActionSetSolutionsData",
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "metadata": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null,
        +    "description": "Pagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.",
        +    "title": "Metadata"
        +  }
        +}
      • addedOutput schema / title
        Added value: +"ActionSetSolutionsResult"
    • Changedget_cached_search_results1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_compliance_snapshot3 fields changed
      • addedOutput schema / description
        Added value: +"Structured output of ``get_compliance_snapshot``."
      • addedOutput schema / properties
        Added value: +{
        +  "data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "properties": {
        +          "compliance_overview": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "compliance_rate_percent": {
        +                    "anyOf": [
        +                      {
        +                        "type": "number"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Compliant share of the fleet, 0-100",
        +                    "title": "Compliance Rate Percent"
        +                  },
        +                  "compliant_devices": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Devices in a compliant state",
        +                    "title": "Compliant Devices"
        +                  },
        +                  "noncompliant_devices": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Non-compliant devices",
        +                    "title": "Noncompliant Devices"
        +                  },
        +                  "total_devices": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Managed devices considered",
        +                    "title": "Total Devices"
        +                  }
        +                },
        +                "title": "ComplianceOverview",
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "device_health": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "check_in_recency": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": true,
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Device count by check-in recency bucket",
        +                    "title": "Check In Recency"
        +                  },
        +                  "stale_devices": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": true,
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Devices that have not checked in recently (capped)",
        +                    "title": "Stale Devices"
        +                  },
        +                  "status_breakdown": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": true,
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Device count by policy/check-in status",
        +                    "title": "Status Breakdown"
        +                  }
        +                },
        +                "title": "DeviceHealthSection",
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "noncompliant_report": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "devices": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": true,
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Non-compliant device records (capped at detail_limit)",
        +                    "title": "Devices"
        +                  },
        +                  "summary": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": true,
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Aggregate counts",
        +                    "title": "Summary"
        +                  }
        +                },
        +                "title": "NoncompliantReportSection",
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "policy_summary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "by_status": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": {
        +                          "type": "integer"
        +                        },
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Policy count by status",
        +                    "title": "By Status"
        +                  },
        +                  "by_type": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": {
        +                          "type": "integer"
        +                        },
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Policy count by type",
        +                    "title": "By Type"
        +                  },
        +                  "total_policies": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Active policies considered",
        +                    "title": "Total Policies"
        +                  }
        +                },
        +                "title": "PolicySummarySection",
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "title": "ComplianceSnapshotData",
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "metadata": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null,
        +    "description": "Pagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.",
        +    "title": "Metadata"
        +  }
        +}
      • addedOutput schema / title
        Added value: +"ComplianceSnapshotResult"
    • Changedget_data_extract3 fields changed
      • addedInput schema / properties / extract_id / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / extract_id / type
        Removed value: -"string"
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_device_assignments1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_device_by_uuid1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_device_full_profile3 fields changed
      • addedOutput schema / description
        Added value: +"Structured output of ``get_device_full_profile``."
      • addedOutput schema / properties
        Added value: +{
        +  "data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "properties": {
        +          "device": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Core device record",
        +            "title": "Device"
        +          },
        +          "device_facts": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Device Facts"
        +          },
        +          "inventory": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "categories": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": true,
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Summarized inventory categories (counts + scalar key-values)",
        +                    "title": "Categories"
        +                  },
        +                  "note": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "title": "Note"
        +                  },
        +                  "total_categories": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "title": "Total Categories"
        +                  },
        +                  "total_items": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "title": "Total Items"
        +                  }
        +                },
        +                "title": "InventorySection",
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "packages": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "note": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "title": "Note"
        +                  },
        +                  "packages": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": true,
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "title": "Packages"
        +                  },
        +                  "returned": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Packages included in this response",
        +                    "title": "Returned"
        +                  },
        +                  "total": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Total packages on the device",
        +                    "title": "Total"
        +                  },
        +                  "truncated": {
        +                    "anyOf": [
        +                      {
        +                        "type": "boolean"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "title": "Truncated"
        +                  }
        +                },
        +                "title": "PackagesSection",
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "pending_commands": {
        +            "anyOf": [
        +              {
        +                "items": {
        +                  "additionalProperties": true,
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Pending Commands"
        +          },
        +          "policy_assignments": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Policy Assignments"
        +          }
        +        },
        +        "title": "DeviceFullProfileData",
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "metadata": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null,
        +    "description": "Pagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.",
        +    "title": "Metadata"
        +  }
        +}
      • addedOutput schema / title
        Added value: +"DeviceFullProfileResult"
    • Changedget_device_metadata_fields1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_patch_tuesday_readiness3 fields changed
      • addedOutput schema / description
        Added value: +"Structured output of ``get_patch_tuesday_readiness``."
      • addedOutput schema / properties
        Added value: +{
        +  "data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "properties": {
        +          "patch_approvals": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "approvals": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": true,
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Approval records (capped at detail_limit)",
        +                    "title": "Approvals"
        +                  },
        +                  "pending_count": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Approvals awaiting a manual decision (manual_approval is null)",
        +                    "title": "Pending Count"
        +                  }
        +                },
        +                "title": "PatchApprovalsSection",
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "patch_policy_schedules": {
        +            "anyOf": [
        +              {
        +                "items": {
        +                  "additionalProperties": true,
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Patch-policy schedule entries (capped at detail_limit)",
        +            "title": "Patch Policy Schedules"
        +          },
        +          "prepatch_report": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "devices": {
        +                    "anyOf": [
        +                      {
        +                        "items": {
        +                          "additionalProperties": true,
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Per-device prepatch records (capped at detail_limit)",
        +                    "title": "Devices"
        +                  },
        +                  "summary": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": true,
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Aggregate counts",
        +                    "title": "Summary"
        +                  },
        +                  "total_devices_needing_patches": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "description": "Devices with one or more pending patches",
        +                    "title": "Total Devices Needing Patches"
        +                  }
        +                },
        +                "title": "PrepatchReportSection",
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "readiness_summary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "active_patch_policies": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "title": "Active Patch Policies"
        +                  },
        +                  "devices_needing_patches": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "title": "Devices Needing Patches"
        +                  },
        +                  "pending_approvals": {
        +                    "anyOf": [
        +                      {
        +                        "type": "integer"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ],
        +                    "default": null,
        +                    "title": "Pending Approvals"
        +                  }
        +                },
        +                "title": "ReadinessSummary",
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "title": "PatchTuesdayReadinessData",
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "metadata": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null,
        +    "description": "Pagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.",
        +    "title": "Metadata"
        +  }
        +}
      • addedOutput schema / title
        Added value: +"PatchTuesdayReadinessResult"
    • Changedget_saved_search1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_saved_search_results1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_search_scopes1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_searchable_fields1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_upload_formats1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_user1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_user_api_key1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_worklet_detail1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedget_zone1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_account_rbac_roles1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_data_extracts1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_device_packages1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_devices1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_devices_for_policies1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_events1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_global_api_keys1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_org_api_keys1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_organizations1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_remediation_action_sets1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_saved_searches1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_searches_for_device1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_server_groups1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_user_api_keys1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_users3 fields changed
      • addedOutput schema / description
        Added value: +"Structured output of the ``list_users`` tool."
      • addedOutput schema / properties
        Added value: +{
        +  "data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "properties": {
        +          "total_users": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Total Users"
        +          },
        +          "users": {
        +            "anyOf": [
        +              {
        +                "items": {
        +                  "additionalProperties": true,
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Account users (lean projection): id, name, email, RBAC roles, 2FA type",
        +            "title": "Users"
        +          }
        +        },
        +        "title": "UsersListData",
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "metadata": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null,
        +    "description": "Pagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.",
        +    "title": "Metadata"
        +  }
        +}
      • addedOutput schema / title
        Added value: +"UsersListResult"
    • Changedlist_webhook_deliveries1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_webhooks1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_zone_users1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_zones1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedlist_zones_for_user1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changednoncompliant_report3 fields changed
      • addedOutput schema / description
        Added value: +"Structured output of the ``noncompliant_report`` tool."
      • addedOutput schema / properties
        Added value: +{
        +  "data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "properties": {
        +          "devices": {
        +            "anyOf": [
        +              {
        +                "items": {
        +                  "additionalProperties": true,
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Per-device records, each with a failing_policies list (id/name/type/severity)",
        +            "title": "Devices"
        +          },
        +          "summary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Upstream report summary",
        +            "title": "Summary"
        +          },
        +          "total_devices": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Non-compliant devices",
        +            "title": "Total Devices"
        +          }
        +        },
        +        "title": "NoncompliantReportData",
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "metadata": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null,
        +    "description": "Pagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.",
        +    "title": "Metadata"
        +  }
        +}
      • addedOutput schema / title
        Added value: +"NoncompliantReportResult"
    • Changedpatch_approvals_summary3 fields changed
      • addedOutput schema / description
        Added value: +"Structured output of the ``patch_approvals_summary`` tool."
      • addedOutput schema / properties
        Added value: +{
        +  "data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "properties": {
        +          "approvals": {
        +            "anyOf": [
        +              {
        +                "items": {
        +                  "additionalProperties": true,
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Approval records; manual_approval null=awaiting/true=approved/false=rejected",
        +            "title": "Approvals"
        +          },
        +          "severity_breakdown": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Approval count by bucketed CVE severity",
        +            "title": "Severity Breakdown"
        +          },
        +          "status_breakdown": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Approval count by status",
        +            "title": "Status Breakdown"
        +          },
        +          "total_approvals_considered": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Total Approvals Considered"
        +          }
        +        },
        +        "title": "PatchApprovalsSummaryData",
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "metadata": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null,
        +    "description": "Pagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.",
        +    "title": "Metadata"
        +  }
        +}
      • addedOutput schema / title
        Added value: +"PatchApprovalsSummaryResult"
    • Changedpolicy_catalog1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedpolicy_execution_counts1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedpolicy_history_detail1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedpolicy_run_count1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedpolicy_run_detail_v21 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedpolicy_runs_by_policy1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedpolicy_runs_for_policy1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedpolicy_runs_v21 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedprepatch_report3 fields changed
      • addedOutput schema / description
        Added value: +"Structured output of the ``prepatch_report`` tool."
      • addedOutput schema / properties
        Added value: +{
        +  "data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "properties": {
        +          "api_summary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Raw upstream prepatch summary, passed through",
        +            "title": "Api Summary"
        +          },
        +          "devices": {
        +            "anyOf": [
        +              {
        +                "items": {
        +                  "additionalProperties": true,
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Per-device prepatch records",
        +            "title": "Devices"
        +          },
        +          "summary": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Per-severity device counts recomputed from highest_severity",
        +            "title": "Summary"
        +          },
        +          "total_devices": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Devices with pending patches",
        +            "title": "Total Devices"
        +          },
        +          "total_pending_patches": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Upstream prepatch 'total' (pending-patch count, not a device count)",
        +            "title": "Total Pending Patches"
        +          }
        +        },
        +        "title": "PrepatchReportData",
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "metadata": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null,
        +    "description": "Pagination, errors, per-section summaries, token-budget warnings, and correlation metadata. Shape varies per call.",
        +    "title": "Metadata"
        +  }
        +}
      • addedOutput schema / title
        Added value: +"PrepatchReportResult"
    • Changedpreview_policy_device_filters1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedrun_saved_search1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedsearch_devices1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedsearch_org_packages1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedsearch_policy_windows1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedsearch_worklet_catalog1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedsplashtop_device_status1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedsplashtop_get_attended_access1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedsplashtop_session_status1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}New value: +null
    • Changedupdate_server_group1 field changed
      • addedInput schema / properties / refresh_interval / description
        Added value: +"Agent check-in/scan cadence in minutes (live-verified; spec range 240-1440)"
  4. 129 tool updatesv2.0.1
    • First observedadvanced_device_search
    • First observedapply_policy_changes
    • First observedassign_policies_to_saved_search
    • First observedaudit_events_ocsf
    • First observedaudit_trail_user_activity
    • First observedbatch_update_devices
    • First observedcheck_group_exclusion_status
    • First observedcheck_window_active
    • First observedclone_policy
    • First observedcreate_data_extract
    • First observedcreate_global_api_key
    • First observedcreate_policy_window
    • First observedcreate_saved_search
    • First observedcreate_server_group
    • First observedcreate_user_api_key
    • First observedcreate_webhook
    • First observedcreate_zone
    • First observeddecide_patch_approval
    • First observeddelete_action_set
    • First observeddelete_action_sets_bulk
    • First observeddelete_global_api_key
    • First observeddelete_policy
    • First observeddelete_policy_window
    • First observeddelete_saved_search
    • First observeddelete_server_group
    • First observeddelete_user_api_key
    • First observeddelete_webhook
    • First observeddevice_detail
    • First observeddevice_health_metrics
    • First observeddevice_search_typeahead
    • First observeddevices_needing_attention
    • First observeddiscover_capabilities
    • First observedexecute_device_command
    • First observedexecute_policy_now
    • First observedget_account
    • First observedget_account_user
    • First observedget_action_set_detail
    • First observedget_action_set_issues
    • First observedget_action_set_solutions
    • First observedget_cached_search_results
    • First observedget_compliance_snapshot
    • First observedget_data_extract
    • First observedget_device_assignments
    • First observedget_device_by_uuid
    • First observedget_device_full_profile
    • First observedget_device_inventory
    • First observedget_device_inventory_categories
    • First observedget_device_metadata_fields
    • First observedget_device_scheduled_windows
    • First observedget_group_scheduled_windows
    • First observedget_patch_tuesday_readiness
    • First observedget_policy_window
    • First observedget_saved_search
    • First observedget_saved_search_results
    • First observedget_search_scopes
    • First observedget_searchable_fields
    • First observedget_server_group
    • First observedget_upload_formats
    • First observedget_user
    • First observedget_user_api_key
    • First observedget_webhook
    • First observedget_worklet_detail
    • First observedget_zone
    • First observedinvite_user_to_account
    • First observedlist_account_rbac_roles
    • First observedlist_data_extracts
    • First observedlist_device_packages
    • First observedlist_devices
    • First observedlist_devices_for_policies
    • First observedlist_events
    • First observedlist_global_api_keys
    • First observedlist_org_api_keys
    • First observedlist_organizations
    • First observedlist_remediation_action_sets
    • First observedlist_saved_searches
    • First observedlist_searches_for_device
    • First observedlist_server_groups
    • First observedlist_user_api_keys
    • First observedlist_users
    • First observedlist_webhook_deliveries
    • First observedlist_webhook_event_types
    • First observedlist_webhooks
    • First observedlist_zone_users
    • First observedlist_zones
    • First observedlist_zones_for_user
    • First observednoncompliant_report
    • First observedpatch_approvals_summary
    • First observedpolicy_catalog
    • First observedpolicy_compliance_stats
    • First observedpolicy_detail
    • First observedpolicy_execution_counts
    • First observedpolicy_execution_timeline
    • First observedpolicy_health_overview
    • First observedpolicy_history_detail
    • First observedpolicy_run_count
    • First observedpolicy_run_detail_v2
    • First observedpolicy_run_results
    • First observedpolicy_runs_by_policy
    • First observedpolicy_runs_for_policy
    • First observedpolicy_runs_v2
    • First observedprepatch_report
    • First observedpreview_policy_device_filters
    • First observedrefresh_saved_search_cache
    • First observedremove_user_from_account
    • First observedrotate_webhook_secret
    • First observedrun_saved_search
    • First observedsearch_devices
    • First observedsearch_org_packages
    • First observedsearch_policy_windows
    • First observedsearch_worklet_catalog
    • First observedsplashtop_device_status
    • First observedsplashtop_force_disconnect
    • First observedsplashtop_get_attended_access
    • First observedsplashtop_initiate_connection
    • First observedsplashtop_install
    • First observedsplashtop_session_status
    • First observedsplashtop_set_attended_access
    • First observedsplashtop_set_bulk_attended_access
    • First observedsplashtop_uninstall
    • First observedtest_webhook
    • First observedupdate_device
    • First observedupdate_global_api_key
    • First observedupdate_policy_window
    • First observedupdate_saved_search
    • First observedupdate_server_group
    • First observedupdate_user
    • First observedupdate_user_api_key
    • First observedupdate_webhook
    • First observedupload_action_set

TDQS

B3.1/5.0
Disambiguation3/5

With 129 tools, there is significant overlap in functionality. For example, multiple device search tools (advanced_device_search, search_devices, get_saved_search_results) exist with similar purposes. However, the detailed descriptions help distinguish them, but the sheer volume creates ambiguity.

Naming Consistency4/5

Most tools follow a verb_noun pattern (create_, delete_, list_, etc.), but there are exceptions like 'devices_needing_attention' and 'noncompliant_report' which are noun phrases. Overall consistency is high with minor deviations.

Tool Count2/5

129 tools is excessive for any server. While the domain is broad, this number overwhelms agents and makes tool selection difficult. A more curated set (e.g., 20-40) would be more appropriate.

Completeness5/5

The tool set is extremely comprehensive, covering all major aspects of the Automox platform: devices, groups, policies, windows, users, webhooks, Splashtop, action sets, and more. It provides CRUD operations and specialized reports, leaving no obvious gaps.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AutomoxCommunity/automox-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server